Hardware compatibility: De’Longhi Pinguino BLE remote bridge with ESP32-S3 + nRF52840

I’m sharing a hardware compatibility project for De’Longhi Pinguino air conditioners that use the BLE remote protocol.

The project is here:
https://github.com/bdherouville/pinguino-ha-remote

It allows a De’Longhi Pinguino AC to be controlled locally from LAN / Home Assistant by emulating the original BLE remote. It is not cloud-based and does not use an IR blaster.

The hardware stack is:

Home Assistant / LAN        │     MQTT / HTTP        │     ESP32-S3        │ UART        │     nRF52840        │ BLE        │ De’Longhi Pinguino AC

Tested functions currently include:

power up down mode eco timer fan silent flap

The ESP32-S3 acts as the Wi-Fi / LAN bridge and exposes the web UI, MQTT, and Home Assistant side. The nRF52840 handles BLE because the ESP32 BLE radio could not pass the AC pairing gate in this protocol. An optional BME280/BMP280 sensor can also report ambient temperature, humidity, and pressure.

The repo includes:

- prebuilt firmware releases- ESP32-S3 bridge firmware- nRF52840 BLE emulator firmware- hardware wiring notes- reverse-engineering notes for the BLE protocol- optional sniffer tooling

The goal of this thread is mainly to document hardware compatibility and make the project discoverable for people with similar De’Longhi Pinguino units.

This is not intended as a Home Assistant configuration support thread. If people need help with MQTT discovery, entities, dashboards, or YAML, that should probably go in the Configuration category instead.

Nice job!
I don' t have Pinguino but can you explain few lines about:

Thanks!

The main goal of the project is to replace the original De’Longhi Pinguino handheld BLE remote with a connected, local-first remote bridge that can be controlled from Home Assistant. Instead of using an IR blaster or any cloud integration, the bridge behaves like the real remote from the AC’s point of view: commands come from Home Assistant, MQTT, HTTP, or the local web UI, then are translated into the same kind of BLE remote actions the Pinguino already understands. So the idea is not to modify the AC, but to make a connected remote that can pair with it and expose the usual buttons and sensors to Home Assistant.

The reason for the ESP32-S3 + nRF52840 split is that the two boards do very different jobs. The ESP32-S3 is excellent for the LAN side: Wi-Fi, provisioning, web UI, MQTT discovery, HTTP API, and Home Assistant integration. But in this protocol the AC is the BLE central and the remote is the BLE peripheral, so the bridge must impersonate the original “Ganymede” remote very closely. That means reproducing the pairing-mode advertising, scan response, GATT/HID layout, button reports, SMP pairing and bonding behaviour. My ESP32 BLE attempts were not reliable enough for that specific pairing gate, while the nRF52840 with Zephyr / nRF Connect SDK gives much tighter control over the BLE peripheral role. The final architecture is therefore: Home Assistant / LAN → MQTT or HTTP → ESP32-S3 → UART → nRF52840 → BLE → Pinguino AC. The ESP32 acts as the connected bridge; the nRF52840 acts as the real BLE remote emulator.