MachineState
Know when your machines stop. Without wiring a thing.
Clip it onto the stack light, stick the controller to the machine with its magnets, plug it into USB. It texts you when a machine has been idle for 20 minutes and sends every machine’s run hours at 6 pm.
Target $150 per machine + $19 a month · not for sale yet


Installed on a machine: a clip on each tier, the controller on the side panel. Green = running.

Lamp clip close-up: the sensor sits in a black hood pressed against the lens; a silicone strap holds it.

Exploded: clips off the tower, controller lid off the magnet back cover.

What ships for one machine: controller, back cover with magnets, three clips, straps, cable and a UL-listed USB adapter.
How it works
Read the light, decide on the device, text a person
- 01
Read
Light sensors in black hoods read every lamp 50 times a second. No wiring into the machine.
- 02
Decide
The controller learns each lamp’s on and off level and decides on, off or flashing every second.
- 03
Send
It sends the lamp states over Wi-Fi (or our 4G router) with TLS: on every change and every 30 s.
- 04
Tell
Our server applies your shift hours: idle text after 20 min, fault text after 5 min of red, 6 pm report.
Real CAD
Turn it, explode it, change the lamp
The clips and controller are the exact printable parts from our code-first CAD, on a 60 mm three-tier tower.
Loading the CAD…
Real CAD · drag to rotate · scroll to zoomReal CAD · swipe sideways
MachineState reports running. Run time counts toward today’s report.
What it reads
Stack-light towers
PilotPatlite, Werma, Banner, Schneider, Eaton/Edwards and generic towers of 40, 50, 60 and 70 mm. One clip per tier.
Haas pendant beacon
Pilot, calibratingHaas mills and lathes use one beacon: solid green = running, flashing green = paused, flashing red = alarm. A colour-sensor cap reads it.
Manual mills and lathes
PlannedNo light at all: a small vibration sensor held on the spindle head by a magnet shows when it is cutting.
The colour meaning is set per machine: some shops light amber while a cycle runs.
Text message · MachineState
Haas VF-2 has been idle for 20 min.
Mazak QT-250: red alarm light for 5 min.
Haas VF-2 is running again after 34 min.
Shop A today: 41h 30m machine run time.
Haas VF-2: ran 5h 10m (55%), idle 3h 50m, longest stop 72 min at 10:05 AM
Mazak QT-250: ran 7h 40m (82%), idle 1h 20m
Reply STOP to opt out.
Software
A text, not another dashboard
For the trial there is no app to learn. The rules run on our server and are covered by automated tests.
- Shift-aware. Alerts only inside your shift hours; overnight shifts work.
- One text per stop. Idle after 20 min, red alarm after 5 min, sensor offline after 10 min, and a “running again” note only if we alerted.
- 6 pm report. Run hours, idle hours, utilisation and the longest stop per machine, worst first.
- Per machine. Thresholds, who gets the text, and the colour meaning (a Haas preset included).
- Private by design. Each device has its own login and can publish only its own data; everyone who gets texts opts in, and STOP works.
Hardware
Pilot parts and where to buy
One machine node, from retail stores. Prices checked 23 Oct 2026, before shipping and tax. About $49 per machine at retail; the production board is planned at about half that.
| Part | Qty | Price | Buy from |
|---|---|---|---|
| M5Stack AtomS3 Lite (ESP32-S3) controller | 1 | $8.00 | DigiKey |
| Adafruit ALS-PT19 light sensor (#2748) | 4 | $2.25 | Adafruit |
| Silicone ribbon cable, 1 m (#3892) | 4 | $1.95 | Adafruit |
| Female/female jumpers (#1950) | 1 | $1.95 | Adafruit |
| Rare-earth magnets (#9) | 2 | $2.25 | Adafruit |
| UL-listed 5 V 1 A USB power supply (#501) | 1 | $5.95 | Adafruit |
| USB-A to USB-C cable, 1 m (#4474) | 1 | $4.95 | Adafruit |
| USB extension, 3 m (#993) | 1 | $6.95 | Adafruit |
| Black PETG or ASA filament (prints all clips and housings) | shared | $24.29 / kg | Printed Solid |
| ADXL345 accelerometer unit (manual machines) | option | $3.95 | M5Stack |
| GL.iNet Puli 4G router (if shop Wi-Fi is weak) | per shop | $129.00 | GL.iNet |
Downloads
Print it, flash it, run it
Black ASA (or PETG), 0.2 mm layers, 4 walls, no supports. Clips print flat with the pocket up; the shell prints front face down.
- Lamp clip, 40 mm towerlamp-clip-d40.stl
- Lamp clip, 50 mm towerlamp-clip-d50.stl
- Lamp clip, 60 mm towerlamp-clip-d60.stl
- Lamp clip, 70 mm towerlamp-clip-d70.stl
- Haas beacon cap, 36 mmbeacon-cap-d36.stl
- Haas beacon cap, 42 mmbeacon-cap-d42.stl
- Haas beacon cap, 48 mmbeacon-cap-d48.stl
- Controller shellnode-shell.stl
- Controller back cover (magnets)node-back.stl
- Pilot firmware 0.1.0machinestate-firmware-0.1.0.zipPlatformIO, AtomS3 Lite · not yet compiled
- Alert server 0.1.0machinestate-server-0.1.0.zipNode 20+, Mosquitto TLS config · tests pass
Specifications
Pilot design, rev A
| Sensing | Up to 3 tower lamps + room-light reference, or one RGBW beacon sensor; 50 Hz; steady vs flashing |
|---|---|
| Decisions | On the device, every second; per-lamp learned thresholds with hysteresis |
| Alerts | SMS or WhatsApp: idle after 20 min, red alarm after 5 min, sensor offline after 10 min (all adjustable, shift hours only) |
| Report | Every evening per machine: run hours, idle hours, utilisation, longest stop |
| Connection | Wi-Fi 2.4 GHz, outbound TLS only; or our 4G router so nothing touches your network |
| Power | USB 5 V from a UL-listed adapter; about 0.5 W |
| Install | Strap-on clips, magnet-mounted controller, no tools, no connection to the machine control |
| Controller size | 32 × 32 × 22 mm (pilot) |
| Clips | Black ASA or PETG; 120° saddle; 40/50/60/70 mm; 10 mm silicone strap |
| Pilot controller | M5Stack AtomS3 Lite (ESP32-S3), rated 0–40 °C |
| Production controller | Custom board on ESP32-C3-MINI-1 (FCC ID 2AC7Z-ESPC3MINI1), −40 to 85 °C |
Where it stands
- All 9 printed parts generate as closed, manifold solids from code
- Alert server: 11 unit tests and an end-to-end test with a real MQTT broker pass
- Firmware written, not yet compiled
- Parts not yet printed or tested on a real machine
- FCC Part 15B test before any unit is sold
Promises we will keep
- Never touches your machine. It only reads light; no wiring, no network link to the control.
- Warranty for as long as you subscribe (at least 12 months), replacement shipped in 2 business days, 60-day money back.
- Security updates for at least 5 years.
- Not a safety device. It must never be used for alarms that protect people.
Follow the build