SkyRC MC3000 Charger

Hi,

had anyone tried to implement a SkyRC MC3000 charger using bluetooth?

https://www.skyrc.com/MC3000_Charger

can’t wait for feedback :slight_smile:

regards Stefan

2 Likes

Ohhh that’ll be interesting if someone comes up with something!

2 Likes

There’s a python library for handling the MC3000, and its documentation includes some reverse-engineering of the protocol.

I’m working on a fork to also implement the NC2200, which is my battery charger and which seems to use a similar but not identical protocol.

I’ve never done development for Home Assistant, so I’m not sure how hard this would be to turn into a HACS integration, but using/adapting this project seems like a good starting point.

2 Likes

yeah, I am not that good in python that I can write one and also have not time to do … but can spent some reime in testing if there is any progress … R Stefan

1 Like

Yeah, I am up for that as well. Happy to lend a helping hand but not versed in HACS development.

1 Like

+1 for such an integration.
Sadly, also my python skills are not the best.

Did you manage to reverse engineer NC2200 BT protocol. Could you, please, share your progress with us?

Is your fork available on github? Thanks!

Thanks for pointing to kroimon/skyrc-ble — that was exactly the right starting point.

I ended up building a first HACS-compatible Home Assistant custom integration for the SkyRC MC3000 here:

Current status: development version, but working in my setup.

Implemented so far:

  • BLE config flow / discovery for the MC3000
  • monitoring of 4 slots:
    • status
    • battery type
    • mode
    • voltage
    • current
    • capacity
    • temperature
    • internal resistance
    • elapsed time
  • device data:
    • input voltage
    • display / fan / beep / screensaver status
  • Home Assistant services:
    • refresh
    • start slot
    • stop slot
    • stop all
  • button entities:
    • start / stop per slot
    • refresh
    • stop all
  • expected-chemistry dropdown per slot as a safety interlock before starting

Important limitation: this does not currently program charge profiles, current, discharge current, chemistry, voltage cut-offs, temperature cut-offs, etc. The exposed skyrc-ble API currently supports read/update and start/stop of the program already configured on the charger. So the integration intentionally starts only the program already set on the MC3000 itself.

I have only tested this with the MC3000, not the NC2200. But the structure may be useful if someone wants to extend support for related SkyRC chargers.

1 Like

Brilliant, thank you for sharing!

Is there a way to temporarily disconnect Bluetooth in the integration so it can be used with the official app again for reconfiguring the charging modes etc.?

Good point. The MC3000 appears to accept only one BLE client at a time, so keeping Home Assistant connected can block the SkyRC companion app.

I’m going to add a “Companion App Mode” to the integration:

  • when enabled, Home Assistant disconnects from the charger and pauses polling;
  • the SkyRC app can then connect and change profiles/programs;
  • when disabled, Home Assistant reconnects and resumes monitoring/control.

That should cover the programming/settings use case without pretending the HA integration can already write full MC3000 profiles. For now the HA integration will remain focused on monitoring, start/stop, buttons, and safety interlocks, while actual profile editing stays on the charger/app.

Small update: I have pushed a newer development release of the SkyRC MC3000 Home Assistant integration.

GitHub:

Latest release:

Current status in v0.9.7:

  • HACS-compatible custom integration
  • UI config flow with BLE discovery
  • monitoring for all 4 MC3000 slots
  • start / stop buttons per slot
  • refresh and stop-all buttons
  • expected-chemistry dropdown per slot as a start interlock
  • 10 second polling
  • voltage display precision improved
  • elapsed time formatted as H:MM:SS
  • Companion App Mode switch

The Companion App Mode is useful because the MC3000 appears to allow only one BLE client at a time. When enabled, Home Assistant disconnects from the charger and pauses polling, so the SkyRC companion app can connect and change charger programs/settings. When disabled again, Home Assistant reconnects and resumes monitoring.

Important limitation: the integration still does not program charge profiles, currents, chemistry, voltage cut-offs, capacity cut-offs, temperature cut-offs, etc. It only starts the program already configured on the MC3000. Full profile editing would require further reverse-engineering or extending the underlying skyrc-ble library.

I have only tested this with my own MC3000 setup. Testing, bug reports, PRs and suggestions are very welcome, especially from people with different firmware versions or related SkyRC chargers.

2 Likes

v1.0 beta / v0.10.0-beta is now available for testing

I have published a new beta release for the SkyRC MC3000 Home Assistant integration:

GitHub release: v0.10.0-beta
Repository: GitHub - jperquin/ha-skyrc-mc3000: Home Assistant custom integration for monitoring the SkyRC MC3000 battery charger over BLE. · GitHub

Main changes in this beta:

  • Home Assistant Bluetooth API support
  • ESPHome Bluetooth Proxy support
  • Companion App Mode switch
  • Auto Fetch Voltage Curves switch
  • manual voltage curve fetch buttons per slot
  • voltage curve diagnostic sensors per slot
  • voltage curve timing metadata from the MC3000 curve frame
  • ApexCharts dashboard example
  • improved voltage display precision
  • elapsed time formatting as H:MM:SS

The voltage curve support is read-only. The integration can start/stop programs already configured on the MC3000, but it does not yet write charger profiles or charge parameters.

For the dashboard graph, ApexCharts Card is required. An example YAML dashboard is included in the repository under:

examples/skyrc-mc3000-dashboard.yaml

Feedback and test reports are very welcome, especially from users running HAOS/VM setups with ESPHome Bluetooth Proxy.