SignalK Alpicool plugin
part of MaracaiboReads and controls a Bluetooth Alpicool fridge from SignalK — dual-zone, published on npm.
A new Bluetooth fridge came onboard, and the research came first: the Alpicool BLE protocol turns out to be publicly reverse-engineered (credit to the community protocol references in Python and Go), but no SignalK plugin, node driver or polished Home Assistant integration existed. So this fills the gap — a proper SignalK plugin speaking BLE through BlueZ, publishing both zones with honest labels (the colder-target compartment is the freezer): temperatures, targets, power state, plus the fridge’s battery voltage and charge, all in SI units. Control is opt-in — per-zone target temperature and power as SignalK PUTs behind an enable toggle.
The engineering that mattered was three protocol gotchas, all grounded against the real hardware: the write characteristic only accepts write-without-response (a silent killer), the fridge answers nothing until a BIND command follows the connect, and notify frames fragment and concatenate — so the plugin carries a frame reassembler. Fourteen offline unit tests against known reference frames; verified live by moving each zone’s setpoint independently and watching the fridge obey. One physical quirk to know: the fridge holds a single BLE connection, so the phone app has to be off.
Published for anyone with the same fridge: github.com/dennismilton/signalk-alpicool · npm signalk-alpicool (listed in the SignalK Appstore).
A first version of this page — the wording will get another pass.
No posts from this project yet — they'll gather here as they publish.