Arduino (using Arduino IDE or PlatformIO) and ESP-IDF (using Espressif IoT Development Framework or PlatformIO) compatible library for providing sensors and actuators to Home Assistant using MQTT.
Home Assistant has a well defined way of defining sensors and actuators using MQTT. This library register a device with one or mulitple sensors and provide a way to publish new values for them, as well as listen for commands from Home Assistant.
- Atmospheric Preassure (cbar, bar, hPa, mmHg, inHg, kPa, mbar, Pa, psi)
- Boolean
- Binary sensor (Generic sensor, with any supported device class using a device class from HaDeviceClasses.h)
- Brightness (%)
- Carbon Dioxide (ppm)
- Current (a, mA)
- Door (open/closed)
- Humidity (%)
- Json (raw "json"-sensor)
- Lock (locked/unlocked)
- Motion (detected/not detected)
- Number (with any unit and device class)
- Particulate matter (μg/m³)
- Power (mW, W, kW, MW, GW, TW)
- Sound (detected/not detected)
- String (raw "String"-sensor)
- Temperature (°C, °F, K)
- Timestamp
- Text
- Unit Concentration (parts per volume)
- Volatile organic compounds (µg/m³, ppb)
- Voltage (V = 1, mV, µV)
- Weight (kg, g, mg, ug, oz, lb, st)
- Sensor (Generic sensor, with any supported device class and unit of measurement using a device class from HaDeviceClasses.h)
- Cover (open/opening, close/closing, position)
- Button
- Event
- Fan
- Light (brightness, color temperature, rgb, effect)
- Select
- Switch (on/off)
*If you can't find a sensor/actuator you need, either use the genric sensor, create a pull request to add one or raise an issue on GitHub and we'll add it to this library.
Add the following to lib_deps:
Johboh/HomeAssistantEntities@^8.0.17
You also need a MQTT library and a JSON library. See Dependencies section. Suggestion:
johboh/MQTTRemote@^6.0.2
bblanchon/ArduinoJson@^7.1.0
Search for HomeAssistantEntities by johboh in the library manager. You also need a MQTT library and a JSON library. See Dependencies section. Suggestion: MQTTRemote by johboh and ArduinoJson by bblanchon.
In your existing idf_component.yml or in a new idf_component.yml next to your main component:
dependencies:
johboh/homeassistantentities:
version: ">=8.0.17"
You also need a MQTT library. See Dependencies section. Suggestion:
johboh/mqttremote:
version: ">=6.0.2"
- ESP32 (tested with PlatformIO espressif32@6.4.0 / arduino-esp32@2.0.11 / ESP-IDF@4.4.6 / ESP-IDF@5.1.2 on ESP32-S2 and ESP32-C3), ESP-IDF@5.4.1 on ESP32-S2 and ESP32-C6)
- ESP8266 (tested with PlatformIO espressif8266@4.2.1 / ardunio-core@3.2.0)
Newer version most probably work too, but they have not been verified.
- For ESP-IDF: https://github.com/Johboh/nlohmann-json @^3.12.0, for Arduino: https://github.com/Johboh/nlohmann-json @^3.12.0 OR https://github.com/bblanchon/ArduinoJson@^7.1.0
- An MQTT implementation is required. There is a copy of IMQTTRemote in this library from Johboh/MQTTRemote. You can either add a dependency on MQTTRemote to get a fully working MQTT client (the examples are using this dependency), or you can implement/adapt/forward to your own MQTT implementation. This library only depend on the IMQTTRemote interface.
- Needs C++17 for
std::optional.- For PlatformIO in
platformio.ini:build_unflags=-std=gnu++11 # "Disable" C++11 build_flags=-std=gnu++17 # "Enable" C++17
- For PlatformIO in