mirror of
https://github.com/alexhopeoconnor/arduino-home-assistant.git
synced 2026-10-04 02:48:13 +10:00
Per-entity availability, deferred discovery publish, suggested precision
- Add HAAvailabilityConfig for per-entity availability_topic and payloads - Defer discovery until MQTT connected; publish availability after discovery - HASensor/HANumber: optional suggested_display_precision in discovery - HASerializer/HADictionary: extend for new keys; update device types and mocks - Docs and examples reflect availability and precision usage - Tests updated for discovery and availability behavior - Ignore .cursor/ in repo root
This commit is contained in:
@@ -29,10 +29,19 @@ void setup() {
|
||||
// set device's details (optional)
|
||||
device.setName("Arduino");
|
||||
device.setSoftwareVersion("1.0.0");
|
||||
mqtt.setOriginSupportUrl("https://example.com/device-help");
|
||||
|
||||
sensor.setCurrentState(lastInputState); // optional
|
||||
sensor.setName("Door sensor"); // optional
|
||||
sensor.setDeviceClass("door"); // optional
|
||||
sensor.setPayloadAvailable("ready");
|
||||
sensor.setPayloadNotAvailable("lost");
|
||||
|
||||
// Optional multi-topic discovery metadata for external health sources.
|
||||
// Runtime availability publishing still uses sensor.setAvailability(...).
|
||||
// sensor.setAvailabilityMode("all");
|
||||
// sensor.addAvailabilityEntry("bridge/status");
|
||||
// sensor.addAvailabilityEntry("sensor/health", "{{ value_json.state }}");
|
||||
|
||||
// This method enables availability for all device types registered on the device.
|
||||
// For example, if you have 5 sensors on the same device, you can enable
|
||||
|
||||
@@ -33,6 +33,8 @@ void setup() {
|
||||
// optional properties
|
||||
buttonA.setIcon("mdi:fire");
|
||||
buttonA.setName("Click me A");
|
||||
// buttonA.setPayloadPress("PRESS_A");
|
||||
// buttonA.setCommandTemplate("{{ value_json.command }}");
|
||||
buttonB.setIcon("mdi:home");
|
||||
buttonB.setName("Click me B");
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@ void setup() {
|
||||
// set icon (optional)
|
||||
led.setIcon("mdi:lightbulb");
|
||||
led.setName("My LED");
|
||||
// led.setPayloadOn("ENABLE");
|
||||
// led.setPayloadOff("DISABLE");
|
||||
// led.setStateOn("running");
|
||||
// led.setStateOff("stopped");
|
||||
// led.setCommandTemplate("{{ value_json.command }}");
|
||||
|
||||
// handle switch state
|
||||
led.onCommand(onSwitchCommand);
|
||||
|
||||
@@ -52,6 +52,9 @@ void setup() {
|
||||
// number.setStep(0.5f); // minimum step: 0.001f
|
||||
// number.setMode(HANumber::ModeBox);
|
||||
// number.setMode(HANumber::ModeSlider);
|
||||
// number.setValueTemplate("{{ value_json.level }}");
|
||||
// number.setPayloadReset("RESET");
|
||||
// number.setCommandTemplate("{{ value | float | round(1) }}");
|
||||
|
||||
// You can set retain flag for the HA commands
|
||||
// number.setRetain(true);
|
||||
|
||||
@@ -30,6 +30,8 @@ void setup() {
|
||||
analogSensor.setIcon("mdi:home");
|
||||
analogSensor.setName("Analog voltage");
|
||||
analogSensor.setUnitOfMeasurement("V");
|
||||
analogSensor.setSuggestedDisplayPrecision(2);
|
||||
// analogSensor.setValueTemplate("{{ value_json.voltage }}");
|
||||
|
||||
mqtt.begin(BROKER_ADDR);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,10 @@ void setup() {
|
||||
// configure sensor (optional)
|
||||
valve.setIcon("mdi:home");
|
||||
valve.setName("Water valve");
|
||||
// valve.setValueTemplate("{{ value_json.state }}");
|
||||
// valve.setDeviceClass("enum");
|
||||
// valve.setOptions("open;opening;closed");
|
||||
// valve.setDefaultEntityId("sensor.water_valve");
|
||||
|
||||
mqtt.begin(BROKER_ADDR);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user