Right now my myCOOLMAN MCMR43 is sitting in the garage rather than bouncing down a dirt track, but it's being prepped for that future — eventually it'll live in my Subaru Forester setup alongside a Victron Energy battery monitor (BMV-712) and charging system. I'd already got the Victron side into Home Assistant using the Victron BLE integration, so I could see state of charge, charging current, all of it, right from my dashboard.
The one thing missing was the fridge. It's the single biggest, least predictable power draw in the whole system, and it felt wrong that I could see exactly how my battery was doing but had no idea what the fridge itself was up to. Once this thing is actually out at a campsite, I want to be able to glance at HA — or get an alert — and know the fridge is holding temperature and hasn't tripped an error, without walking over and opening the lid. Peace of mind, basically: one dashboard for the whole power picture, battery and fridge together.
There was no existing integration for it, so I ended up reverse-engineering the BLE protocol and building one.
What it does
myCOOLMAN MCMR Fridge/Freezer is a local, no-cloud, no-account Home Assistant custom integration for the myCOOLMAN MCMR portable compressor fridge/freezer, talking directly over Bluetooth LE. It runs through Home Assistant's Bluetooth stack, so if you've already got an ESPHome Bluetooth Proxy with active connections enabled, you don't need any extra hardware — it just uses one of the proxy's connection slots.
Entities:
-
Climate — primary control: current temp, target-temp dial, power
-
Temperature (sensor) — cabinet temperature
-
Setpoint (sensor + number) — read-back and control
-
Input voltage (sensor) — scaling is a best guess, could use help verifying (see below)
-
Error code (sensor) — raw status/error byte
-
Power (switch) — on/off
-
Turbo (switch / binary_sensor)
-
Battery protection (select) — Low / Medium / High
-
Pairing OK (binary_sensor) — reflects the fridge's PIN-valid flag
-
LED (select) — High White / Low White / Orange
-
Buzzer (switch)
-
Auto-dim (switch) — display auto-dim
Confirmed working on the single-zone MCMR43. The single-zone MCMR60 should work via the same protocol but is untested. Dual-zone models (MCMR38DZ, MCMR55DZ, MCMR78DZ) are untested and expose extra freezer fields the integration doesn't use yet. It should be easy to add but I don't have the ability to test it.
How it works
It's local_push — the integration holds a persistent BLE connection and the fridge pushes status frames over GATT notifications, so entities update in real time rather than on a polling interval. No cloud, no vendor account.
The protocol itself doesn't seem to be documented anywhere, so I reverse-engineered it starting from the myCOOLMAN Recreation Android app (github.com/luoxs/Mycoolman) and then extended it with live probing against the real fridge — sending raw command bytes and watching which byte in the 22-byte status frame changed. That's how the LED/buzzer/auto-dim entities came about: none of those opcodes were obvious from the app alone, but toggling them on the real hardware and diffing the status frame turned up a bitmask byte that tracks all three.
Install (via HACS)
-
HACS → three-dot menu → Custom repositories
-
Add the repo URL, category Integration
-
Install myCOOLMAN MCMR Fridge/Freezer, restart Home Assistant
-
The fridge should auto-discover under Settings → Devices & Services — otherwise add it manually
-
Enter the 3-digit pairing PIN (shown on the fridge display) and set your setpoint range
A quick disclosure
I built this with a lot of help from Claude (Anthropic's AI coding assistant) — I'm an enthusiast, not a professional programmer. I've reviewed the code myself, but if you're relying on this for something important, especially the Bluetooth connection handling, it's worth reading through it yourself too.
Where I could use help
-
MCMR60 / dual-zone owners: if you can install this and report back (or open an issue) with what works and what doesn't, that'd help a lot — I only have an MCMR43 to test against.
-
Input voltage scaling: I'm assuming the raw bytes are tenths of a volt, but my MCMR43 has no on-device display for input voltage, so I can't confirm it myself. If you've got a multimeter on the DC input plug and can compare it to the sensor reading, I'd love to know if it lines up.
-
Anything else — bugs, feature ideas, models it doesn't work on — issues and PRs on the repo are welcome, or just reply here. Enjoy!