MachineSignals
- For
- Industrial integrators and B2B SaaS clients.
- Built
- The platform runs live; 3,000+ commits in the cloud repository.
- Next
- Integrator and client deployments.
- Last activity
- Sep 2026
MachineSignals started as ICS, an internal Industrial Control Systems project, before the rebrand. The hardware is real: Arduino Uno sensor nodes talk over an nRF24L01 mesh (RF24Network/RF24Mesh), each carrying a DS2401 chip for a hardware-unique ID, reading a DHT11 for temperature and humidity, up to three analog pressure sensors, and an interrupt-driven optical counter for production pulses. An ESP32 gateway (TinyGSM plus PubSubClient) bridges the mesh to MQTT, publishing to the same v1/telemetry topics the backend’s hardware listener subscribes to.
Behind the gateway, two NestJS services share one MySQL database and one Mosquitto broker: an HTTP API and a worker that consumes the MQTT stream. A third service, dedicated to time-series data, keeps its own in-memory buckets and exposes them to the Vue/Vuetify dashboard over a WebSocket, so sensor charts update live without polling.
The dashboard’s headline number is OEE: Availability times Efficiency times Quality, computed straight from the raw optical, temperature, humidity, pressure, and current sensor stream, with no synthetic scoring behind it.
Standing the stack up surfaced two real bugs, not staged ones. A gate-registration race let two nodes claiming the same serial number collide. On any node with more than one optical sensor, the OEE calculation read the GUID from the first sensor in the list instead of the sensor actually being measured: one node with five optical sensors reported 19,102% efficiency before the fix. Both are patched and running on the stand today.
OEE tells you a machine went down after the fact. We’re building toward catching it before: a maintenance-log table now records every planned and unplanned service event per node, the labeled data an anomaly-detection model needs and the one thing an IIoT platform can’t retrofit later. Vibration sensing is next.
Engineering at a glance
- Stage: pilot. The platform runs live at machinesignals.com. The first test object, in June 2020, was a single sewing machine.
- Seven years of history: ICS started in July 2019. The main cloud repository holds 3,032 commits through September 2026; the web dashboard holds 453.
- Effort: about 714 engineering hours from March 2020 to November 2021, seven engineers.
- Services: one NestJS codebase runs as the HTTP API and as the MQTT worker, on MySQL. A separate time-series service and a notifier run beside it, all in multi-stage Docker images.
- Interfaces: Swagger API docs and a status-monitor endpoint in the backend; a socket.io WebSocket feeds Vue, Vuetify and ApexCharts for live charts.
- Test tooling:
ics-virtual-nodes, an MQTT node simulator, exercises the pipeline without hardware. - 2021 research: Modbus integration and a fit check against ThingsBoard.
Need a team that ships hardware, firmware and cloud like this? Talk to us.