Device types¶
-Device type represents a single entity in the Home Assistant panel. -It can be a sensor, lock, camera or anything that’s listed in the table below.
-Your physical device (for example ESP-01 board) can have multiple device types assigned. -They will be displayed as child entities in the HA panel.
+Device types (entities)¶
+Device type represents a single entity within the Home Assistant panel, which could be a sensor, lock, camera, or any other item listed in the table below.
+Your physical device, such as an ESP-01 board, can have multiple device types assigned to it. +These types will then appear as child entities in the Home Assistant panel.
+Identifiers¶
+Home Assistant utilizes three distinct identifiers, which might initially appear confusing. +Grasping the purpose of each is crucial for a clear understanding of the library’s API.
+Entity ID¶
+Home Assistant automatically generates an entity ID for each device type registered by your device. +This ID is primarily utilized by dashboards and automations within Home Assistant.
+When the entity is discovered by Home Assistant for the first time, the name field is automatically employed to generate the entity ID. +Once registered, you can modify it to any desired value using the Home Assistant User Interface.
+Home Assistant internally relies on the unique ID, so changing the entity ID or name in the Home Assistant UI does not break the integration between your device and Home Assistant.
+Object ID¶
+The object ID is an optional identifier that you can assign to the device type. +Its sole purpose is for generating the entity ID described above.
+By default, Home Assistant generates the entity ID based on the entity’s name. +However, when the object ID is provided, Home Assistant uses it to generate the entity ID.
+Consequently, you can use the entity’s name as a user-friendly label and the object ID as an internal identifier.
+Unique ID¶
+The unique ID serves as an internal identifier for the entity within the Home Assistant instance. +Once the entity with a specific unique ID is created, it cannot be altered, as this identifier is not accessible through the user interface.
+Home Assistant utilizes this identifier internally to store the parameters of the entity in the database. +Given that the unique ID must be unique across the entire Home Assistant instance. +Multiple devices cannot expose entities with the same unique ID.
+By default, the library uses the unique ID provided in the device type’s constructor. +However, when you reuse the same codebase on multiple devices, conflicts may arise. +To address this issue, you can enable the extended unique ID feature in the HADevice instance. +This feature incorporates the device’s unique ID as a prefix for the device type’s ID.
+#include <Ethernet.h>
+#include <ArduinoHA.h>
+
+byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
+
+EthernetClient client;
+HADevice device(mac, sizeof(mac)); // the unique ID of the device will be 0010fa6e384a
+HAMqtt mqtt(client, device);
+
+// "myValve" is unique ID of the sensor. You should define your own ID.
+HASensor valve("myValve");
+
+void setup() {
+ // ...
+
+ valve.setIcon("mdi:home");
+ valve.setName("Water valve");
+
+ // the unique ID of the valve in HA will be "myValve"
+
+ // ...
+}
+
+void loop() {
+ // ...
+}
+#include <Ethernet.h>
+#include <ArduinoHA.h>
+
+byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
+
+EthernetClient client;
+HADevice device(mac, sizeof(mac)); // the unique ID of the device will be 0010fa6e384a
+HAMqtt mqtt(client, device);
+
+// "myValve" is unique ID of the sensor. You should define your own ID.
+HASensor valve("myValve");
+
+void setup() {
+ // ...
+
+ device.enableExtendedUniqueIds(); // <------------ enables extended unique IDs
+ valve.setIcon("mdi:home");
+ valve.setName("Water valve");
+
+ // the unique ID of the valve in HA will be "0010fa6e384a_myValve"
+
+ // ...
+}
+
+void loop() {
+ // ...
+}
+Limitations¶
-Registering a new device type requires some flash and RAM memory to be utilized. -On less powerful units like Arduino Uno, you may quickly hit the limit of resources, so keeping the device simple is recommended. -Hitting the resource limit will result in random reboots of the device.
-By default, the maximum number of device types is 6. +
Registering a new device type involves utilizing a certain amount of flash and RAM memory. +On less powerful units, such as the Arduino Uno, you may rapidly reach the resource limit. +Therefore, it is advisable to keep the device simple to avoid hitting the resource limit, which could lead to random reboots of the device.
+By default, devices utilizing ATmega328P or ATmega168 processors are limited to a maximum of 6 device types, while other platforms can support up to 24 device types. You can increase the limit using the HAMqtt class constructor as follows:
#include <Ethernet.h>
#include <ArduinoHA.h>
@@ -165,7 +261,7 @@ You can increase the limit using the byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
EthernetClient client;
HADevice device(mac, sizeof(mac));
-HAMqtt mqtt(client, device, 12); // <------------ 12 is a new limit of device types
+HAMqtt mqtt(client, device, 40); // <------------ 40 is a new limit of device types
void setup() {
Ethernet.begin(mac);
@@ -198,30 +294,38 @@ You can increase the limit using the Binary sensor
+Alarm control panel
+❌
+–
+
+Binary sensor
✅
-Button
+Button
✅
-Camera
+Camera
✅
-Cover
+Cover
✅
-Device tracker
+Device tracker
✅
-Device trigger
+Device trigger
✅
+Event
+❌
+–
+
Fan
✅
@@ -234,52 +338,76 @@ You can increase the limit using the HAHVAC
-Light
+Lawn mower
+❌
+–
+
+Light
✅
-Lock
+Lock
✅
-Number
+Number
✅
-Scene
+Scene
✅
-Select
+Select
✅
-
+
Sensor (text)
✅
-
+
Sensor (number)
✅
+Siren
+❌
+–
+
Switch
✅
-Tag scanner
+Update
+❌
+–
+
+Tag scanner
✅
+Text
+❌
+–
+
Vacuum
❌
–
+Valve
+❌
+–
+
+Water heater
+❌
+–
+
diff --git a/docs/documents/library/discovery.html b/docs/documents/library/discovery.html
index 93dacab..d057935 100644
--- a/docs/documents/library/discovery.html
+++ b/docs/documents/library/discovery.html
@@ -24,7 +24,7 @@
-
+
@@ -102,7 +102,7 @@
Availability reporting
Connection parameters
Discovery
-Device types
+Device types (entities)
MQTT security
MQTT advanced features
Compiler macros
@@ -114,6 +114,7 @@
Utils API
+Sponsor
@@ -138,7 +139,7 @@
Device types →
+ title="next chapter">Device types (entities) →
@@ -198,7 +199,7 @@ The data topic’s prefix can be changed using
Device types →
+ title="next chapter">Device types (entities) →
@@ -171,15 +172,13 @@ Solid understanding of foundations will allow you to utilize full potential of t
Topics prefix
-Device types
+- Device types (entities)
-- MQTT security
-
+- MQTT security
- MQTT advanced features
- Callbacks
- Subscriptions
diff --git a/docs/documents/library/introduction.html b/docs/documents/library/introduction.html
index 2870fdf..d5c4a41 100644
--- a/docs/documents/library/introduction.html
+++ b/docs/documents/library/introduction.html
@@ -102,7 +102,7 @@
- Availability reporting
- Connection parameters
- Discovery
-- Device types
+- Device types (entities)
- MQTT security
- MQTT advanced features
- Compiler macros
@@ -114,6 +114,7 @@
- Utils API
+- Sponsor
@@ -148,18 +149,16 @@
Introduction¶
-Before implementing the business logic of your application you will need to
-add a few necessary pieces of code to your project.
-Basically, everything comes up to a few basic rules:
+Prior to implementing the business logic of your application, you’ll need to incorporate several essential pieces of code into your project.
+Essentially, everything boils down to a few fundamental rules:
HADevice and HAMqtt instances need to be initialized once globally or as a part of another global object.
-HAMqtt::begin needs to be called at the end of setup logic. It provides MQTT broker credentials that will be used for a connection.
+HAMqtt::begin needs to be called at the end of Arduino’s setup logic. It lets you provide the MQTT broker’s IP address and credentials.
HAMqtt::loop method needs to be called periodically (it doesn’t need to be called on each tick).
Device types need to be initialized after HAMqtt class (it will be described later in the documentation).
-Here are the minimal boilerplates that you can start with.
-Don’t worry if you have no idea what’s going on here.
-Everything will be covered in the following chapters.
+Here are the minimal boilerplate examples to get you started.
+Don’t worry if you have no idea what’s happening here; everything will be explained in detail in the following chapters.
Arduino Boilerplate¶
#include <Ethernet.h>
diff --git a/docs/documents/library/mqtt-advanced.html b/docs/documents/library/mqtt-advanced.html
index a750d61..4a7c499 100644
--- a/docs/documents/library/mqtt-advanced.html
+++ b/docs/documents/library/mqtt-advanced.html
@@ -102,7 +102,7 @@
Availability reporting
Connection parameters
Discovery
-Device types
+Device types (entities)
MQTT security
MQTT advanced features
Compiler macros
@@ -114,6 +114,7 @@
Utils API
+Sponsor
@@ -168,11 +169,23 @@ Please take a look at the example below.
// this method will be called when connection to MQTT broker is established
}
+void onDisconnected() {
+ // this method will be called when connection to MQTT broker is lost
+}
+
+void onStateChanged(HAMqtt::ConnectionState state) {
+ // this method will be called each time the state of the MQTT connection changes
+}
+
void setup() {
Ethernet.begin(mac);
mqtt.onMessage(onMessage);
mqtt.onConnected(onConnected);
+ mqtt.onDisconnected(onDisconnected);
+ mqtt.onStateChanged(onStateChanged);
+ mqtt.setBufferSize(512); // set the buffer size to 512 bytes, default is 256 bytes
+ mqtt.setKeepAlive(60); // set the keep alive interval to 60 seconds, default is 15 seconds
mqtt.begin("192.168.1.50", "username", "password");
}
diff --git a/docs/documents/library/mqtt-security.html b/docs/documents/library/mqtt-security.html
index 2d59859..b96fc3d 100644
--- a/docs/documents/library/mqtt-security.html
+++ b/docs/documents/library/mqtt-security.html
@@ -25,7 +25,7 @@
-
+
@@ -102,7 +102,7 @@
Availability reporting
Connection parameters
Discovery
-Device types
+Device types (entities)
MQTT security
MQTT advanced features
Compiler macros
@@ -114,6 +114,7 @@
Utils API
+Sponsor
@@ -134,7 +135,7 @@
-
← Device types
+ title="previous chapter">← Device types (entities)
-
MQTT security¶
-The library allows you to use credentials for acquiring a TCP connection with the MQTT broker.
-By default you can use the same credentials you use for login in the Home Assistant panel but you can also configure custom credentials in the Mosquitto broker.
+The library enables you to utilize credentials to establish a TCP connection with the MQTT broker.
+By default, you can employ the same credentials utilized for logging into the Home Assistant panel.
+However, it’s also possible to configure custom credentials within the Mosquitto broker.
Danger
-This solution is not 100% secure because communication between Arduino and Home Assistant is not encrypted.
-Username and password can be easily discovered by analyzing your local network traffic.
-However, that’s fine as long as your local network is secured against unattended access.
-On more powerful devices (like ESP), you should consider using TLS/SSL connection.
+This solution may not provide comprehensive security as the communication between Arduino and Home Assistant lacks encryption.
+Consequently, username and password could be vulnerable to discovery through analysis of local network traffic.
+However, this may not pose a significant risk if your local network is properly secured against unauthorized access.
#include <Ethernet.h>
#include <ArduinoHA.h>
@@ -177,11 +178,6 @@ On more powerful devices (like ESP), you should consider using TLS/SSL connectio
}
-
-SSL connection¶
-On ESP32/ESP8266 you can use WiFiClientSecure client to establish encrypted connection between your device and Home Assistant.
-Please take a look at this example.
-
@@ -190,7 +186,7 @@ Please take a look at
-
← Device types
+ title="previous chapter">← Device types (entities)
Availability reporting
Connection parameters
Discovery
-Device types
+Device types (entities)
MQTT security
MQTT advanced features
Compiler macros
@@ -112,6 +112,7 @@
Utils API
+Sponsor
@@ -151,6 +152,8 @@
HABaseDeviceType::_componentName (C++ member)
HABaseDeviceType::_name (C++ member)
+
+ HABaseDeviceType::_objectId (C++ member)
HABaseDeviceType::_serializer (C++ member)
@@ -171,6 +174,8 @@
HABaseDeviceType::destroySerializer (C++ function)
HABaseDeviceType::getName (C++ function)
+
+ HABaseDeviceType::getObjectId (C++ function)
HABaseDeviceType::HABaseDeviceType (C++ function)
@@ -203,6 +208,8 @@
HABaseDeviceType::setAvailability (C++ function)
HABaseDeviceType::setName (C++ function)
+
+ HABaseDeviceType::setObjectId (C++ function)
HABaseDeviceType::subscribeTopic (C++ function)
@@ -213,6 +220,8 @@
HABinarySensor::_class (C++ member)
HABinarySensor::_currentState (C++ member)
+
+ HABinarySensor::_expireAfter (C++ member)
HABinarySensor::_icon (C++ member)
@@ -229,6 +238,8 @@
HABinarySensor::setCurrentState (C++ function)
HABinarySensor::setDeviceClass (C++ function)
+
+ HABinarySensor::setExpireAfter (C++ function)
HABinarySensor::setIcon (C++ function)
@@ -375,6 +386,8 @@
HADevice::_availabilityTopic (C++ member)
HADevice::_available (C++ member)
+
+ HADevice::_extendedUniqueIds (C++ member)
HADevice::_ownsUniqueId (C++ member)
@@ -383,6 +396,8 @@
HADevice::_sharedAvailability (C++ member)
HADevice::_uniqueId (C++ member)
+
+ HADevice::enableExtendedUniqueIds (C++ function)
HADevice::enableLastWill (C++ function)
@@ -397,12 +412,16 @@
HADevice::HADevice (C++ function), [1], [2]
HADevice::isAvailable (C++ function)
+
+ HADevice::isExtendedUniqueIdsEnabled (C++ function)
HADevice::isSharedAvailabilityEnabled (C++ function)
HADevice::publishAvailability (C++ function)
HADevice::setAvailability (C++ function)
+
+ HADevice::setConfigurationUrl (C++ function)
HADevice::setManufacturer (C++ function)
@@ -858,8 +877,6 @@
HAHVAC::TemperatureUnit::DefaultUnit (C++ enumerator)
-
-
+
- HALight::_maxMireds (C++ member)
- HALight::_minMireds (C++ member)
@@ -1057,6 +1076,8 @@
- HAMqtt (C++ class)
- HAMqtt::_connectedCallback (C++ member)
+
+ - HAMqtt::_currentState (C++ member)
- HAMqtt::_dataPrefix (C++ member)
@@ -1065,6 +1086,8 @@
- HAMqtt::_devicesTypes (C++ member)
- HAMqtt::_devicesTypesNb (C++ member)
+
+ - HAMqtt::_disconnectedCallback (C++ member)
- HAMqtt::_discoveryPrefix (C++ member)
@@ -1087,6 +1110,8 @@
- HAMqtt::_mqtt (C++ member)
- HAMqtt::_password (C++ member)
+
+ - HAMqtt::_stateChangedCallback (C++ member)
- HAMqtt::_username (C++ member)
@@ -1095,6 +1120,30 @@
- HAMqtt::begin (C++ function), [1], [2], [3]
- HAMqtt::beginPublish (C++ function)
+
+ - HAMqtt::ConnectionState (C++ enum)
+
+ - HAMqtt::ConnectionState::StateBadClientId (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateBadCredentials (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateBadProtocol (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateConnected (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateConnecting (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateConnectionFailed (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateConnectionLost (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateConnectionTimeout (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateDisconnected (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateUnauthorized (C++ enumerator)
+
+ - HAMqtt::ConnectionState::StateUnavailable (C++ enumerator)
- HAMqtt::connectToServer (C++ function)
@@ -1107,6 +1156,8 @@
- HAMqtt::getDevice (C++ function)
- HAMqtt::getDiscoveryPrefix (C++ function)
+
+ - HAMqtt::getState (C++ function)
- HAMqtt::HAMqtt (C++ function)
@@ -1119,20 +1170,30 @@
- HAMqtt::onConnected (C++ function)
- HAMqtt::onConnectedLogic (C++ function)
+
+ - HAMqtt::onDisconnected (C++ function)
- HAMqtt::onMessage (C++ function)
+
+ - HAMqtt::onStateChanged (C++ function)
- HAMqtt::processMessage (C++ function)
- HAMqtt::publish (C++ function)
- HAMqtt::ReconnectInterval (C++ member)
+
+ - HAMqtt::setBufferSize (C++ function)
- HAMqtt::setDataPrefix (C++ function)
- HAMqtt::setDiscoveryPrefix (C++ function)
+
+ - HAMqtt::setKeepAlive (C++ function)
- HAMqtt::setLastWill (C++ function)
+
+ - HAMqtt::setState (C++ function)
- HAMqtt::subscribe (C++ function)
@@ -1319,6 +1380,8 @@
- HASelect::buildSerializer (C++ function)
- HASelect::countOptionsInString (C++ function)
+
+ - HASelect::getCurrentOption (C++ function)
- HASelect::getCurrentState (C++ function)
@@ -1349,24 +1412,42 @@
- HASensor (C++ class)
- HASensor::_deviceClass (C++ member)
+
+ - HASensor::_expireAfter (C++ member)
+
+ - HASensor::_features (C++ member)
- HASensor::_forceUpdate (C++ member)
- HASensor::_icon (C++ member)
+
+ - HASensor::_stateClass (C++ member)
- HASensor::_unitOfMeasurement (C++ member)
- HASensor::buildSerializer (C++ function)
- - HASensor::HASensor (C++ function)
+
- HASensor::Features (C++ enum)
+
+ - HASensor::Features::DefaultFeatures (C++ enumerator)
+
+ - HASensor::Features::JsonAttributesFeature (C++ enumerator)
+
+ - HASensor::HASensor (C++ function)
- HASensor::onMqttConnected (C++ function)
- HASensor::setDeviceClass (C++ function)
+
+ - HASensor::setExpireAfter (C++ function)
- HASensor::setForceUpdate (C++ function)
- HASensor::setIcon (C++ function)
+
+ - HASensor::setJsonAttributes (C++ function)
+
+ - HASensor::setStateClass (C++ function)
- HASensor::setUnitOfMeasurement (C++ function)
@@ -1380,7 +1461,7 @@
- HASensorNumber::getCurrentValue (C++ function)
- - HASensorNumber::HASensorNumber (C++ function)
+
- HASensorNumber::HASensorNumber (C++ function)
- HASensorNumber::onMqttConnected (C++ function)
@@ -1435,6 +1516,8 @@
- HASerializer::FlagType::WithAvailability (C++ enumerator)
- HASerializer::FlagType::WithDevice (C++ enumerator)
+
+ - HASerializer::FlagType::WithUniqueId (C++ enumerator)
- HASerializer::flush (C++ function)
@@ -1503,6 +1586,8 @@
- HASerializerArray::calculateSize (C++ function)
- HASerializerArray::clear (C++ function)
+
+ - HASerializerArray::getItem (C++ function)
- HASerializerArray::getItems (C++ function)
diff --git a/docs/index.html b/docs/index.html
index 99ebc68..c848de9 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -101,7 +101,7 @@
- Availability reporting
- Connection parameters
- Discovery
-- Device types
+- Device types (entities)
- MQTT security
- MQTT advanced features
- Compiler macros
@@ -113,6 +113,7 @@
- Utils API
+Sponsor
@@ -193,15 +194,13 @@ but I successfully use it on ESP8266/ESP8255 boards in my projects.
Topics prefix
-Device types
+- Device types (entities)
-- MQTT security
-
+- MQTT security
- MQTT advanced features
- Callbacks
- Subscriptions
@@ -251,6 +250,7 @@ but I successfully use it on ESP8266/ESP8255 boards in my projects.
+Sponsor
diff --git a/docs/objects.inv b/docs/objects.inv
index fdbb0df..3f54edf 100644
Binary files a/docs/objects.inv and b/docs/objects.inv differ
diff --git a/docs/search.html b/docs/search.html
index f6241ad..9518c32 100644
--- a/docs/search.html
+++ b/docs/search.html
@@ -107,7 +107,7 @@
Availability reporting
Connection parameters
Discovery
-Device types
+Device types (entities)
MQTT security
MQTT advanced features
Compiler macros
@@ -119,6 +119,7 @@
Utils API
+Sponsor
diff --git a/docs/searchindex.js b/docs/searchindex.js
index 155bcfc..f70a818 100644
--- a/docs/searchindex.js
+++ b/docs/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["documents/api/core/ha-device","documents/api/core/ha-mqtt","documents/api/core/index","documents/api/device-types/ha-base-device-type","documents/api/device-types/ha-binary-sensor","documents/api/device-types/ha-button","documents/api/device-types/ha-camera","documents/api/device-types/ha-cover","documents/api/device-types/ha-device-tracker","documents/api/device-types/ha-device-trigger","documents/api/device-types/ha-fan","documents/api/device-types/ha-hvac","documents/api/device-types/ha-light","documents/api/device-types/ha-lock","documents/api/device-types/ha-number","documents/api/device-types/ha-scene","documents/api/device-types/ha-select","documents/api/device-types/ha-sensor","documents/api/device-types/ha-sensor-number","documents/api/device-types/ha-switch","documents/api/device-types/ha-tag-scanner","documents/api/device-types/index","documents/api/index","documents/api/utils/ha-numeric","documents/api/utils/ha-serializer","documents/api/utils/ha-serializer-array","documents/api/utils/ha-utils","documents/api/utils/index","documents/getting-started/compatible-hardware","documents/getting-started/examples","documents/getting-started/index","documents/getting-started/installation","documents/getting-started/prerequisites","documents/library/availability-reporting","documents/library/compiler-macros","documents/library/connection-params","documents/library/device-configuration","documents/library/device-types","documents/library/discovery","documents/library/index","documents/library/introduction","documents/library/mqtt-advanced","documents/library/mqtt-security","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["documents/api/core/ha-device.rst","documents/api/core/ha-mqtt.rst","documents/api/core/index.rst","documents/api/device-types/ha-base-device-type.rst","documents/api/device-types/ha-binary-sensor.rst","documents/api/device-types/ha-button.rst","documents/api/device-types/ha-camera.rst","documents/api/device-types/ha-cover.rst","documents/api/device-types/ha-device-tracker.rst","documents/api/device-types/ha-device-trigger.rst","documents/api/device-types/ha-fan.rst","documents/api/device-types/ha-hvac.rst","documents/api/device-types/ha-light.rst","documents/api/device-types/ha-lock.rst","documents/api/device-types/ha-number.rst","documents/api/device-types/ha-scene.rst","documents/api/device-types/ha-select.rst","documents/api/device-types/ha-sensor.rst","documents/api/device-types/ha-sensor-number.rst","documents/api/device-types/ha-switch.rst","documents/api/device-types/ha-tag-scanner.rst","documents/api/device-types/index.rst","documents/api/index.rst","documents/api/utils/ha-numeric.rst","documents/api/utils/ha-serializer.rst","documents/api/utils/ha-serializer-array.rst","documents/api/utils/ha-utils.rst","documents/api/utils/index.rst","documents/getting-started/compatible-hardware.rst","documents/getting-started/examples.rst","documents/getting-started/index.rst","documents/getting-started/installation.rst","documents/getting-started/prerequisites.rst","documents/library/availability-reporting.rst","documents/library/compiler-macros.rst","documents/library/connection-params.rst","documents/library/device-configuration.rst","documents/library/device-types.rst","documents/library/discovery.rst","documents/library/index.rst","documents/library/introduction.rst","documents/library/mqtt-advanced.rst","documents/library/mqtt-security.rst","index.rst"],objects:{"":[[3,0,1,"_CPPv416HABaseDeviceType","HABaseDeviceType"],[3,1,1,"_CPPv4N16HABaseDeviceType12AvailabilityE","HABaseDeviceType::Availability"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE","HABaseDeviceType::Availability::AvailabilityDefault"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE","HABaseDeviceType::Availability::AvailabilityOffline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE","HABaseDeviceType::Availability::AvailabilityOnline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE","HABaseDeviceType::AvailabilityDefault"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE","HABaseDeviceType::AvailabilityOffline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE","HABaseDeviceType::AvailabilityOnline"],[3,3,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType"],[3,4,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType::componentName"],[3,4,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType::uniqueId"],[3,1,1,"_CPPv4N16HABaseDeviceType15NumberPrecisionE","HABaseDeviceType::NumberPrecision"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E","HABaseDeviceType::NumberPrecision::PrecisionP0"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E","HABaseDeviceType::NumberPrecision::PrecisionP1"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E","HABaseDeviceType::NumberPrecision::PrecisionP2"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E","HABaseDeviceType::NumberPrecision::PrecisionP3"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E","HABaseDeviceType::PrecisionP0"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E","HABaseDeviceType::PrecisionP1"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E","HABaseDeviceType::PrecisionP2"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E","HABaseDeviceType::PrecisionP3"],[3,5,1,"_CPPv4N16HABaseDeviceType13_availabilityE","HABaseDeviceType::_availability"],[3,5,1,"_CPPv4N16HABaseDeviceType14_componentNameE","HABaseDeviceType::_componentName"],[3,5,1,"_CPPv4N16HABaseDeviceType5_nameE","HABaseDeviceType::_name"],[3,5,1,"_CPPv4N16HABaseDeviceType11_serializerE","HABaseDeviceType::_serializer"],[3,5,1,"_CPPv4N16HABaseDeviceType9_uniqueIdE","HABaseDeviceType::_uniqueId"],[3,3,1,"_CPPv4N16HABaseDeviceType15buildSerializerEv","HABaseDeviceType::buildSerializer"],[3,3,1,"_CPPv4NK16HABaseDeviceType13componentNameEv","HABaseDeviceType::componentName"],[3,3,1,"_CPPv4N16HABaseDeviceType17destroySerializerEv","HABaseDeviceType::destroySerializer"],[3,3,1,"_CPPv4NK16HABaseDeviceType7getNameEv","HABaseDeviceType::getName"],[3,3,1,"_CPPv4NK16HABaseDeviceType24isAvailabilityConfiguredEv","HABaseDeviceType::isAvailabilityConfigured"],[3,3,1,"_CPPv4NK16HABaseDeviceType8isOnlineEv","HABaseDeviceType::isOnline"],[3,3,1,"_CPPv4N16HABaseDeviceType4mqttEv","HABaseDeviceType::mqtt"],[3,3,1,"_CPPv4N16HABaseDeviceType15onMqttConnectedEv","HABaseDeviceType::onMqttConnected"],[3,3,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::length"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::topic"],[3,3,1,"_CPPv4N16HABaseDeviceType19publishAvailabilityEv","HABaseDeviceType::publishAvailability"],[3,3,1,"_CPPv4N16HABaseDeviceType13publishConfigEv","HABaseDeviceType::publishConfig"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::isProgmemData"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::length"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::topic"],[3,3,1,"_CPPv4N16HABaseDeviceType15setAvailabilityEb","HABaseDeviceType::setAvailability"],[3,4,1,"_CPPv4N16HABaseDeviceType15setAvailabilityEb","HABaseDeviceType::setAvailability::online"],[3,3,1,"_CPPv4N16HABaseDeviceType7setNameEPKc","HABaseDeviceType::setName"],[3,4,1,"_CPPv4N16HABaseDeviceType7setNameEPKc","HABaseDeviceType::setName::name"],[3,3,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic"],[3,4,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic::uniqueId"],[3,3,1,"_CPPv4NK16HABaseDeviceType8uniqueIdEv","HABaseDeviceType::uniqueId"],[4,0,1,"_CPPv414HABinarySensor","HABinarySensor"],[4,3,1,"_CPPv4N14HABinarySensor14HABinarySensorEPKc","HABinarySensor::HABinarySensor"],[4,4,1,"_CPPv4N14HABinarySensor14HABinarySensorEPKc","HABinarySensor::HABinarySensor::uniqueId"],[4,5,1,"_CPPv4N14HABinarySensor6_classE","HABinarySensor::_class"],[4,5,1,"_CPPv4N14HABinarySensor13_currentStateE","HABinarySensor::_currentState"],[4,5,1,"_CPPv4N14HABinarySensor5_iconE","HABinarySensor::_icon"],[4,3,1,"_CPPv4N14HABinarySensor15buildSerializerEv","HABinarySensor::buildSerializer"],[4,3,1,"_CPPv4NK14HABinarySensor15getCurrentStateEv","HABinarySensor::getCurrentState"],[4,3,1,"_CPPv4N14HABinarySensor15onMqttConnectedEv","HABinarySensor::onMqttConnected"],[4,3,1,"_CPPv4N14HABinarySensor12publishStateEb","HABinarySensor::publishState"],[4,4,1,"_CPPv4N14HABinarySensor12publishStateEb","HABinarySensor::publishState::state"],[4,3,1,"_CPPv4N14HABinarySensor15setCurrentStateEKb","HABinarySensor::setCurrentState"],[4,4,1,"_CPPv4N14HABinarySensor15setCurrentStateEKb","HABinarySensor::setCurrentState::state"],[4,3,1,"_CPPv4N14HABinarySensor14setDeviceClassEPKc","HABinarySensor::setDeviceClass"],[4,4,1,"_CPPv4N14HABinarySensor14setDeviceClassEPKc","HABinarySensor::setDeviceClass::deviceClass"],[4,3,1,"_CPPv4N14HABinarySensor7setIconEPKc","HABinarySensor::setIcon"],[4,4,1,"_CPPv4N14HABinarySensor7setIconEPKc","HABinarySensor::setIcon::icon"],[4,3,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState"],[4,4,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState::force"],[4,4,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState::state"],[5,0,1,"_CPPv48HAButton","HAButton"],[5,3,1,"_CPPv4N8HAButton8HAButtonEPKc","HAButton::HAButton"],[5,4,1,"_CPPv4N8HAButton8HAButtonEPKc","HAButton::HAButton::uniqueId"],[5,5,1,"_CPPv4N8HAButton6_classE","HAButton::_class"],[5,5,1,"_CPPv4N8HAButton16_commandCallbackE","HAButton::_commandCallback"],[5,5,1,"_CPPv4N8HAButton5_iconE","HAButton::_icon"],[5,5,1,"_CPPv4N8HAButton7_retainE","HAButton::_retain"],[5,3,1,"_CPPv4N8HAButton15buildSerializerEv","HAButton::buildSerializer"],[5,3,1,"_CPPv4N8HAButton9onCommandEPFvP8HAButtonE","HAButton::onCommand"],[5,4,1,"_CPPv4N8HAButton9onCommandEPFvP8HAButtonE","HAButton::onCommand::callback"],[5,3,1,"_CPPv4N8HAButton15onMqttConnectedEv","HAButton::onMqttConnected"],[5,3,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::length"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::payload"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::topic"],[5,3,1,"_CPPv4N8HAButton14setDeviceClassEPKc","HAButton::setDeviceClass"],[5,4,1,"_CPPv4N8HAButton14setDeviceClassEPKc","HAButton::setDeviceClass::deviceClass"],[5,3,1,"_CPPv4N8HAButton7setIconEPKc","HAButton::setIcon"],[5,4,1,"_CPPv4N8HAButton7setIconEPKc","HAButton::setIcon::icon"],[5,3,1,"_CPPv4N8HAButton9setRetainEKb","HAButton::setRetain"],[5,4,1,"_CPPv4N8HAButton9setRetainEKb","HAButton::setRetain::retain"],[6,0,1,"_CPPv48HACamera","HACamera"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBase64E","HACamera::EncodingBase64"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE","HACamera::EncodingBinary"],[6,3,1,"_CPPv4N8HACamera8HACameraEPKc","HACamera::HACamera"],[6,4,1,"_CPPv4N8HACamera8HACameraEPKc","HACamera::HACamera::uniqueId"],[6,1,1,"_CPPv4N8HACamera13ImageEncodingE","HACamera::ImageEncoding"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBase64E","HACamera::ImageEncoding::EncodingBase64"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE","HACamera::ImageEncoding::EncodingBinary"],[6,5,1,"_CPPv4N8HACamera9_encodingE","HACamera::_encoding"],[6,5,1,"_CPPv4N8HACamera5_iconE","HACamera::_icon"],[6,3,1,"_CPPv4N8HACamera15buildSerializerEv","HACamera::buildSerializer"],[6,3,1,"_CPPv4NK8HACamera19getEncodingPropertyEv","HACamera::getEncodingProperty"],[6,3,1,"_CPPv4N8HACamera15onMqttConnectedEv","HACamera::onMqttConnected"],[6,3,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage"],[6,4,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage::data"],[6,4,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage::length"],[6,3,1,"_CPPv4N8HACamera11setEncodingEK13ImageEncoding","HACamera::setEncoding"],[6,4,1,"_CPPv4N8HACamera11setEncodingEK13ImageEncoding","HACamera::setEncoding::encoding"],[6,3,1,"_CPPv4N8HACamera7setIconEPKc","HACamera::setIcon"],[6,4,1,"_CPPv4N8HACamera7setIconEPKc","HACamera::setIcon::icon"],[7,0,1,"_CPPv47HACover","HACover"],[7,2,1,"_CPPv4N7HACover12CoverCommand12CommandCloseE","HACover::CommandClose"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandOpenE","HACover::CommandOpen"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandStopE","HACover::CommandStop"],[7,1,1,"_CPPv4N7HACover12CoverCommandE","HACover::CoverCommand"],[7,2,1,"_CPPv4N7HACover12CoverCommand12CommandCloseE","HACover::CoverCommand::CommandClose"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandOpenE","HACover::CoverCommand::CommandOpen"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandStopE","HACover::CoverCommand::CommandStop"],[7,1,1,"_CPPv4N7HACover10CoverStateE","HACover::CoverState"],[7,2,1,"_CPPv4N7HACover10CoverState11StateClosedE","HACover::CoverState::StateClosed"],[7,2,1,"_CPPv4N7HACover10CoverState12StateClosingE","HACover::CoverState::StateClosing"],[7,2,1,"_CPPv4N7HACover10CoverState9StateOpenE","HACover::CoverState::StateOpen"],[7,2,1,"_CPPv4N7HACover10CoverState12StateOpeningE","HACover::CoverState::StateOpening"],[7,2,1,"_CPPv4N7HACover10CoverState12StateStoppedE","HACover::CoverState::StateStopped"],[7,2,1,"_CPPv4N7HACover10CoverState12StateUnknownE","HACover::CoverState::StateUnknown"],[7,2,1,"_CPPv4N7HACover8Features15DefaultFeaturesE","HACover::DefaultFeatures"],[7,5,1,"_CPPv4N7HACover15DefaultPositionE","HACover::DefaultPosition"],[7,1,1,"_CPPv4N7HACover8FeaturesE","HACover::Features"],[7,2,1,"_CPPv4N7HACover8Features15DefaultFeaturesE","HACover::Features::DefaultFeatures"],[7,2,1,"_CPPv4N7HACover8Features15PositionFeatureE","HACover::Features::PositionFeature"],[7,3,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover"],[7,4,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover::features"],[7,4,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover::uniqueId"],[7,2,1,"_CPPv4N7HACover8Features15PositionFeatureE","HACover::PositionFeature"],[7,2,1,"_CPPv4N7HACover10CoverState11StateClosedE","HACover::StateClosed"],[7,2,1,"_CPPv4N7HACover10CoverState12StateClosingE","HACover::StateClosing"],[7,2,1,"_CPPv4N7HACover10CoverState9StateOpenE","HACover::StateOpen"],[7,2,1,"_CPPv4N7HACover10CoverState12StateOpeningE","HACover::StateOpening"],[7,2,1,"_CPPv4N7HACover10CoverState12StateStoppedE","HACover::StateStopped"],[7,2,1,"_CPPv4N7HACover10CoverState12StateUnknownE","HACover::StateUnknown"],[7,5,1,"_CPPv4N7HACover6_classE","HACover::_class"],[7,5,1,"_CPPv4N7HACover16_commandCallbackE","HACover::_commandCallback"],[7,5,1,"_CPPv4N7HACover16_currentPositionE","HACover::_currentPosition"],[7,5,1,"_CPPv4N7HACover13_currentStateE","HACover::_currentState"],[7,5,1,"_CPPv4N7HACover9_featuresE","HACover::_features"],[7,5,1,"_CPPv4N7HACover5_iconE","HACover::_icon"],[7,5,1,"_CPPv4N7HACover11_optimisticE","HACover::_optimistic"],[7,5,1,"_CPPv4N7HACover7_retainE","HACover::_retain"],[7,3,1,"_CPPv4N7HACover15buildSerializerEv","HACover::buildSerializer"],[7,3,1,"_CPPv4NK7HACover18getCurrentPositionEv","HACover::getCurrentPosition"],[7,3,1,"_CPPv4NK7HACover15getCurrentStateEv","HACover::getCurrentState"],[7,3,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand"],[7,4,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand::cmd"],[7,4,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand::length"],[7,3,1,"_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE","HACover::onCommand"],[7,4,1,"_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE","HACover::onCommand::callback"],[7,3,1,"_CPPv4N7HACover15onMqttConnectedEv","HACover::onMqttConnected"],[7,3,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::length"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::payload"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::topic"],[7,3,1,"_CPPv4N7HACover15publishPositionEK7int16_t","HACover::publishPosition"],[7,4,1,"_CPPv4N7HACover15publishPositionEK7int16_t","HACover::publishPosition::position"],[7,3,1,"_CPPv4N7HACover12publishStateEK10CoverState","HACover::publishState"],[7,4,1,"_CPPv4N7HACover12publishStateEK10CoverState","HACover::publishState::state"],[7,3,1,"_CPPv4N7HACover18setCurrentPositionEK7int16_t","HACover::setCurrentPosition"],[7,4,1,"_CPPv4N7HACover18setCurrentPositionEK7int16_t","HACover::setCurrentPosition::position"],[7,3,1,"_CPPv4N7HACover15setCurrentStateEK10CoverState","HACover::setCurrentState"],[7,4,1,"_CPPv4N7HACover15setCurrentStateEK10CoverState","HACover::setCurrentState::state"],[7,3,1,"_CPPv4N7HACover14setDeviceClassEPKc","HACover::setDeviceClass"],[7,4,1,"_CPPv4N7HACover14setDeviceClassEPKc","HACover::setDeviceClass::deviceClass"],[7,3,1,"_CPPv4N7HACover7setIconEPKc","HACover::setIcon"],[7,4,1,"_CPPv4N7HACover7setIconEPKc","HACover::setIcon::icon"],[7,3,1,"_CPPv4N7HACover13setOptimisticEKb","HACover::setOptimistic"],[7,4,1,"_CPPv4N7HACover13setOptimisticEKb","HACover::setOptimistic::optimistic"],[7,3,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition"],[7,4,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition::force"],[7,4,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition::position"],[7,3,1,"_CPPv4N7HACover9setRetainEKb","HACover::setRetain"],[7,4,1,"_CPPv4N7HACover9setRetainEKb","HACover::setRetain::retain"],[7,3,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState"],[7,4,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState::force"],[7,4,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState::state"],[0,0,1,"_CPPv48HADevice","HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEPKc","HADevice::HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEv","HADevice::HADevice"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice::length"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice::uniqueId"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPKc","HADevice::HADevice::uniqueId"],[0,5,1,"_CPPv4N8HADevice18_availabilityTopicE","HADevice::_availabilityTopic"],[0,5,1,"_CPPv4N8HADevice10_availableE","HADevice::_available"],[0,5,1,"_CPPv4N8HADevice13_ownsUniqueIdE","HADevice::_ownsUniqueId"],[0,5,1,"_CPPv4N8HADevice11_serializerE","HADevice::_serializer"],[0,5,1,"_CPPv4N8HADevice19_sharedAvailabilityE","HADevice::_sharedAvailability"],[0,5,1,"_CPPv4N8HADevice9_uniqueIdE","HADevice::_uniqueId"],[0,3,1,"_CPPv4N8HADevice14enableLastWillEv","HADevice::enableLastWill"],[0,3,1,"_CPPv4N8HADevice24enableSharedAvailabilityEv","HADevice::enableSharedAvailability"],[0,3,1,"_CPPv4NK8HADevice20getAvailabilityTopicEv","HADevice::getAvailabilityTopic"],[0,3,1,"_CPPv4NK8HADevice13getSerializerEv","HADevice::getSerializer"],[0,3,1,"_CPPv4NK8HADevice11getUniqueIdEv","HADevice::getUniqueId"],[0,3,1,"_CPPv4NK8HADevice11isAvailableEv","HADevice::isAvailable"],[0,3,1,"_CPPv4NK8HADevice27isSharedAvailabilityEnabledEv","HADevice::isSharedAvailabilityEnabled"],[0,3,1,"_CPPv4NK8HADevice19publishAvailabilityEv","HADevice::publishAvailability"],[0,3,1,"_CPPv4N8HADevice15setAvailabilityEb","HADevice::setAvailability"],[0,4,1,"_CPPv4N8HADevice15setAvailabilityEb","HADevice::setAvailability::online"],[0,3,1,"_CPPv4N8HADevice15setManufacturerEPKc","HADevice::setManufacturer"],[0,4,1,"_CPPv4N8HADevice15setManufacturerEPKc","HADevice::setManufacturer::manufacturer"],[0,3,1,"_CPPv4N8HADevice8setModelEPKc","HADevice::setModel"],[0,4,1,"_CPPv4N8HADevice8setModelEPKc","HADevice::setModel::model"],[0,3,1,"_CPPv4N8HADevice7setNameEPKc","HADevice::setName"],[0,4,1,"_CPPv4N8HADevice7setNameEPKc","HADevice::setName::name"],[0,3,1,"_CPPv4N8HADevice18setSoftwareVersionEPKc","HADevice::setSoftwareVersion"],[0,4,1,"_CPPv4N8HADevice18setSoftwareVersionEPKc","HADevice::setSoftwareVersion::softwareVersion"],[0,3,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId"],[0,4,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId::length"],[0,4,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId::uniqueId"],[0,3,1,"_CPPv4N8HADeviceD0Ev","HADevice::~HADevice"],[8,0,1,"_CPPv415HADeviceTracker","HADeviceTracker"],[8,3,1,"_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc","HADeviceTracker::HADeviceTracker"],[8,4,1,"_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc","HADeviceTracker::HADeviceTracker::uniqueId"],[8,1,1,"_CPPv4N15HADeviceTracker10SourceTypeE","HADeviceTracker::SourceType"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE","HADeviceTracker::SourceType::SourceTypeBluetooth"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE","HADeviceTracker::SourceType::SourceTypeBluetoothLE"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE","HADeviceTracker::SourceType::SourceTypeGPS"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE","HADeviceTracker::SourceType::SourceTypeRouter"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE","HADeviceTracker::SourceType::SourceTypeUnknown"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE","HADeviceTracker::SourceTypeBluetooth"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE","HADeviceTracker::SourceTypeBluetoothLE"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE","HADeviceTracker::SourceTypeGPS"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE","HADeviceTracker::SourceTypeRouter"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE","HADeviceTracker::SourceTypeUnknown"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState9StateHomeE","HADeviceTracker::StateHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE","HADeviceTracker::StateNotAvailable"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE","HADeviceTracker::StateNotHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE","HADeviceTracker::StateUnknown"],[8,1,1,"_CPPv4N15HADeviceTracker12TrackerStateE","HADeviceTracker::TrackerState"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState9StateHomeE","HADeviceTracker::TrackerState::StateHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE","HADeviceTracker::TrackerState::StateNotAvailable"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE","HADeviceTracker::TrackerState::StateNotHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE","HADeviceTracker::TrackerState::StateUnknown"],[8,5,1,"_CPPv4N15HADeviceTracker13_currentStateE","HADeviceTracker::_currentState"],[8,5,1,"_CPPv4N15HADeviceTracker5_iconE","HADeviceTracker::_icon"],[8,5,1,"_CPPv4N15HADeviceTracker11_sourceTypeE","HADeviceTracker::_sourceType"],[8,3,1,"_CPPv4N15HADeviceTracker15buildSerializerEv","HADeviceTracker::buildSerializer"],[8,3,1,"_CPPv4NK15HADeviceTracker21getSourceTypePropertyEv","HADeviceTracker::getSourceTypeProperty"],[8,3,1,"_CPPv4NK15HADeviceTracker8getStateEv","HADeviceTracker::getState"],[8,3,1,"_CPPv4N15HADeviceTracker15onMqttConnectedEv","HADeviceTracker::onMqttConnected"],[8,3,1,"_CPPv4N15HADeviceTracker12publishStateE12TrackerState","HADeviceTracker::publishState"],[8,4,1,"_CPPv4N15HADeviceTracker12publishStateE12TrackerState","HADeviceTracker::publishState::state"],[8,3,1,"_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState","HADeviceTracker::setCurrentState"],[8,4,1,"_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState","HADeviceTracker::setCurrentState::state"],[8,3,1,"_CPPv4N15HADeviceTracker7setIconEPKc","HADeviceTracker::setIcon"],[8,4,1,"_CPPv4N15HADeviceTracker7setIconEPKc","HADeviceTracker::setIcon::icon"],[8,3,1,"_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType","HADeviceTracker::setSourceType"],[8,4,1,"_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType","HADeviceTracker::setSourceType::type"],[8,3,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState"],[8,4,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState::force"],[8,4,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState::state"],[9,0,1,"_CPPv415HADeviceTrigger","HADeviceTrigger"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE","HADeviceTrigger::Button1Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE","HADeviceTrigger::Button2Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE","HADeviceTrigger::Button3Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE","HADeviceTrigger::Button4Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE","HADeviceTrigger::Button5Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE","HADeviceTrigger::Button6Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE","HADeviceTrigger::ButtonDoublePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE","HADeviceTrigger::ButtonLongPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE","HADeviceTrigger::ButtonLongReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE","HADeviceTrigger::ButtonQuadruplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE","HADeviceTrigger::ButtonQuintuplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE","HADeviceTrigger::ButtonShortPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE","HADeviceTrigger::ButtonShortReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE","HADeviceTrigger::ButtonTriplePressType"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger::type"],[9,1,1,"_CPPv4N15HADeviceTrigger14TriggerSubtypeE","HADeviceTrigger::TriggerSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE","HADeviceTrigger::TriggerSubtype::Button1Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE","HADeviceTrigger::TriggerSubtype::Button2Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE","HADeviceTrigger::TriggerSubtype::Button3Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE","HADeviceTrigger::TriggerSubtype::Button4Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE","HADeviceTrigger::TriggerSubtype::Button5Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE","HADeviceTrigger::TriggerSubtype::Button6Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE","HADeviceTrigger::TriggerSubtype::TurnOffSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE","HADeviceTrigger::TriggerSubtype::TurnOnSubtype"],[9,1,1,"_CPPv4N15HADeviceTrigger11TriggerTypeE","HADeviceTrigger::TriggerType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE","HADeviceTrigger::TriggerType::ButtonDoublePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE","HADeviceTrigger::TriggerType::ButtonLongPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE","HADeviceTrigger::TriggerType::ButtonLongReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE","HADeviceTrigger::TriggerType::ButtonQuadruplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE","HADeviceTrigger::TriggerType::ButtonQuintuplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE","HADeviceTrigger::TriggerType::ButtonShortPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE","HADeviceTrigger::TriggerType::ButtonShortReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE","HADeviceTrigger::TriggerType::ButtonTriplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE","HADeviceTrigger::TurnOffSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE","HADeviceTrigger::TurnOnSubtype"],[9,5,1,"_CPPv4N15HADeviceTrigger17_isProgmemSubtypeE","HADeviceTrigger::_isProgmemSubtype"],[9,5,1,"_CPPv4N15HADeviceTrigger14_isProgmemTypeE","HADeviceTrigger::_isProgmemType"],[9,5,1,"_CPPv4N15HADeviceTrigger8_subtypeE","HADeviceTrigger::_subtype"],[9,5,1,"_CPPv4N15HADeviceTrigger5_typeE","HADeviceTrigger::_type"],[9,3,1,"_CPPv4N15HADeviceTrigger15buildSerializerEv","HADeviceTrigger::buildSerializer"],[9,3,1,"_CPPv4N15HADeviceTrigger13buildUniqueIdEv","HADeviceTrigger::buildUniqueId"],[9,3,1,"_CPPv4NK15HADeviceTrigger15calculateIdSizeEv","HADeviceTrigger::calculateIdSize"],[9,3,1,"_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype","HADeviceTrigger::determineProgmemSubtype"],[9,4,1,"_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype","HADeviceTrigger::determineProgmemSubtype::subtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType","HADeviceTrigger::determineProgmemType"],[9,4,1,"_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType","HADeviceTrigger::determineProgmemType::type"],[9,3,1,"_CPPv4NK15HADeviceTrigger10getSubtypeEv","HADeviceTrigger::getSubtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger7getTypeEv","HADeviceTrigger::getType"],[9,3,1,"_CPPv4NK15HADeviceTrigger16isProgmemSubtypeEv","HADeviceTrigger::isProgmemSubtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger13isProgmemTypeEv","HADeviceTrigger::isProgmemType"],[9,3,1,"_CPPv4N15HADeviceTrigger15onMqttConnectedEv","HADeviceTrigger::onMqttConnected"],[9,3,1,"_CPPv4N15HADeviceTrigger7triggerEv","HADeviceTrigger::trigger"],[9,3,1,"_CPPv4N15HADeviceTriggerD0Ev","HADeviceTrigger::~HADeviceTrigger"],[10,0,1,"_CPPv45HAFan","HAFan"],[10,2,1,"_CPPv4N5HAFan8Features15DefaultFeaturesE","HAFan::DefaultFeatures"],[10,1,1,"_CPPv4N5HAFan8FeaturesE","HAFan::Features"],[10,2,1,"_CPPv4N5HAFan8Features15DefaultFeaturesE","HAFan::Features::DefaultFeatures"],[10,2,1,"_CPPv4N5HAFan8Features13SpeedsFeatureE","HAFan::Features::SpeedsFeature"],[10,3,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan"],[10,4,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan::features"],[10,4,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan::uniqueId"],[10,2,1,"_CPPv4N5HAFan8Features13SpeedsFeatureE","HAFan::SpeedsFeature"],[10,5,1,"_CPPv4N5HAFan13_currentSpeedE","HAFan::_currentSpeed"],[10,5,1,"_CPPv4N5HAFan13_currentStateE","HAFan::_currentState"],[10,5,1,"_CPPv4N5HAFan9_featuresE","HAFan::_features"],[10,5,1,"_CPPv4N5HAFan5_iconE","HAFan::_icon"],[10,5,1,"_CPPv4N5HAFan11_optimisticE","HAFan::_optimistic"],[10,5,1,"_CPPv4N5HAFan7_retainE","HAFan::_retain"],[10,5,1,"_CPPv4N5HAFan14_speedCallbackE","HAFan::_speedCallback"],[10,5,1,"_CPPv4N5HAFan14_speedRangeMaxE","HAFan::_speedRangeMax"],[10,5,1,"_CPPv4N5HAFan14_speedRangeMinE","HAFan::_speedRangeMin"],[10,5,1,"_CPPv4N5HAFan14_stateCallbackE","HAFan::_stateCallback"],[10,3,1,"_CPPv4N5HAFan15buildSerializerEv","HAFan::buildSerializer"],[10,3,1,"_CPPv4NK5HAFan15getCurrentSpeedEv","HAFan::getCurrentSpeed"],[10,3,1,"_CPPv4NK5HAFan15getCurrentStateEv","HAFan::getCurrentState"],[10,3,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand"],[10,4,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand::cmd"],[10,4,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand::length"],[10,3,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand"],[10,4,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand::cmd"],[10,4,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand::length"],[10,3,1,"_CPPv4N5HAFan15onMqttConnectedEv","HAFan::onMqttConnected"],[10,3,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::length"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::payload"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::topic"],[10,3,1,"_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE","HAFan::onSpeedCommand"],[10,4,1,"_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE","HAFan::onSpeedCommand::callback"],[10,3,1,"_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE","HAFan::onStateCommand"],[10,4,1,"_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE","HAFan::onStateCommand::callback"],[10,3,1,"_CPPv4N5HAFan12publishSpeedEK8uint16_t","HAFan::publishSpeed"],[10,4,1,"_CPPv4N5HAFan12publishSpeedEK8uint16_t","HAFan::publishSpeed::speed"],[10,3,1,"_CPPv4N5HAFan12publishStateEKb","HAFan::publishState"],[10,4,1,"_CPPv4N5HAFan12publishStateEKb","HAFan::publishState::state"],[10,3,1,"_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t","HAFan::setCurrentSpeed"],[10,4,1,"_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t","HAFan::setCurrentSpeed::speed"],[10,3,1,"_CPPv4N5HAFan15setCurrentStateEKb","HAFan::setCurrentState"],[10,4,1,"_CPPv4N5HAFan15setCurrentStateEKb","HAFan::setCurrentState::state"],[10,3,1,"_CPPv4N5HAFan7setIconEPKc","HAFan::setIcon"],[10,4,1,"_CPPv4N5HAFan7setIconEPKc","HAFan::setIcon::icon"],[10,3,1,"_CPPv4N5HAFan13setOptimisticEKb","HAFan::setOptimistic"],[10,4,1,"_CPPv4N5HAFan13setOptimisticEKb","HAFan::setOptimistic::optimistic"],[10,3,1,"_CPPv4N5HAFan9setRetainEKb","HAFan::setRetain"],[10,4,1,"_CPPv4N5HAFan9setRetainEKb","HAFan::setRetain::retain"],[10,3,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed"],[10,4,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed::force"],[10,4,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed::speed"],[10,3,1,"_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t","HAFan::setSpeedRangeMax"],[10,4,1,"_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t","HAFan::setSpeedRangeMax::max"],[10,3,1,"_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t","HAFan::setSpeedRangeMin"],[10,4,1,"_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t","HAFan::setSpeedRangeMin::min"],[10,3,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState"],[10,4,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState::force"],[10,4,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState::state"],[10,3,1,"_CPPv4N5HAFan7turnOffEv","HAFan::turnOff"],[10,3,1,"_CPPv4N5HAFan6turnOnEv","HAFan::turnOn"],[11,0,1,"_CPPv46HAHVAC","HAHVAC"],[11,1,1,"_CPPv4N6HAHVAC6ActionE","HAHVAC::Action"],[11,2,1,"_CPPv4N6HAHVAC6Action13CoolingActionE","HAHVAC::Action::CoolingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action12DryingActionE","HAHVAC::Action::DryingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action9FanActionE","HAHVAC::Action::FanAction"],[11,2,1,"_CPPv4N6HAHVAC6Action13HeatingActionE","HAHVAC::Action::HeatingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action10IdleActionE","HAHVAC::Action::IdleAction"],[11,2,1,"_CPPv4N6HAHVAC6Action9OffActionE","HAHVAC::Action::OffAction"],[11,2,1,"_CPPv4N6HAHVAC6Action13UnknownActionE","HAHVAC::Action::UnknownAction"],[11,2,1,"_CPPv4N6HAHVAC8Features13ActionFeatureE","HAHVAC::ActionFeature"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11AutoFanModeE","HAHVAC::AutoFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8AutoModeE","HAHVAC::AutoMode"],[11,2,1,"_CPPv4N6HAHVAC8Features17AuxHeatingFeatureE","HAHVAC::AuxHeatingFeature"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11CelsiusUnitE","HAHVAC::CelsiusUnit"],[11,2,1,"_CPPv4N6HAHVAC4Mode8CoolModeE","HAHVAC::CoolMode"],[11,2,1,"_CPPv4N6HAHVAC6Action13CoolingActionE","HAHVAC::CoolingAction"],[11,5,1,"_CPPv4N6HAHVAC15DefaultFanModesE","HAHVAC::DefaultFanModes"],[11,2,1,"_CPPv4N6HAHVAC8Features15DefaultFeaturesE","HAHVAC::DefaultFeatures"],[11,5,1,"_CPPv4N6HAHVAC12DefaultModesE","HAHVAC::DefaultModes"],[11,5,1,"_CPPv4N6HAHVAC17DefaultSwingModesE","HAHVAC::DefaultSwingModes"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11DefaultUnitE","HAHVAC::DefaultUnit"],[11,2,1,"_CPPv4N6HAHVAC4Mode7DryModeE","HAHVAC::DryMode"],[11,2,1,"_CPPv4N6HAHVAC6Action12DryingActionE","HAHVAC::DryingAction"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit14FahrenheitUnitE","HAHVAC::FahrenheitUnit"],[11,2,1,"_CPPv4N6HAHVAC6Action9FanActionE","HAHVAC::FanAction"],[11,2,1,"_CPPv4N6HAHVAC8Features10FanFeatureE","HAHVAC::FanFeature"],[11,1,1,"_CPPv4N6HAHVAC7FanModeE","HAHVAC::FanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11AutoFanModeE","HAHVAC::FanMode::AutoFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11HighFanModeE","HAHVAC::FanMode::HighFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode10LowFanModeE","HAHVAC::FanMode::LowFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode13MediumFanModeE","HAHVAC::FanMode::MediumFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode14UnknownFanModeE","HAHVAC::FanMode::UnknownFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11FanOnlyModeE","HAHVAC::FanOnlyMode"],[11,1,1,"_CPPv4N6HAHVAC8FeaturesE","HAHVAC::Features"],[11,2,1,"_CPPv4N6HAHVAC8Features13ActionFeatureE","HAHVAC::Features::ActionFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features17AuxHeatingFeatureE","HAHVAC::Features::AuxHeatingFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features15DefaultFeaturesE","HAHVAC::Features::DefaultFeatures"],[11,2,1,"_CPPv4N6HAHVAC8Features10FanFeatureE","HAHVAC::Features::FanFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12ModesFeatureE","HAHVAC::Features::ModesFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12PowerFeatureE","HAHVAC::Features::PowerFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12SwingFeatureE","HAHVAC::Features::SwingFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features24TargetTemperatureFeatureE","HAHVAC::Features::TargetTemperatureFeature"],[11,3,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::features"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::precision"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::uniqueId"],[11,2,1,"_CPPv4N6HAHVAC4Mode8HeatModeE","HAHVAC::HeatMode"],[11,2,1,"_CPPv4N6HAHVAC6Action13HeatingActionE","HAHVAC::HeatingAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11HighFanModeE","HAHVAC::HighFanMode"],[11,2,1,"_CPPv4N6HAHVAC6Action10IdleActionE","HAHVAC::IdleAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode10LowFanModeE","HAHVAC::LowFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode13MediumFanModeE","HAHVAC::MediumFanMode"],[11,1,1,"_CPPv4N6HAHVAC4ModeE","HAHVAC::Mode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8AutoModeE","HAHVAC::Mode::AutoMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8CoolModeE","HAHVAC::Mode::CoolMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode7DryModeE","HAHVAC::Mode::DryMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11FanOnlyModeE","HAHVAC::Mode::FanOnlyMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8HeatModeE","HAHVAC::Mode::HeatMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode7OffModeE","HAHVAC::Mode::OffMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11UnknownModeE","HAHVAC::Mode::UnknownMode"],[11,2,1,"_CPPv4N6HAHVAC8Features12ModesFeatureE","HAHVAC::ModesFeature"],[11,2,1,"_CPPv4N6HAHVAC6Action9OffActionE","HAHVAC::OffAction"],[11,2,1,"_CPPv4N6HAHVAC4Mode7OffModeE","HAHVAC::OffMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode12OffSwingModeE","HAHVAC::OffSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode11OnSwingModeE","HAHVAC::OnSwingMode"],[11,2,1,"_CPPv4N6HAHVAC8Features12PowerFeatureE","HAHVAC::PowerFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12SwingFeatureE","HAHVAC::SwingFeature"],[11,1,1,"_CPPv4N6HAHVAC9SwingModeE","HAHVAC::SwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode12OffSwingModeE","HAHVAC::SwingMode::OffSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode11OnSwingModeE","HAHVAC::SwingMode::OnSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode16UnknownSwingModeE","HAHVAC::SwingMode::UnknownSwingMode"],[11,2,1,"_CPPv4N6HAHVAC8Features24TargetTemperatureFeatureE","HAHVAC::TargetTemperatureFeature"],[11,1,1,"_CPPv4N6HAHVAC15TemperatureUnitE","HAHVAC::TemperatureUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11CelsiusUnitE","HAHVAC::TemperatureUnit::CelsiusUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11DefaultUnitE","HAHVAC::TemperatureUnit::DefaultUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit14FahrenheitUnitE","HAHVAC::TemperatureUnit::FahrenheitUnit"],[11,2,1,"_CPPv4N6HAHVAC6Action13UnknownActionE","HAHVAC::UnknownAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode14UnknownFanModeE","HAHVAC::UnknownFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11UnknownModeE","HAHVAC::UnknownMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode16UnknownSwingModeE","HAHVAC::UnknownSwingMode"],[11,5,1,"_CPPv4N6HAHVAC7_actionE","HAHVAC::_action"],[11,5,1,"_CPPv4N6HAHVAC12_auxCallbackE","HAHVAC::_auxCallback"],[11,5,1,"_CPPv4N6HAHVAC9_auxStateE","HAHVAC::_auxState"],[11,5,1,"_CPPv4N6HAHVAC19_currentTemperatureE","HAHVAC::_currentTemperature"],[11,5,1,"_CPPv4N6HAHVAC8_fanModeE","HAHVAC::_fanMode"],[11,5,1,"_CPPv4N6HAHVAC16_fanModeCallbackE","HAHVAC::_fanModeCallback"],[11,5,1,"_CPPv4N6HAHVAC9_fanModesE","HAHVAC::_fanModes"],[11,5,1,"_CPPv4N6HAHVAC19_fanModesSerializerE","HAHVAC::_fanModesSerializer"],[11,5,1,"_CPPv4N6HAHVAC9_featuresE","HAHVAC::_features"],[11,5,1,"_CPPv4N6HAHVAC5_iconE","HAHVAC::_icon"],[11,5,1,"_CPPv4N6HAHVAC8_maxTempE","HAHVAC::_maxTemp"],[11,5,1,"_CPPv4N6HAHVAC8_minTempE","HAHVAC::_minTemp"],[11,5,1,"_CPPv4N6HAHVAC5_modeE","HAHVAC::_mode"],[11,5,1,"_CPPv4N6HAHVAC13_modeCallbackE","HAHVAC::_modeCallback"],[11,5,1,"_CPPv4N6HAHVAC6_modesE","HAHVAC::_modes"],[11,5,1,"_CPPv4N6HAHVAC16_modesSerializerE","HAHVAC::_modesSerializer"],[11,5,1,"_CPPv4N6HAHVAC14_powerCallbackE","HAHVAC::_powerCallback"],[11,5,1,"_CPPv4N6HAHVAC10_precisionE","HAHVAC::_precision"],[11,5,1,"_CPPv4N6HAHVAC7_retainE","HAHVAC::_retain"],[11,5,1,"_CPPv4N6HAHVAC10_swingModeE","HAHVAC::_swingMode"],[11,5,1,"_CPPv4N6HAHVAC18_swingModeCallbackE","HAHVAC::_swingModeCallback"],[11,5,1,"_CPPv4N6HAHVAC11_swingModesE","HAHVAC::_swingModes"],[11,5,1,"_CPPv4N6HAHVAC21_swingModesSerializerE","HAHVAC::_swingModesSerializer"],[11,5,1,"_CPPv4N6HAHVAC18_targetTemperatureE","HAHVAC::_targetTemperature"],[11,5,1,"_CPPv4N6HAHVAC26_targetTemperatureCallbackE","HAHVAC::_targetTemperatureCallback"],[11,5,1,"_CPPv4N6HAHVAC9_tempStepE","HAHVAC::_tempStep"],[11,5,1,"_CPPv4N6HAHVAC16_temperatureUnitE","HAHVAC::_temperatureUnit"],[11,3,1,"_CPPv4N6HAHVAC15buildSerializerEv","HAHVAC::buildSerializer"],[11,3,1,"_CPPv4N6HAHVAC27getCommandWithFloatTemplateEv","HAHVAC::getCommandWithFloatTemplate"],[11,3,1,"_CPPv4NK6HAHVAC16getCurrentActionEv","HAHVAC::getCurrentAction"],[11,3,1,"_CPPv4NK6HAHVAC18getCurrentAuxStateEv","HAHVAC::getCurrentAuxState"],[11,3,1,"_CPPv4NK6HAHVAC17getCurrentFanModeEv","HAHVAC::getCurrentFanMode"],[11,3,1,"_CPPv4NK6HAHVAC14getCurrentModeEv","HAHVAC::getCurrentMode"],[11,3,1,"_CPPv4NK6HAHVAC19getCurrentSwingModeEv","HAHVAC::getCurrentSwingMode"],[11,3,1,"_CPPv4NK6HAHVAC27getCurrentTargetTemperatureEv","HAHVAC::getCurrentTargetTemperature"],[11,3,1,"_CPPv4NK6HAHVAC21getCurrentTemperatureEv","HAHVAC::getCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand"],[11,4,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand::length"],[11,3,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand"],[11,4,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand"],[11,4,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand"],[11,4,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand::length"],[11,3,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand"],[11,4,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand"],[11,4,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand::length"],[11,3,1,"_CPPv4N6HAHVAC17onAuxStateCommandEPFvbP6HAHVACE","HAHVAC::onAuxStateCommand"],[11,4,1,"_CPPv4N6HAHVAC17onAuxStateCommandEPFvbP6HAHVACE","HAHVAC::onAuxStateCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC16onFanModeCommandEPFv7FanModeP6HAHVACE","HAHVAC::onFanModeCommand"],[11,4,1,"_CPPv4N6HAHVAC16onFanModeCommandEPFv7FanModeP6HAHVACE","HAHVAC::onFanModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC13onModeCommandEPFv4ModeP6HAHVACE","HAHVAC::onModeCommand"],[11,4,1,"_CPPv4N6HAHVAC13onModeCommandEPFv4ModeP6HAHVACE","HAHVAC::onModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC15onMqttConnectedEv","HAHVAC::onMqttConnected"],[11,3,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::length"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::payload"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::topic"],[11,3,1,"_CPPv4N6HAHVAC14onPowerCommandEPFvbP6HAHVACE","HAHVAC::onPowerCommand"],[11,4,1,"_CPPv4N6HAHVAC14onPowerCommandEPFvbP6HAHVACE","HAHVAC::onPowerCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC18onSwingModeCommandEPFv9SwingModeP6HAHVACE","HAHVAC::onSwingModeCommand"],[11,4,1,"_CPPv4N6HAHVAC18onSwingModeCommandEPFv9SwingModeP6HAHVACE","HAHVAC::onSwingModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC26onTargetTemperatureCommandEPFv9HANumericP6HAHVACE","HAHVAC::onTargetTemperatureCommand"],[11,4,1,"_CPPv4N6HAHVAC26onTargetTemperatureCommandEPFv9HANumericP6HAHVACE","HAHVAC::onTargetTemperatureCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC13publishActionEK6Action","HAHVAC::publishAction"],[11,4,1,"_CPPv4N6HAHVAC13publishActionEK6Action","HAHVAC::publishAction::action"],[11,3,1,"_CPPv4N6HAHVAC15publishAuxStateEKb","HAHVAC::publishAuxState"],[11,4,1,"_CPPv4N6HAHVAC15publishAuxStateEKb","HAHVAC::publishAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC25publishCurrentTemperatureERK9HANumeric","HAHVAC::publishCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC25publishCurrentTemperatureERK9HANumeric","HAHVAC::publishCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC14publishFanModeEK7FanMode","HAHVAC::publishFanMode"],[11,4,1,"_CPPv4N6HAHVAC14publishFanModeEK7FanMode","HAHVAC::publishFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC11publishModeEK4Mode","HAHVAC::publishMode"],[11,4,1,"_CPPv4N6HAHVAC11publishModeEK4Mode","HAHVAC::publishMode::mode"],[11,3,1,"_CPPv4N6HAHVAC16publishSwingModeEK9SwingMode","HAHVAC::publishSwingMode"],[11,4,1,"_CPPv4N6HAHVAC16publishSwingModeEK9SwingMode","HAHVAC::publishSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC24publishTargetTemperatureERK9HANumeric","HAHVAC::publishTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC24publishTargetTemperatureERK9HANumeric","HAHVAC::publishTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction"],[11,4,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction::action"],[11,4,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction::force"],[11,3,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState"],[11,4,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState::force"],[11,4,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC16setCurrentActionEK6Action","HAHVAC::setCurrentAction"],[11,4,1,"_CPPv4N6HAHVAC16setCurrentActionEK6Action","HAHVAC::setCurrentAction::action"],[11,3,1,"_CPPv4N6HAHVAC18setCurrentAuxStateEKb","HAHVAC::setCurrentAuxState"],[11,4,1,"_CPPv4N6HAHVAC18setCurrentAuxStateEKb","HAHVAC::setCurrentAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK6int8_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int16_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int32_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7uint8_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint16_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint32_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEKf","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureERK9HANumeric","HAHVAC::setCurrentCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK6int8_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int16_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int32_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7uint8_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint16_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint32_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEKf","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureERK9HANumeric","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC17setCurrentFanModeEK7FanMode","HAHVAC::setCurrentFanMode"],[11,4,1,"_CPPv4N6HAHVAC17setCurrentFanModeEK7FanMode","HAHVAC::setCurrentFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC14setCurrentModeEK4Mode","HAHVAC::setCurrentMode"],[11,4,1,"_CPPv4N6HAHVAC14setCurrentModeEK4Mode","HAHVAC::setCurrentMode::mode"],[11,3,1,"_CPPv4N6HAHVAC19setCurrentSwingModeEK9SwingMode","HAHVAC::setCurrentSwingMode"],[11,4,1,"_CPPv4N6HAHVAC19setCurrentSwingModeEK9SwingMode","HAHVAC::setCurrentSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK6int8_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int16_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int32_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7uint8_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint16_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint32_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEKf","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureERK9HANumeric","HAHVAC::setCurrentTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK6int8_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int16_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int32_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7uint8_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint16_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint32_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEKf","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureERK9HANumeric","HAHVAC::setCurrentTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode"],[11,4,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode::force"],[11,4,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC11setFanModesEK7uint8_t","HAHVAC::setFanModes"],[11,4,1,"_CPPv4N6HAHVAC11setFanModesEK7uint8_t","HAHVAC::setFanModes::modes"],[11,3,1,"_CPPv4N6HAHVAC7setIconEPKc","HAHVAC::setIcon"],[11,4,1,"_CPPv4N6HAHVAC7setIconEPKc","HAHVAC::setIcon::icon"],[11,3,1,"_CPPv4N6HAHVAC10setMaxTempEKf","HAHVAC::setMaxTemp"],[11,4,1,"_CPPv4N6HAHVAC10setMaxTempEKf","HAHVAC::setMaxTemp::max"],[11,3,1,"_CPPv4N6HAHVAC10setMinTempEKf","HAHVAC::setMinTemp"],[11,4,1,"_CPPv4N6HAHVAC10setMinTempEKf","HAHVAC::setMinTemp::min"],[11,3,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode"],[11,4,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode::force"],[11,4,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode::mode"],[11,3,1,"_CPPv4N6HAHVAC8setModesEK7uint8_t","HAHVAC::setModes"],[11,4,1,"_CPPv4N6HAHVAC8setModesEK7uint8_t","HAHVAC::setModes::modes"],[11,3,1,"_CPPv4N6HAHVAC9setRetainEKb","HAHVAC::setRetain"],[11,4,1,"_CPPv4N6HAHVAC9setRetainEKb","HAHVAC::setRetain::retain"],[11,3,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode"],[11,4,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode::force"],[11,4,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC13setSwingModesEK7uint8_t","HAHVAC::setSwingModes"],[11,4,1,"_CPPv4N6HAHVAC13setSwingModesEK7uint8_t","HAHVAC::setSwingModes::modes"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC11setTempStepEKf","HAHVAC::setTempStep"],[11,4,1,"_CPPv4N6HAHVAC11setTempStepEKf","HAHVAC::setTempStep::step"],[11,3,1,"_CPPv4N6HAHVAC18setTemperatureUnitE15TemperatureUnit","HAHVAC::setTemperatureUnit"],[11,4,1,"_CPPv4N6HAHVAC18setTemperatureUnitE15TemperatureUnit","HAHVAC::setTemperatureUnit::unit"],[11,3,1,"_CPPv4N6HAHVACD0Ev","HAHVAC::~HAHVAC"],[12,0,1,"_CPPv47HALight","HALight"],[12,2,1,"_CPPv4N7HALight8Features17BrightnessFeatureE","HALight::BrightnessFeature"],[12,2,1,"_CPPv4N7HALight8Features23ColorTemperatureFeatureE","HALight::ColorTemperatureFeature"],[12,2,1,"_CPPv4N7HALight8Features15DefaultFeaturesE","HALight::DefaultFeatures"],[12,1,1,"_CPPv4N7HALight8FeaturesE","HALight::Features"],[12,2,1,"_CPPv4N7HALight8Features17BrightnessFeatureE","HALight::Features::BrightnessFeature"],[12,2,1,"_CPPv4N7HALight8Features23ColorTemperatureFeatureE","HALight::Features::ColorTemperatureFeature"],[12,2,1,"_CPPv4N7HALight8Features15DefaultFeaturesE","HALight::Features::DefaultFeatures"],[12,2,1,"_CPPv4N7HALight8Features10RGBFeatureE","HALight::Features::RGBFeature"],[12,3,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight"],[12,4,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight::features"],[12,4,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight::uniqueId"],[12,0,1,"_CPPv4N7HALight8RGBColorE","HALight::RGBColor"],[12,3,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor"],[12,3,1,"_CPPv4N7HALight8RGBColor8RGBColorEv","HALight::RGBColor::RGBColor"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::b"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::g"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::r"],[12,5,1,"_CPPv4N7HALight8RGBColor4blueE","HALight::RGBColor::blue"],[12,3,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer"],[12,4,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer::data"],[12,4,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer::length"],[12,5,1,"_CPPv4N7HALight8RGBColor5greenE","HALight::RGBColor::green"],[12,5,1,"_CPPv4N7HALight8RGBColor5isSetE","HALight::RGBColor::isSet"],[12,3,1,"_CPPv4NK7HALight8RGBColorneERK8RGBColor","HALight::RGBColor::operator!="],[12,4,1,"_CPPv4NK7HALight8RGBColorneERK8RGBColor","HALight::RGBColor::operator!=::a"],[12,3,1,"_CPPv4N7HALight8RGBColoraSERK8RGBColor","HALight::RGBColor::operator="],[12,4,1,"_CPPv4N7HALight8RGBColoraSERK8RGBColor","HALight::RGBColor::operator=::a"],[12,3,1,"_CPPv4NK7HALight8RGBColoreqERK8RGBColor","HALight::RGBColor::operator=="],[12,4,1,"_CPPv4NK7HALight8RGBColoreqERK8RGBColor","HALight::RGBColor::operator==::a"],[12,5,1,"_CPPv4N7HALight8RGBColor3redE","HALight::RGBColor::red"],[12,2,1,"_CPPv4N7HALight8Features10RGBFeatureE","HALight::RGBFeature"],[12,5,1,"_CPPv4N7HALight18RGBStringMaxLengthE","HALight::RGBStringMaxLength"],[12,5,1,"_CPPv4N7HALight19_brightnessCallbackE","HALight::_brightnessCallback"],[12,5,1,"_CPPv4N7HALight16_brightnessScaleE","HALight::_brightnessScale"],[12,5,1,"_CPPv4N7HALight25_colorTemperatureCallbackE","HALight::_colorTemperatureCallback"],[12,5,1,"_CPPv4N7HALight18_currentBrightnessE","HALight::_currentBrightness"],[12,5,1,"_CPPv4N7HALight24_currentColorTemperatureE","HALight::_currentColorTemperature"],[12,5,1,"_CPPv4N7HALight16_currentRGBColorE","HALight::_currentRGBColor"],[12,5,1,"_CPPv4N7HALight13_currentStateE","HALight::_currentState"],[12,5,1,"_CPPv4N7HALight9_featuresE","HALight::_features"],[12,5,1,"_CPPv4N7HALight5_iconE","HALight::_icon"],[12,5,1,"_CPPv4N7HALight10_maxMiredsE","HALight::_maxMireds"],[12,5,1,"_CPPv4N7HALight10_minMiredsE","HALight::_minMireds"],[12,5,1,"_CPPv4N7HALight11_optimisticE","HALight::_optimistic"],[12,5,1,"_CPPv4N7HALight7_retainE","HALight::_retain"],[12,5,1,"_CPPv4N7HALight17_rgbColorCallbackE","HALight::_rgbColorCallback"],[12,5,1,"_CPPv4N7HALight14_stateCallbackE","HALight::_stateCallback"],[12,3,1,"_CPPv4N7HALight15buildSerializerEv","HALight::buildSerializer"],[12,3,1,"_CPPv4NK7HALight20getCurrentBrightnessEv","HALight::getCurrentBrightness"],[12,3,1,"_CPPv4NK7HALight26getCurrentColorTemperatureEv","HALight::getCurrentColorTemperature"],[12,3,1,"_CPPv4NK7HALight18getCurrentRGBColorEv","HALight::getCurrentRGBColor"],[12,3,1,"_CPPv4NK7HALight15getCurrentStateEv","HALight::getCurrentState"],[12,3,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand"],[12,4,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand::cmd"],[12,4,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand::length"],[12,3,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand"],[12,4,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand::cmd"],[12,4,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand::length"],[12,3,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand"],[12,4,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand::cmd"],[12,4,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand::length"],[12,3,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand"],[12,4,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand::cmd"],[12,4,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand::length"],[12,3,1,"_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE","HALight::onBrightnessCommand"],[12,4,1,"_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE","HALight::onBrightnessCommand::callback"],[12,3,1,"_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE","HALight::onColorTemperatureCommand"],[12,4,1,"_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE","HALight::onColorTemperatureCommand::callback"],[12,3,1,"_CPPv4N7HALight15onMqttConnectedEv","HALight::onMqttConnected"],[12,3,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::length"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::payload"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::topic"],[12,3,1,"_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE","HALight::onRGBColorCommand"],[12,4,1,"_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE","HALight::onRGBColorCommand::callback"],[12,3,1,"_CPPv4N7HALight14onStateCommandEPFvbP7HALightE","HALight::onStateCommand"],[12,4,1,"_CPPv4N7HALight14onStateCommandEPFvbP7HALightE","HALight::onStateCommand::callback"],[12,3,1,"_CPPv4N7HALight17publishBrightnessEK7uint8_t","HALight::publishBrightness"],[12,4,1,"_CPPv4N7HALight17publishBrightnessEK7uint8_t","HALight::publishBrightness::brightness"],[12,3,1,"_CPPv4N7HALight23publishColorTemperatureEK8uint16_t","HALight::publishColorTemperature"],[12,4,1,"_CPPv4N7HALight23publishColorTemperatureEK8uint16_t","HALight::publishColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight15publishRGBColorERK8RGBColor","HALight::publishRGBColor"],[12,4,1,"_CPPv4N7HALight15publishRGBColorERK8RGBColor","HALight::publishRGBColor::color"],[12,3,1,"_CPPv4N7HALight12publishStateEKb","HALight::publishState"],[12,4,1,"_CPPv4N7HALight12publishStateEKb","HALight::publishState::state"],[12,3,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness"],[12,4,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness::brightness"],[12,4,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness::force"],[12,3,1,"_CPPv4N7HALight18setBrightnessScaleEK7uint8_t","HALight::setBrightnessScale"],[12,4,1,"_CPPv4N7HALight18setBrightnessScaleEK7uint8_t","HALight::setBrightnessScale::scale"],[12,3,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature"],[12,4,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature::force"],[12,4,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t","HALight::setCurrentBrightness"],[12,4,1,"_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t","HALight::setCurrentBrightness::brightness"],[12,3,1,"_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t","HALight::setCurrentColorTemperature"],[12,4,1,"_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t","HALight::setCurrentColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor","HALight::setCurrentRGBColor"],[12,4,1,"_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor","HALight::setCurrentRGBColor::color"],[12,3,1,"_CPPv4N7HALight15setCurrentStateEKb","HALight::setCurrentState"],[12,4,1,"_CPPv4N7HALight15setCurrentStateEKb","HALight::setCurrentState::state"],[12,3,1,"_CPPv4N7HALight7setIconEPKc","HALight::setIcon"],[12,4,1,"_CPPv4N7HALight7setIconEPKc","HALight::setIcon::icon"],[12,3,1,"_CPPv4N7HALight12setMaxMiredsEK8uint16_t","HALight::setMaxMireds"],[12,4,1,"_CPPv4N7HALight12setMaxMiredsEK8uint16_t","HALight::setMaxMireds::mireds"],[12,3,1,"_CPPv4N7HALight12setMinMiredsEK8uint16_t","HALight::setMinMireds"],[12,4,1,"_CPPv4N7HALight12setMinMiredsEK8uint16_t","HALight::setMinMireds::mireds"],[12,3,1,"_CPPv4N7HALight13setOptimisticEKb","HALight::setOptimistic"],[12,4,1,"_CPPv4N7HALight13setOptimisticEKb","HALight::setOptimistic::optimistic"],[12,3,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor"],[12,4,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor::color"],[12,4,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor::force"],[12,3,1,"_CPPv4N7HALight9setRetainEKb","HALight::setRetain"],[12,4,1,"_CPPv4N7HALight9setRetainEKb","HALight::setRetain::retain"],[12,3,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState"],[12,4,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState::force"],[12,4,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState::state"],[12,3,1,"_CPPv4N7HALight7turnOffEv","HALight::turnOff"],[12,3,1,"_CPPv4N7HALight6turnOnEv","HALight::turnOn"],[13,0,1,"_CPPv46HALock","HALock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandLockE","HALock::CommandLock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandOpenE","HALock::CommandOpen"],[13,2,1,"_CPPv4N6HALock11LockCommand13CommandUnlockE","HALock::CommandUnlock"],[13,3,1,"_CPPv4N6HALock6HALockEPKc","HALock::HALock"],[13,4,1,"_CPPv4N6HALock6HALockEPKc","HALock::HALock::uniqueId"],[13,1,1,"_CPPv4N6HALock11LockCommandE","HALock::LockCommand"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandLockE","HALock::LockCommand::CommandLock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandOpenE","HALock::LockCommand::CommandOpen"],[13,2,1,"_CPPv4N6HALock11LockCommand13CommandUnlockE","HALock::LockCommand::CommandUnlock"],[13,1,1,"_CPPv4N6HALock9LockStateE","HALock::LockState"],[13,2,1,"_CPPv4N6HALock9LockState11StateLockedE","HALock::LockState::StateLocked"],[13,2,1,"_CPPv4N6HALock9LockState12StateUnknownE","HALock::LockState::StateUnknown"],[13,2,1,"_CPPv4N6HALock9LockState13StateUnlockedE","HALock::LockState::StateUnlocked"],[13,2,1,"_CPPv4N6HALock9LockState11StateLockedE","HALock::StateLocked"],[13,2,1,"_CPPv4N6HALock9LockState12StateUnknownE","HALock::StateUnknown"],[13,2,1,"_CPPv4N6HALock9LockState13StateUnlockedE","HALock::StateUnlocked"],[13,5,1,"_CPPv4N6HALock16_commandCallbackE","HALock::_commandCallback"],[13,5,1,"_CPPv4N6HALock13_currentStateE","HALock::_currentState"],[13,5,1,"_CPPv4N6HALock5_iconE","HALock::_icon"],[13,5,1,"_CPPv4N6HALock11_optimisticE","HALock::_optimistic"],[13,5,1,"_CPPv4N6HALock7_retainE","HALock::_retain"],[13,3,1,"_CPPv4N6HALock15buildSerializerEv","HALock::buildSerializer"],[13,3,1,"_CPPv4NK6HALock15getCurrentStateEv","HALock::getCurrentState"],[13,3,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand"],[13,4,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand::cmd"],[13,4,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand::length"],[13,3,1,"_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE","HALock::onCommand"],[13,4,1,"_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE","HALock::onCommand::callback"],[13,3,1,"_CPPv4N6HALock15onMqttConnectedEv","HALock::onMqttConnected"],[13,3,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::length"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::payload"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::topic"],[13,3,1,"_CPPv4N6HALock12publishStateEK9LockState","HALock::publishState"],[13,4,1,"_CPPv4N6HALock12publishStateEK9LockState","HALock::publishState::state"],[13,3,1,"_CPPv4N6HALock15setCurrentStateEK9LockState","HALock::setCurrentState"],[13,4,1,"_CPPv4N6HALock15setCurrentStateEK9LockState","HALock::setCurrentState::state"],[13,3,1,"_CPPv4N6HALock7setIconEPKc","HALock::setIcon"],[13,4,1,"_CPPv4N6HALock7setIconEPKc","HALock::setIcon::icon"],[13,3,1,"_CPPv4N6HALock13setOptimisticEKb","HALock::setOptimistic"],[13,4,1,"_CPPv4N6HALock13setOptimisticEKb","HALock::setOptimistic::optimistic"],[13,3,1,"_CPPv4N6HALock9setRetainEKb","HALock::setRetain"],[13,4,1,"_CPPv4N6HALock9setRetainEKb","HALock::setRetain::retain"],[13,3,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState"],[13,4,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState::force"],[13,4,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState::state"],[1,0,1,"_CPPv46HAMqtt","HAMqtt"],[1,3,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::device"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::maxDevicesTypesNb"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::netClient"],[1,5,1,"_CPPv4N6HAMqtt17ReconnectIntervalE","HAMqtt::ReconnectInterval"],[1,5,1,"_CPPv4N6HAMqtt18_connectedCallbackE","HAMqtt::_connectedCallback"],[1,5,1,"_CPPv4N6HAMqtt11_dataPrefixE","HAMqtt::_dataPrefix"],[1,5,1,"_CPPv4N6HAMqtt7_deviceE","HAMqtt::_device"],[1,5,1,"_CPPv4N6HAMqtt13_devicesTypesE","HAMqtt::_devicesTypes"],[1,5,1,"_CPPv4N6HAMqtt15_devicesTypesNbE","HAMqtt::_devicesTypesNb"],[1,5,1,"_CPPv4N6HAMqtt16_discoveryPrefixE","HAMqtt::_discoveryPrefix"],[1,5,1,"_CPPv4N6HAMqtt12_initializedE","HAMqtt::_initialized"],[1,5,1,"_CPPv4N6HAMqtt9_instanceE","HAMqtt::_instance"],[1,5,1,"_CPPv4N6HAMqtt24_lastConnectionAttemptAtE","HAMqtt::_lastConnectionAttemptAt"],[1,5,1,"_CPPv4N6HAMqtt16_lastWillMessageE","HAMqtt::_lastWillMessage"],[1,5,1,"_CPPv4N6HAMqtt15_lastWillRetainE","HAMqtt::_lastWillRetain"],[1,5,1,"_CPPv4N6HAMqtt14_lastWillTopicE","HAMqtt::_lastWillTopic"],[1,5,1,"_CPPv4N6HAMqtt18_maxDevicesTypesNbE","HAMqtt::_maxDevicesTypesNb"],[1,5,1,"_CPPv4N6HAMqtt16_messageCallbackE","HAMqtt::_messageCallback"],[1,5,1,"_CPPv4N6HAMqtt5_mqttE","HAMqtt::_mqtt"],[1,5,1,"_CPPv4N6HAMqtt9_passwordE","HAMqtt::_password"],[1,5,1,"_CPPv4N6HAMqtt9_usernameE","HAMqtt::_username"],[1,3,1,"_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType","HAMqtt::addDeviceType"],[1,4,1,"_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType","HAMqtt::addDeviceType::deviceType"],[1,3,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::serverHostname"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::serverHostname"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::serverIp"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::serverIp"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::serverPort"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::serverPort"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::username"],[1,3,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::payloadLength"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::retained"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::topic"],[1,3,1,"_CPPv4N6HAMqtt15connectToServerEv","HAMqtt::connectToServer"],[1,3,1,"_CPPv4N6HAMqtt10disconnectEv","HAMqtt::disconnect"],[1,3,1,"_CPPv4N6HAMqtt10endPublishEv","HAMqtt::endPublish"],[1,3,1,"_CPPv4NK6HAMqtt13getDataPrefixEv","HAMqtt::getDataPrefix"],[1,3,1,"_CPPv4NK6HAMqtt9getDeviceEv","HAMqtt::getDevice"],[1,3,1,"_CPPv4NK6HAMqtt18getDiscoveryPrefixEv","HAMqtt::getDiscoveryPrefix"],[1,3,1,"_CPPv4N6HAMqtt8instanceEv","HAMqtt::instance"],[1,3,1,"_CPPv4NK6HAMqtt11isConnectedEv","HAMqtt::isConnected"],[1,3,1,"_CPPv4N6HAMqtt4loopEv","HAMqtt::loop"],[1,3,1,"_CPPv4N6HAMqtt11onConnectedEPFvvE","HAMqtt::onConnected"],[1,4,1,"_CPPv4N6HAMqtt11onConnectedEPFvvE","HAMqtt::onConnected::callback"],[1,3,1,"_CPPv4N6HAMqtt16onConnectedLogicEv","HAMqtt::onConnectedLogic"],[1,3,1,"_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE","HAMqtt::onMessage"],[1,4,1,"_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE","HAMqtt::onMessage::callback"],[1,3,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::length"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::payload"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::topic"],[1,3,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::payload"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::retained"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::topic"],[1,3,1,"_CPPv4N6HAMqtt13setDataPrefixEPKc","HAMqtt::setDataPrefix"],[1,4,1,"_CPPv4N6HAMqtt13setDataPrefixEPKc","HAMqtt::setDataPrefix::prefix"],[1,3,1,"_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc","HAMqtt::setDiscoveryPrefix"],[1,4,1,"_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc","HAMqtt::setDiscoveryPrefix::prefix"],[1,3,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillMessage"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillRetain"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillTopic"],[1,3,1,"_CPPv4N6HAMqtt9subscribeEPKc","HAMqtt::subscribe"],[1,4,1,"_CPPv4N6HAMqtt9subscribeEPKc","HAMqtt::subscribe::topic"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper","HAMqtt::writePayload"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload::length"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload::length"],[1,3,1,"_CPPv4N6HAMqttD0Ev","HAMqtt::~HAMqtt"],[14,0,1,"_CPPv48HANumber","HANumber"],[14,3,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber"],[14,4,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber::precision"],[14,4,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber::uniqueId"],[14,1,1,"_CPPv4N8HANumber4ModeE","HANumber::Mode"],[14,2,1,"_CPPv4N8HANumber4Mode8ModeAutoE","HANumber::Mode::ModeAuto"],[14,2,1,"_CPPv4N8HANumber4Mode7ModeBoxE","HANumber::Mode::ModeBox"],[14,2,1,"_CPPv4N8HANumber4Mode10ModeSliderE","HANumber::Mode::ModeSlider"],[14,2,1,"_CPPv4N8HANumber4Mode8ModeAutoE","HANumber::ModeAuto"],[14,2,1,"_CPPv4N8HANumber4Mode7ModeBoxE","HANumber::ModeBox"],[14,2,1,"_CPPv4N8HANumber4Mode10ModeSliderE","HANumber::ModeSlider"],[14,5,1,"_CPPv4N8HANumber6_classE","HANumber::_class"],[14,5,1,"_CPPv4N8HANumber16_commandCallbackE","HANumber::_commandCallback"],[14,5,1,"_CPPv4N8HANumber13_currentStateE","HANumber::_currentState"],[14,5,1,"_CPPv4N8HANumber5_iconE","HANumber::_icon"],[14,5,1,"_CPPv4N8HANumber9_maxValueE","HANumber::_maxValue"],[14,5,1,"_CPPv4N8HANumber9_minValueE","HANumber::_minValue"],[14,5,1,"_CPPv4N8HANumber5_modeE","HANumber::_mode"],[14,5,1,"_CPPv4N8HANumber11_optimisticE","HANumber::_optimistic"],[14,5,1,"_CPPv4N8HANumber10_precisionE","HANumber::_precision"],[14,5,1,"_CPPv4N8HANumber7_retainE","HANumber::_retain"],[14,5,1,"_CPPv4N8HANumber5_stepE","HANumber::_step"],[14,5,1,"_CPPv4N8HANumber18_unitOfMeasurementE","HANumber::_unitOfMeasurement"],[14,3,1,"_CPPv4N8HANumber15buildSerializerEv","HANumber::buildSerializer"],[14,3,1,"_CPPv4N8HANumber18getCommandTemplateEv","HANumber::getCommandTemplate"],[14,3,1,"_CPPv4NK8HANumber15getCurrentStateEv","HANumber::getCurrentState"],[14,3,1,"_CPPv4NK8HANumber15getModePropertyEv","HANumber::getModeProperty"],[14,3,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand"],[14,4,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand::cmd"],[14,4,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand::length"],[14,3,1,"_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE","HANumber::onCommand"],[14,4,1,"_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE","HANumber::onCommand::callback"],[14,3,1,"_CPPv4N8HANumber15onMqttConnectedEv","HANumber::onMqttConnected"],[14,3,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::length"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::payload"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::topic"],[14,3,1,"_CPPv4N8HANumber12publishStateERK9HANumeric","HANumber::publishState"],[14,4,1,"_CPPv4N8HANumber12publishStateERK9HANumeric","HANumber::publishState::state"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK6int8_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7int16_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7int32_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7uint8_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK8uint16_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK8uint32_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEKf","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateERK9HANumeric","HANumber::setCurrentState"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK6int8_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7int16_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7int32_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7uint8_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK8uint16_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK8uint32_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEKf","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateERK9HANumeric","HANumber::setCurrentState::state"],[14,3,1,"_CPPv4N8HANumber14setDeviceClassEPKc","HANumber::setDeviceClass"],[14,4,1,"_CPPv4N8HANumber14setDeviceClassEPKc","HANumber::setDeviceClass::deviceClass"],[14,3,1,"_CPPv4N8HANumber7setIconEPKc","HANumber::setIcon"],[14,4,1,"_CPPv4N8HANumber7setIconEPKc","HANumber::setIcon::icon"],[14,3,1,"_CPPv4N8HANumber6setMaxEKf","HANumber::setMax"],[14,4,1,"_CPPv4N8HANumber6setMaxEKf","HANumber::setMax::max"],[14,3,1,"_CPPv4N8HANumber6setMinEKf","HANumber::setMin"],[14,4,1,"_CPPv4N8HANumber6setMinEKf","HANumber::setMin::min"],[14,3,1,"_CPPv4N8HANumber7setModeEK4Mode","HANumber::setMode"],[14,4,1,"_CPPv4N8HANumber7setModeEK4Mode","HANumber::setMode::mode"],[14,3,1,"_CPPv4N8HANumber13setOptimisticEKb","HANumber::setOptimistic"],[14,4,1,"_CPPv4N8HANumber13setOptimisticEKb","HANumber::setOptimistic::optimistic"],[14,3,1,"_CPPv4N8HANumber9setRetainEKb","HANumber::setRetain"],[14,4,1,"_CPPv4N8HANumber9setRetainEKb","HANumber::setRetain::retain"],[14,3,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState"],[14,4,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState::state"],[14,3,1,"_CPPv4N8HANumber7setStepEKf","HANumber::setStep"],[14,4,1,"_CPPv4N8HANumber7setStepEKf","HANumber::setStep::step"],[14,3,1,"_CPPv4N8HANumber20setUnitOfMeasurementEPKc","HANumber::setUnitOfMeasurement"],[14,4,1,"_CPPv4N8HANumber20setUnitOfMeasurementEPKc","HANumber::setUnitOfMeasurement::unitOfMeasurement"],[23,0,1,"_CPPv49HANumeric","HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int64_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEv","HANumeric::HANumeric"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int64_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric::value"],[23,5,1,"_CPPv4N9HANumeric11MaxDigitsNbE","HANumeric::MaxDigitsNb"],[23,5,1,"_CPPv4N9HANumeric6_isSetE","HANumeric::_isSet"],[23,5,1,"_CPPv4N9HANumeric10_precisionE","HANumeric::_precision"],[23,5,1,"_CPPv4N9HANumeric6_valueE","HANumeric::_value"],[23,3,1,"_CPPv4NK9HANumeric13calculateSizeEv","HANumeric::calculateSize"],[23,3,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr"],[23,4,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr::buffer"],[23,4,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr::length"],[23,3,1,"_CPPv4NK9HANumeric12getBaseValueEv","HANumeric::getBaseValue"],[23,3,1,"_CPPv4NK9HANumeric12getPrecisionEv","HANumeric::getPrecision"],[23,3,1,"_CPPv4NK9HANumeric16getPrecisionBaseEv","HANumeric::getPrecisionBase"],[23,3,1,"_CPPv4NK9HANumeric7isFloatEv","HANumeric::isFloat"],[23,3,1,"_CPPv4NK9HANumeric7isInt16Ev","HANumeric::isInt16"],[23,3,1,"_CPPv4NK9HANumeric7isInt32Ev","HANumeric::isInt32"],[23,3,1,"_CPPv4NK9HANumeric6isInt8Ev","HANumeric::isInt8"],[23,3,1,"_CPPv4NK9HANumeric5isSetEv","HANumeric::isSet"],[23,3,1,"_CPPv4NK9HANumeric8isUInt16Ev","HANumeric::isUInt16"],[23,3,1,"_CPPv4NK9HANumeric8isUInt32Ev","HANumeric::isUInt32"],[23,3,1,"_CPPv4NK9HANumeric7isUInt8Ev","HANumeric::isUInt8"],[23,3,1,"_CPPv4N9HANumericaSERK9HANumeric","HANumeric::operator="],[23,4,1,"_CPPv4N9HANumericaSERK9HANumeric","HANumeric::operator=::a"],[23,3,1,"_CPPv4NK9HANumericeqERK9HANumeric","HANumeric::operator=="],[23,4,1,"_CPPv4NK9HANumericeqERK9HANumeric","HANumeric::operator==::a"],[23,3,1,"_CPPv4N9HANumeric5resetEv","HANumeric::reset"],[23,3,1,"_CPPv4N9HANumeric12setBaseValueE7int64_t","HANumeric::setBaseValue"],[23,4,1,"_CPPv4N9HANumeric12setBaseValueE7int64_t","HANumeric::setBaseValue::value"],[23,3,1,"_CPPv4N9HANumeric12setPrecisionEK7uint8_t","HANumeric::setPrecision"],[23,4,1,"_CPPv4N9HANumeric12setPrecisionEK7uint8_t","HANumeric::setPrecision::precision"],[23,3,1,"_CPPv4NK9HANumeric7toFloatEv","HANumeric::toFloat"],[23,3,1,"_CPPv4NK9HANumeric7toInt16Ev","HANumeric::toInt16"],[23,3,1,"_CPPv4NK9HANumeric7toInt32Ev","HANumeric::toInt32"],[23,3,1,"_CPPv4NK9HANumeric6toInt8Ev","HANumeric::toInt8"],[23,3,1,"_CPPv4NK9HANumeric5toStrEPc","HANumeric::toStr"],[23,4,1,"_CPPv4NK9HANumeric5toStrEPc","HANumeric::toStr::dst"],[23,3,1,"_CPPv4NK9HANumeric8toUInt16Ev","HANumeric::toUInt16"],[23,3,1,"_CPPv4NK9HANumeric8toUInt32Ev","HANumeric::toUInt32"],[23,3,1,"_CPPv4NK9HANumeric7toUInt8Ev","HANumeric::toUInt8"],[15,0,1,"_CPPv47HAScene","HAScene"],[15,3,1,"_CPPv4N7HAScene7HASceneEPKc","HAScene::HAScene"],[15,4,1,"_CPPv4N7HAScene7HASceneEPKc","HAScene::HAScene::uniqueId"],[15,5,1,"_CPPv4N7HAScene16_commandCallbackE","HAScene::_commandCallback"],[15,5,1,"_CPPv4N7HAScene5_iconE","HAScene::_icon"],[15,5,1,"_CPPv4N7HAScene7_retainE","HAScene::_retain"],[15,3,1,"_CPPv4N7HAScene15buildSerializerEv","HAScene::buildSerializer"],[15,3,1,"_CPPv4N7HAScene9onCommandEPFvP7HASceneE","HAScene::onCommand"],[15,4,1,"_CPPv4N7HAScene9onCommandEPFvP7HASceneE","HAScene::onCommand::callback"],[15,3,1,"_CPPv4N7HAScene15onMqttConnectedEv","HAScene::onMqttConnected"],[15,3,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::length"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::payload"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::topic"],[15,3,1,"_CPPv4N7HAScene7setIconEPKc","HAScene::setIcon"],[15,4,1,"_CPPv4N7HAScene7setIconEPKc","HAScene::setIcon::icon"],[15,3,1,"_CPPv4N7HAScene9setRetainEKb","HAScene::setRetain"],[15,4,1,"_CPPv4N7HAScene9setRetainEKb","HAScene::setRetain::retain"],[16,0,1,"_CPPv48HASelect","HASelect"],[16,3,1,"_CPPv4N8HASelect8HASelectEPKc","HASelect::HASelect"],[16,4,1,"_CPPv4N8HASelect8HASelectEPKc","HASelect::HASelect::uniqueId"],[16,5,1,"_CPPv4N8HASelect16_commandCallbackE","HASelect::_commandCallback"],[16,5,1,"_CPPv4N8HASelect13_currentStateE","HASelect::_currentState"],[16,5,1,"_CPPv4N8HASelect5_iconE","HASelect::_icon"],[16,5,1,"_CPPv4N8HASelect11_optimisticE","HASelect::_optimistic"],[16,5,1,"_CPPv4N8HASelect8_optionsE","HASelect::_options"],[16,5,1,"_CPPv4N8HASelect7_retainE","HASelect::_retain"],[16,3,1,"_CPPv4N8HASelect15buildSerializerEv","HASelect::buildSerializer"],[16,3,1,"_CPPv4NK8HASelect20countOptionsInStringEPKc","HASelect::countOptionsInString"],[16,4,1,"_CPPv4NK8HASelect20countOptionsInStringEPKc","HASelect::countOptionsInString::options"],[16,3,1,"_CPPv4NK8HASelect15getCurrentStateEv","HASelect::getCurrentState"],[16,3,1,"_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE","HASelect::onCommand"],[16,4,1,"_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE","HASelect::onCommand::callback"],[16,3,1,"_CPPv4N8HASelect15onMqttConnectedEv","HASelect::onMqttConnected"],[16,3,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::length"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::payload"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::topic"],[16,3,1,"_CPPv4N8HASelect12publishStateEK6int8_t","HASelect::publishState"],[16,4,1,"_CPPv4N8HASelect12publishStateEK6int8_t","HASelect::publishState::state"],[16,3,1,"_CPPv4N8HASelect15setCurrentStateEK6int8_t","HASelect::setCurrentState"],[16,4,1,"_CPPv4N8HASelect15setCurrentStateEK6int8_t","HASelect::setCurrentState::state"],[16,3,1,"_CPPv4N8HASelect7setIconEPKc","HASelect::setIcon"],[16,4,1,"_CPPv4N8HASelect7setIconEPKc","HASelect::setIcon::icon"],[16,3,1,"_CPPv4N8HASelect13setOptimisticEKb","HASelect::setOptimistic"],[16,4,1,"_CPPv4N8HASelect13setOptimisticEKb","HASelect::setOptimistic::optimistic"],[16,3,1,"_CPPv4N8HASelect10setOptionsEPKc","HASelect::setOptions"],[16,4,1,"_CPPv4N8HASelect10setOptionsEPKc","HASelect::setOptions::options"],[16,3,1,"_CPPv4N8HASelect9setRetainEKb","HASelect::setRetain"],[16,4,1,"_CPPv4N8HASelect9setRetainEKb","HASelect::setRetain::retain"],[16,3,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState"],[16,4,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState::force"],[16,4,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState::state"],[16,3,1,"_CPPv4N8HASelectD0Ev","HASelect::~HASelect"],[17,0,1,"_CPPv48HASensor","HASensor"],[17,3,1,"_CPPv4N8HASensor8HASensorEPKc","HASensor::HASensor"],[17,4,1,"_CPPv4N8HASensor8HASensorEPKc","HASensor::HASensor::uniqueId"],[17,5,1,"_CPPv4N8HASensor12_deviceClassE","HASensor::_deviceClass"],[17,5,1,"_CPPv4N8HASensor12_forceUpdateE","HASensor::_forceUpdate"],[17,5,1,"_CPPv4N8HASensor5_iconE","HASensor::_icon"],[17,5,1,"_CPPv4N8HASensor18_unitOfMeasurementE","HASensor::_unitOfMeasurement"],[17,3,1,"_CPPv4N8HASensor15buildSerializerEv","HASensor::buildSerializer"],[17,3,1,"_CPPv4N8HASensor15onMqttConnectedEv","HASensor::onMqttConnected"],[17,3,1,"_CPPv4N8HASensor14setDeviceClassEPKc","HASensor::setDeviceClass"],[17,4,1,"_CPPv4N8HASensor14setDeviceClassEPKc","HASensor::setDeviceClass::deviceClass"],[17,3,1,"_CPPv4N8HASensor14setForceUpdateEb","HASensor::setForceUpdate"],[17,4,1,"_CPPv4N8HASensor14setForceUpdateEb","HASensor::setForceUpdate::forceUpdate"],[17,3,1,"_CPPv4N8HASensor7setIconEPKc","HASensor::setIcon"],[17,4,1,"_CPPv4N8HASensor7setIconEPKc","HASensor::setIcon::icon"],[17,3,1,"_CPPv4N8HASensor20setUnitOfMeasurementEPKc","HASensor::setUnitOfMeasurement"],[17,4,1,"_CPPv4N8HASensor20setUnitOfMeasurementEPKc","HASensor::setUnitOfMeasurement::unitOfMeasurement"],[17,3,1,"_CPPv4N8HASensor8setValueEPKc","HASensor::setValue"],[17,4,1,"_CPPv4N8HASensor8setValueEPKc","HASensor::setValue::value"],[18,0,1,"_CPPv414HASensorNumber","HASensorNumber"],[18,3,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision","HASensorNumber::HASensorNumber"],[18,4,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision","HASensorNumber::HASensorNumber::precision"],[18,4,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision","HASensorNumber::HASensorNumber::uniqueId"],[18,5,1,"_CPPv4N14HASensorNumber13_currentValueE","HASensorNumber::_currentValue"],[18,5,1,"_CPPv4N14HASensorNumber10_precisionE","HASensorNumber::_precision"],[18,3,1,"_CPPv4NK14HASensorNumber15getCurrentValueEv","HASensorNumber::getCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15onMqttConnectedEv","HASensorNumber::onMqttConnected"],[18,3,1,"_CPPv4N14HASensorNumber12publishValueERK9HANumeric","HASensorNumber::publishValue"],[18,4,1,"_CPPv4N14HASensorNumber12publishValueERK9HANumeric","HASensorNumber::publishValue::value"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEKf","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric","HASensorNumber::setCurrentValue"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEKf","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric","HASensorNumber::setCurrentValue::value"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue::value"],[24,0,1,"_CPPv412HASerializer","HASerializer"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE","HASerializer::ArrayPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE","HASerializer::BoolPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE","HASerializer::ConstCharPropertyValue"],[24,1,1,"_CPPv4N12HASerializer9EntryTypeE","HASerializer::EntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType13FlagEntryTypeE","HASerializer::EntryType::FlagEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE","HASerializer::EntryType::PropertyEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType14TopicEntryTypeE","HASerializer::EntryType::TopicEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE","HASerializer::EntryType::UnknownEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType13FlagEntryTypeE","HASerializer::FlagEntryType"],[24,1,1,"_CPPv4N12HASerializer8FlagTypeE","HASerializer::FlagType"],[24,2,1,"_CPPv4N12HASerializer8FlagType16WithAvailabilityE","HASerializer::FlagType::WithAvailability"],[24,2,1,"_CPPv4N12HASerializer8FlagType10WithDeviceE","HASerializer::FlagType::WithDevice"],[24,3,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer"],[24,4,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer::deviceType"],[24,4,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer::maxEntriesNb"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE","HASerializer::NumberPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE","HASerializer::ProgmemPropertyValue"],[24,2,1,"_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE","HASerializer::PropertyEntryType"],[24,1,1,"_CPPv4N12HASerializer17PropertyValueTypeE","HASerializer::PropertyValueType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE","HASerializer::PropertyValueType::ArrayPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE","HASerializer::PropertyValueType::BoolPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE","HASerializer::PropertyValueType::ConstCharPropertyValue"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE","HASerializer::PropertyValueType::NumberPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE","HASerializer::PropertyValueType::ProgmemPropertyValue"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE","HASerializer::PropertyValueType::UnknownPropertyValueType"],[24,0,1,"_CPPv4N12HASerializer15SerializerEntryE","HASerializer::SerializerEntry"],[24,3,1,"_CPPv4N12HASerializer15SerializerEntry15SerializerEntryEv","HASerializer::SerializerEntry::SerializerEntry"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry8propertyE","HASerializer::SerializerEntry::property"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry7subtypeE","HASerializer::SerializerEntry::subtype"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry4typeE","HASerializer::SerializerEntry::type"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry5valueE","HASerializer::SerializerEntry::value"],[24,2,1,"_CPPv4N12HASerializer9EntryType14TopicEntryTypeE","HASerializer::TopicEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE","HASerializer::UnknownEntryType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE","HASerializer::UnknownPropertyValueType"],[24,2,1,"_CPPv4N12HASerializer8FlagType16WithAvailabilityE","HASerializer::WithAvailability"],[24,2,1,"_CPPv4N12HASerializer8FlagType10WithDeviceE","HASerializer::WithDevice"],[24,5,1,"_CPPv4N12HASerializer11_deviceTypeE","HASerializer::_deviceType"],[24,5,1,"_CPPv4N12HASerializer8_entriesE","HASerializer::_entries"],[24,5,1,"_CPPv4N12HASerializer10_entriesNbE","HASerializer::_entriesNb"],[24,5,1,"_CPPv4N12HASerializer13_maxEntriesNbE","HASerializer::_maxEntriesNb"],[24,3,1,"_CPPv4N12HASerializer8addEntryEv","HASerializer::addEntry"],[24,3,1,"_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray","HASerializer::calculateArraySize"],[24,4,1,"_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray","HASerializer::calculateArraySize::array"],[24,3,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength"],[24,4,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength::component"],[24,4,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength::objectId"],[24,3,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength"],[24,4,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength::objectId"],[24,4,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength::topic"],[24,3,1,"_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry","HASerializer::calculateEntrySize"],[24,4,1,"_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry","HASerializer::calculateEntrySize::entry"],[24,3,1,"_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType","HASerializer::calculateFlagSize"],[24,4,1,"_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType","HASerializer::calculateFlagSize::flag"],[24,3,1,"_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry","HASerializer::calculatePropertyValueSize"],[24,4,1,"_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry","HASerializer::calculatePropertyValueSize::entry"],[24,3,1,"_CPPv4NK12HASerializer13calculateSizeEv","HASerializer::calculateSize"],[24,3,1,"_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry","HASerializer::calculateTopicEntrySize"],[24,4,1,"_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry","HASerializer::calculateTopicEntrySize::entry"],[24,3,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::actualTopic"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::objectId"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::topic"],[24,3,1,"_CPPv4NK12HASerializer5flushEv","HASerializer::flush"],[24,3,1,"_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry","HASerializer::flushEntry"],[24,4,1,"_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry","HASerializer::flushEntry::entry"],[24,3,1,"_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry","HASerializer::flushEntryValue"],[24,4,1,"_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry","HASerializer::flushEntryValue::entry"],[24,3,1,"_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry","HASerializer::flushFlag"],[24,4,1,"_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry","HASerializer::flushFlag::entry"],[24,3,1,"_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry","HASerializer::flushTopic"],[24,4,1,"_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry","HASerializer::flushTopic::entry"],[24,3,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::component"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::objectId"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::output"],[24,3,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::objectId"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::output"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::topic"],[24,3,1,"_CPPv4NK12HASerializer10getEntriesEv","HASerializer::getEntries"],[24,3,1,"_CPPv4NK12HASerializer12getEntriesNbEv","HASerializer::getEntriesNb"],[24,3,1,"_CPPv4N12HASerializer3setEK8FlagType","HASerializer::set"],[24,3,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set"],[24,4,1,"_CPPv4N12HASerializer3setEK8FlagType","HASerializer::set::flag"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::property"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::value"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::valueType"],[24,3,1,"_CPPv4N12HASerializer5topicEPK19__FlashStringHelper","HASerializer::topic"],[24,4,1,"_CPPv4N12HASerializer5topicEPK19__FlashStringHelper","HASerializer::topic::topic"],[24,3,1,"_CPPv4N12HASerializerD0Ev","HASerializer::~HASerializer"],[25,0,1,"_CPPv417HASerializerArray","HASerializerArray"],[25,3,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray"],[25,4,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray::progmemItems"],[25,4,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray::size"],[25,6,1,"_CPPv4N17HASerializerArray8ItemTypeE","HASerializerArray::ItemType"],[25,5,1,"_CPPv4N17HASerializerArray6_itemsE","HASerializerArray::_items"],[25,5,1,"_CPPv4N17HASerializerArray8_itemsNbE","HASerializerArray::_itemsNb"],[25,5,1,"_CPPv4N17HASerializerArray13_progmemItemsE","HASerializerArray::_progmemItems"],[25,5,1,"_CPPv4N17HASerializerArray5_sizeE","HASerializerArray::_size"],[25,3,1,"_CPPv4N17HASerializerArray3addE8ItemType","HASerializerArray::add"],[25,4,1,"_CPPv4N17HASerializerArray3addE8ItemType","HASerializerArray::add::item"],[25,3,1,"_CPPv4NK17HASerializerArray13calculateSizeEv","HASerializerArray::calculateSize"],[25,3,1,"_CPPv4N17HASerializerArray5clearEv","HASerializerArray::clear"],[25,3,1,"_CPPv4NK17HASerializerArray8getItemsEv","HASerializerArray::getItems"],[25,3,1,"_CPPv4NK17HASerializerArray10getItemsNbEv","HASerializerArray::getItemsNb"],[25,3,1,"_CPPv4NK17HASerializerArray9serializeEPc","HASerializerArray::serialize"],[25,4,1,"_CPPv4NK17HASerializerArray9serializeEPc","HASerializerArray::serialize::output"],[25,3,1,"_CPPv4N17HASerializerArrayD0Ev","HASerializerArray::~HASerializerArray"],[19,0,1,"_CPPv48HASwitch","HASwitch"],[19,3,1,"_CPPv4N8HASwitch8HASwitchEPKc","HASwitch::HASwitch"],[19,4,1,"_CPPv4N8HASwitch8HASwitchEPKc","HASwitch::HASwitch::uniqueId"],[19,5,1,"_CPPv4N8HASwitch6_classE","HASwitch::_class"],[19,5,1,"_CPPv4N8HASwitch16_commandCallbackE","HASwitch::_commandCallback"],[19,5,1,"_CPPv4N8HASwitch13_currentStateE","HASwitch::_currentState"],[19,5,1,"_CPPv4N8HASwitch5_iconE","HASwitch::_icon"],[19,5,1,"_CPPv4N8HASwitch11_optimisticE","HASwitch::_optimistic"],[19,5,1,"_CPPv4N8HASwitch7_retainE","HASwitch::_retain"],[19,3,1,"_CPPv4N8HASwitch15buildSerializerEv","HASwitch::buildSerializer"],[19,3,1,"_CPPv4NK8HASwitch15getCurrentStateEv","HASwitch::getCurrentState"],[19,3,1,"_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE","HASwitch::onCommand"],[19,4,1,"_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE","HASwitch::onCommand::callback"],[19,3,1,"_CPPv4N8HASwitch15onMqttConnectedEv","HASwitch::onMqttConnected"],[19,3,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::length"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::payload"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::topic"],[19,3,1,"_CPPv4N8HASwitch12publishStateEKb","HASwitch::publishState"],[19,4,1,"_CPPv4N8HASwitch12publishStateEKb","HASwitch::publishState::state"],[19,3,1,"_CPPv4N8HASwitch15setCurrentStateEKb","HASwitch::setCurrentState"],[19,4,1,"_CPPv4N8HASwitch15setCurrentStateEKb","HASwitch::setCurrentState::state"],[19,3,1,"_CPPv4N8HASwitch14setDeviceClassEPKc","HASwitch::setDeviceClass"],[19,4,1,"_CPPv4N8HASwitch14setDeviceClassEPKc","HASwitch::setDeviceClass::deviceClass"],[19,3,1,"_CPPv4N8HASwitch7setIconEPKc","HASwitch::setIcon"],[19,4,1,"_CPPv4N8HASwitch7setIconEPKc","HASwitch::setIcon::icon"],[19,3,1,"_CPPv4N8HASwitch13setOptimisticEKb","HASwitch::setOptimistic"],[19,4,1,"_CPPv4N8HASwitch13setOptimisticEKb","HASwitch::setOptimistic::optimistic"],[19,3,1,"_CPPv4N8HASwitch9setRetainEKb","HASwitch::setRetain"],[19,4,1,"_CPPv4N8HASwitch9setRetainEKb","HASwitch::setRetain::retain"],[19,3,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState"],[19,4,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState::force"],[19,4,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState::state"],[19,3,1,"_CPPv4N8HASwitch7turnOffEv","HASwitch::turnOff"],[19,3,1,"_CPPv4N8HASwitch6turnOnEv","HASwitch::turnOn"],[20,0,1,"_CPPv412HATagScanner","HATagScanner"],[20,3,1,"_CPPv4N12HATagScanner12HATagScannerEPKc","HATagScanner::HATagScanner"],[20,4,1,"_CPPv4N12HATagScanner12HATagScannerEPKc","HATagScanner::HATagScanner::uniqueId"],[20,3,1,"_CPPv4N12HATagScanner15buildSerializerEv","HATagScanner::buildSerializer"],[20,3,1,"_CPPv4N12HATagScanner15onMqttConnectedEv","HATagScanner::onMqttConnected"],[20,3,1,"_CPPv4N12HATagScanner10tagScannedEPKc","HATagScanner::tagScanned"],[20,4,1,"_CPPv4N12HATagScanner10tagScannedEPKc","HATagScanner::tagScanned::tag"],[26,0,1,"_CPPv47HAUtils","HAUtils"],[26,3,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr"],[26,3,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::dst"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr::length"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::length"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr::src"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::src"],[26,3,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith"],[26,4,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith::str"],[26,4,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith::suffix"]]},objnames:{"0":["cpp","class","C++ class"],"1":["cpp","enum","C++ enum"],"2":["cpp","enumerator","C++ enumerator"],"3":["cpp","function","C++ function"],"4":["cpp","functionParam","C++ function parameter"],"5":["cpp","member","C++ member"],"6":["cpp","type","C++ type"]},objtypes:{"0":"cpp:class","1":"cpp:enum","2":"cpp:enumerator","3":"cpp:function","4":"cpp:functionParam","5":"cpp:member","6":"cpp:type"},terms:{"0":[3,7,10,12,14,31,36,41],"001":14,"01":[28,37],"0x00":[33,35,36,37,38,40,41,42],"0x05":36,"0x10":[33,35,36,37,38,40,41,42],"0x1f":36,"0x38":[33,35,36,37,38,40,41,42],"0x4a":[33,35,36,37,38,40,41,42],"0x6e":[33,35,36,37,38,40,41,42],"0x8c":36,"0x9f":36,"0xb4":36,"0xbe":36,"0xc6":36,"0xc7":36,"0xce":36,"0xfa":[33,35,36,37,38,40,41,42],"1":[10,11,16,23,31,35,40,41,42],"10":23,"100":[7,10,42],"12":37,"123":[23,36],"1234":23,"153":12,"168":[35,40,41,42],"1883":[1,35],"192":[35,40,41,42],"2":[26,31,33],"255":12,"32768":7,"33":[28,29],"4":23,"5":33,"50":[35,40,41,42],"500":[12,40],"5000":1,"5m":1,"6":[1,31,37],"8":31,"8888":35,"byte":[0,1,23,26,33,35,37,38,40,41,42],"case":[1,33,38],"char":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,38,41],"class":[2,21,22,27,28,34,35,36,37,38,40,41,43],"const":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,38,41],"default":[1,4,6,7,8,10,11,12,13,14,16,18,19,23,32,33,35,37,38,42],"do":1,"enum":[3,6,7,8,9,10,11,12,13,14,24],"final":[0,17],"float":[11,14,18,23],"function":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"long":[28,33,42],"new":[1,3,4,7,8,10,11,12,13,14,15,16,18,19,24,25,26,30,37],"null":[0,1,23],"public":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"return":[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24,25,26],"short":[0,3,36],"static":[1,3,7,11,12,23,24,25,26],"switch":[1,9,19,28,29,33,36,37,38],"true":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,25,26,33,41],"try":[1,28,36],"void":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,33,35,36,37,38,40,41,42],"while":40,A:[16,29],By:[4,6,7,8,10,11,12,13,14,16,18,19,33,37,42],For:[9,14,16,17,23,31,33],If:[0,1,5,7,8,9,10,11,12,13,14,15,16,17,19,23,24,30,31],In:[1,7,10,12,13,14,16,19,33,36,38],It:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,28,34,37,40],Its:24,No:3,OR:12,On:[37,42],One:3,THe:[3,18],That:[33,38],The:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,28,29,31,32,33,34,35,36,38,41,42,43],Then:31,There:[31,33,36,38],To:[31,34],Will:[29,43],_:24,__flashstringhelp:[1,3,6,8,11,14,24],_action:11,_auxcallback:11,_auxstat:11,_avail:[0,3],_availabilitytop:0,_brightnesscallback:12,_brightnessscal:12,_class:[4,5,7,14,19],_colortemperaturecallback:12,_commandcallback:[5,7,13,14,15,16,19],_componentnam:3,_connectedcallback:1,_currentbright:12,_currentcolortemperatur:12,_currentposit:7,_currentrgbcolor:12,_currentspe:10,_currentst:[4,7,8,10,12,13,14,16,19],_currenttemperatur:11,_currentvalu:18,_dataprefix:1,_devic:1,_deviceclass:17,_devicestyp:1,_devicestypesnb:1,_devicetyp:24,_discoveryprefix:1,_encod:6,_entri:24,_entriesnb:24,_fanmod:11,_fanmodecallback:11,_fanmodesseri:11,_featur:[7,10,11,12],_forceupd:17,_icon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],_initi:1,_instanc:1,_isprogmemsubtyp:9,_isprogmemtyp:9,_isset:23,_item:25,_itemsnb:25,_lastconnectionattemptat:1,_lastwillmessag:1,_lastwillretain:1,_lastwilltop:1,_maxdevicestypesnb:1,_maxentriesnb:24,_maxmir:12,_maxtemp:11,_maxvalu:14,_messagecallback:1,_minmir:12,_mintemp:11,_minvalu:14,_mode:[11,14],_modecallback:11,_modesseri:11,_mqtt:1,_name:3,_optimist:[7,10,12,13,14,16,19],_option:16,_ownsuniqueid:0,_password:1,_powercallback:11,_precis:[11,14,18,23],_progmemitem:25,_retain:[5,7,10,11,12,13,14,15,16,19],_rgbcolorcallback:12,_serial:[0,3],_sharedavail:0,_size:25,_sourcetyp:8,_speedcallback:10,_speedrangemax:10,_speedrangemin:10,_statecallback:[10,12],_step:14,_subtyp:9,_swingmod:11,_swingmodecallback:11,_swingmodesseri:11,_targettemperatur:11,_targettemperaturecallback:11,_temperatureunit:11,_tempstep:11,_type:9,_uniqueid:[0,3],_unitofmeasur:[14,17],_usernam:1,_valu:23,abc:36,about:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],abov:[11,14,18],accept:[11,14,18,36],access:42,acquir:[0,1,3,4,7,8,10,11,12,13,14,16,18,19,38,42],across:23,act:32,action:[9,11],actionfeatur:11,activ:15,actual:24,actualtop:24,ad:[10,12,23,24,25,29,43],add:[1,14,15,16,24,25,31,40],adddevicetyp:1,addentri:24,addon:32,address:[1,36],admin:1,advanc:[29,31,39,43],after:[1,3,32,38,40],against:42,aha:[1,38],alia:[10,12,19],all:[0,1,3,30,32,33,35,36,38,39],alloc:[0,9,11,24,25,26],allow:[4,6,7,8,9,10,12,13,17,18,19,20,24,29,33,35,39,41,42,43],alphanumer:36,alreadi:40,also:[1,3,33,35,36,41,42],alwai:[1,3],amount:[1,16],an:[0,1,6,11,14,18,23,29,31,32,36,41,43],analog:29,analyz:42,ani:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,19,28,36],anonym:1,anoth:40,anoym:35,anyth:[30,37],api:[1,28,36,43],appli:14,applic:40,approach:[24,31],ar:[1,16,25,31,34,36,38,40],arduino:[5,28,29,30,37,39,42,43],arduinoha:[30,32,33,35,36,37,38,40,41,42],arduinoha_debug:34,arduinohadefin:34,argument:[11,14,18],arrai:[0,1,11,16,24,25,26],arraypropertytyp:24,assign:[0,1,3,9,37],assist:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,34,36,37,38,42,43],asynchron:35,attemp:1,attempt:[1,35],attribut:[1,3,7,11,12,23],aunit:43,authent:1,auto:43,autofanmod:11,autom:[9,20],automat:[1,33,38,43],automod:11,aux:11,auxheatingfeatur:11,avail:[0,1,3,4,5,7,8,11,13,14,16,17,19,24,28,29,31,39,43],availabilitydefault:3,availabilityofflin:3,availabilityonlin:3,b:[12,16],back:[7,10,11,12,13,14,16,19],base64:6,base:[0,9,20,23,25,43],basic:[28,29,33,38,39,40],becaus:[33,38,42],becom:33,bedroom:36,been:[4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,25],befor:[1,4,7,8,10,11,12,13,14,16,18,19,24,40],begin:[1,33,35,37,40,41,42],beginpublish:1,being:24,belong:3,below:[24,33,34,35,37,41],best:31,better:3,between:[1,42],binari:[4,6,29,37],binary_sensor:[3,4,24],bind:41,bitwis:12,blind:7,blue:12,bluetooth:8,board:[37,43],boilerpl:[39,43],bool:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,33],boolpropertytyp:24,boot:1,box:14,bridg:1,bright:[12,29],brightnessfeatur:12,broker:[0,1,4,7,8,10,11,12,13,14,16,18,19,24,29,32,33,35,38,40,41,42,43],brokker:32,btn0:9,bu:6,buffer:[23,24],build:[3,9,31],buildseri:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],builduniqueid:9,built:[3,9],busi:40,button1subtyp:9,button2subtyp:9,button3subtyp:9,button4subtyp:9,button5subtyp:9,button6subtyp:9,button:[4,5,7,10,11,12,16,19,29,33,37],buttondoublepresstyp:9,buttonlongpresstyp:9,buttonlongreleasetyp:9,buttonquadruplepresstyp:9,buttonquintuplepresstyp:9,buttonshortpresstyp:9,buttonshortreleasetyp:9,buttontriplepresstyp:9,bytearraytostr:26,c:[14,16,17],calcul:[9,23,24,25],calculatearrays:24,calculateconfigtopiclength:24,calculatedatatopiclength:24,calculateentrys:24,calculateflags:24,calculateids:9,calculatepropertyvalues:24,calculates:[23,24,25],calculatetopicentrys:24,call:[0,1,3,5,7,8,10,11,12,13,14,15,16,17,19,24,33,35,40,41],callback:[1,5,7,10,11,12,13,14,15,16,19,39,43],cam:[6,28,29],camera:[6,29,37],can:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,31,33,34,35,36,37,38,40,41,42],cannot:37,capabl:33,care:[33,38],cd:31,celsiusunit:11,central:1,chang:[1,4,7,8,10,11,12,13,14,16,18,19,29,33,37,38],chapter:[39,40],charact:[23,36],check:[24,26],checkout:31,child:37,chip:36,clear:25,click:[5,7,9,31],client:[1,28,33,35,37,38,40,41,42],climat:11,clone:36,close:[1,29],cmd:[7,10,11,12,13,14],code:[39,40,43],color:[12,29],colortemp:12,colortemperaturefeatur:12,com:[4,5,6,7,8,10,11,12,13,14,15,16,17,19,31],combin:9,come:40,command:[5,7,10,11,12,13,14,15,16,19,43],commandclos:7,commandlock:13,commandopen:[7,13],commandstop:7,commandunlock:13,commun:[1,32,34,42,43],compar:[4,7,8,10,11,12,13,14,16,18,19,24],comparedatatop:24,compat:[30,43],compil:[31,39,43],complet:[28,33],compon:[3,24],componentnam:3,config:24,configur:[1,3,24,38,39,42,43],connect:[0,1,3,4,7,8,10,11,12,13,14,16,18,19,29,33,38,39,40,41,43],connecttoserv:1,consid:[33,42],constcharpropertyvalu:24,construct:[0,1,25,38],constructor:[0,1,3,9,11,37],contact:29,contain:[11,16,23,26],content:[1,6,36],control:[7,10,11,12,13,14,29,33,36],controllino:28,conveni:[11,14,18],convert:[0,23,26],coolingact:11,coolmod:11,copi:36,core:[22,28,39,43],corp:36,correspond:[34,36],count:16,countoptionsinstr:16,coupl:34,cover:[7,16,29,37,40,43],covercommand:7,coverst:7,creat:[1,3,9,14,23,24,38],credenti:[29,35,40,42],current:[0,3,4,7,8,10,11,12,13,14,16,18,19],curtain:28,custom:[8,9,13,29,41,42,43],custompayload:41,customtop:41,cut:33,cycl:[1,35],data:[1,3,6,7,10,11,12,13,14,24,38,40],dawidchyrzynski:31,debug:[39,43],decim:[3,23],defaultfanmod:11,defaultfeatur:[7,10,11,12],defaultmod:11,defaultposit:7,defaultswingmod:11,defaultunit:11,defin:[3,14,17,20,34],delai:40,delet:0,depend:[31,36],describ:[39,40],descript:29,deseri:23,design:43,desir:[9,25],destin:[23,26],destroi:[1,3],destroyseri:3,determin:[10,24],determineprogmemsubtyp:9,determineprogmemtyp:9,develop:36,devic:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,24,28,29,31,32,34,35,38,39,40,41,42,43],device_track:8,device_trigg:9,deviceclass:[4,5,7,14,17,19],devicetyp:[1,24],differ:[11,14,18,23,36],digit:[3,23],directli:34,disabl:[7,10,11,12,13,14,16,19,33],disconnect:1,discov:42,discover:29,discoveri:[1,3,24,29,39,43],discuss:30,displai:[0,5,6,14,17,18,19,29,33,37],document:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,31,37,40],doesn:[1,7,10,12,13,14,16,17,19,40],don:[30,40],door:[7,13,29],doxygen:43,dropdown:[16,29,31],dryingact:11,drymod:11,dst:[23,26],dual:28,dure:35,dynam:[24,25],e:[3,6,17,24,33],each:[0,1,3,5,7,10,11,12,13,14,16,17,19,26,33,36,38,40,41],easier:26,easili:[24,33,42],element:25,empti:[1,23],enabl:[0,1,3,7,10,11,12,13,14,16,19,33,34],enablelastwil:[0,1,33],enablesharedavail:[0,33],encod:6,encodingbase64:6,encodingbinari:6,encrypt:42,end:[23,26,35,40],endpublish:1,endswith:26,entir:33,entiti:[0,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,29,37],entri:24,entrytyp:24,enumer:[3,6,7,8,9,10,11,12,13,14,24],environ:31,epoxyduino:43,equip:6,esp32:[6,28,29,31,39,42,43],esp8255:43,esp8266:[29,31,39,42,43],esp8266wifi:40,esp:[5,28,37,42,43],establish:[1,29,35,41,42],etc:[0,1,33,38],ethernet:[28,33,35,36,37,38,40,41,42,43],ethernetcli:[1,33,35,37,38,40,41,42],even:33,event:[9,20],ever:1,everyth:40,ex_arduinoha_binary_sensor:34,ex_arduinoha_button:34,ex_arduinoha_camera:34,ex_arduinoha_cov:34,ex_arduinoha_device_track:34,ex_arduinoha_device_trigg:34,ex_arduinoha_fan:34,ex_arduinoha_hvac:34,ex_arduinoha_light:34,ex_arduinoha_lock:34,ex_arduinoha_numb:34,ex_arduinoha_scen:34,ex_arduinoha_select:34,ex_arduinoha_sensor:34,ex_arduinoha_switch:34,ex_arduinoha_tag_scann:34,exampl:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,23,30,33,34,35,37,41,42,43],except:36,execut:[7,10,11,12,13,14,43],exist:[1,3],expect:[6,23],explicit:[1,23],expos:[33,35,41],extra:[23,31,32],fahrenheitunit:11,fals:[1,3,4,7,8,10,11,12,13,14,16,18,19,33],famili:29,fan:[7,10,11,29,37,38],fanact:11,fanfeatur:11,fanmod:11,fanonlymod:11,featur:[0,3,7,10,11,12,30,33,34,39],feel:30,few:[35,40],fi:[28,36],field:31,file:34,find:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,26],fine:[28,42],finish:1,fire:1,firmwar:1,first:[0,1],flag:[5,7,10,11,12,13,14,15,16,17,19,24,34],flagentrytyp:24,flagtyp:24,flash:[3,9,25,33,34,36,37,43],flush:24,flushentri:24,flushentryvalu:24,flushflag:24,flushtop:24,follow:[3,24,31,33,37,38,40],forc:[4,7,8,10,11,12,13,14,16,17,18,19],forceupd:17,formula:23,foundat:39,free:[9,11,24],friend:[3,23],from:[1,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,29,31],frombuff:12,fromstr:23,full:39,fun:30,g:[3,6,12,17,24],garag:7,gener:[0,23,24],generateconfigtop:24,generatedatatop:24,get:[3,32,43],getavailabilitytop:0,getbasevalu:23,getcommandtempl:14,getcommandwithfloattempl:11,getcurrentact:11,getcurrentauxst:11,getcurrentbright:12,getcurrentcolortemperatur:12,getcurrentfanmod:11,getcurrentmod:11,getcurrentposit:7,getcurrentrgbcolor:12,getcurrentspe:10,getcurrentst:[4,7,10,12,13,14,16,19],getcurrentswingmod:11,getcurrenttargettemperatur:11,getcurrenttemperatur:11,getcurrentvalu:18,getdataprefix:1,getdevic:1,getdiscoveryprefix:1,getencodingproperti:6,getentri:24,getentriesnb:24,getitem:25,getitemsnb:25,getmodeproperti:14,getnam:3,getprecis:23,getprecisionbas:23,getseri:0,getsourcetypeproperti:8,getstat:8,getsubtyp:9,gettyp:9,getuniqueid:0,git:31,github:[10,12,30,31],given:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,23,24,25,26],global:40,go:[0,1,24,25,32,40],goe:[37,40],gp:8,graph:17,greater:23,green:12,group:36,guid:30,h:[33,34,35,36,37,38,40,41,42],ha:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,32,33,36,37],habasedevicetyp:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,24,43],habinarysensor:[0,1,3,21,22,37,43],habutton:[3,21,22,37,43],hacamera:[3,21,22,37,43],hacov:[3,21,22,37,43],hadevic:[1,2,3,22,33,35,37,38,40,41,42,43],hadevicetrack:[3,21,22,37,43],hadevicetrigg:[3,21,22,37,43],hafan:[3,21,22,37,43],hahvac:[3,21,22,37,43],halight:[3,21,22,37,43],halock:[3,21,22,37,43],hamqtt:[0,2,3,22,33,35,37,38,40,41,42,43],handl:24,handleauxstatecommand:11,handlebrightnesscommand:12,handlecolortemperaturecommand:12,handlecommand:[7,13,14],handlefanmodecommand:11,handlemodecommand:11,handlepowercommand:11,handlergbcommand:12,handlespeedcommand:10,handlestatecommand:[10,12],handleswingmodecommand:11,handletargettemperaturecommand:11,hanumb:[3,11,21,22,37,43],hanumer:[10,11,12,14,18,22,27,43],happen:0,hardwar:[30,43],hascen:[3,21,22,37,43],haselect:[3,21,22,37,43],hasensor:[0,3,18,21,22,37,43],hasensorinteg:18,hasensornumb:[17,21,22,37,43],haseri:[0,3,22,25,27,43],haserializerarrai:[11,16,22,24,27,43],haswitch:[1,3,21,22,33,37,43],hatagscann:[3,21,22,37,43],hautil:[22,27,43],have:[17,23,30,37,40],heat:11,heatingact:11,heatmod:11,here:[4,5,7,14,17,19,28,37,38,40],hesit:30,hex:[0,26],highfanmod:11,highli:33,histori:17,hit:[24,37],hold:29,home:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,34,36,37,38,42,43],homeassist:[1,38],hostnam:[1,35],how:[14,33],howev:42,http:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,31],humidifi:37,hvac:[11,29,37],i:[33,43],icon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],id:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,30,39,43],idea:40,idleact:11,imag:6,imageencod:6,implement:[1,3,8,13,29,33,36,40],includ:[10,31,33,35,36,37,38,40,41,42],incom:17,increas:[36,37],index:16,inform:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],initi:[1,3,8,11,13,14,40,43],inlin:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],input:[16,26,36],insid:1,instal:[30,32,36,43],instanc:[0,1,3,14,24,32,36,38,40],instead:1,int16_t:[7,11,14,18,23],int32_t:[11,14,18,23],int64_t:23,int8_t:[11,14,16,18,23],integ:[17,23,29],integr:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,31,32,43],interact:[28,29],intern:[1,24,36,38],interv:1,introduct:[39,43],io:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],iot:[28,29],ip:1,ipaddress:1,isavail:0,isavailabilityconfigur:3,isconnect:1,isfloat:23,isint16:23,isint32:23,isint8:23,isonlin:3,isprogmemdata:3,isprogmemsubtyp:9,isprogmemtyp:9,isset:[12,23],issharedavailabilityen:0,issu:[10,12],isuint16:23,isuint32:23,isuint8:23,item:[24,25],itemp:25,itemtyp:25,its:[3,8,31,33,36],jpeg:6,json:[0,24,25],just:[31,35],keep:[0,3,36,37],knolleari:31,known:[4,7,8,10,11,12,13,14,16,18,19,24],label:3,last:[1,4,7,8,10,11,12,13,14,16,18,19,29,43],lastwillmessag:1,lastwillretain:1,lastwilltop:1,later:40,latest:31,le:8,led:29,length:[0,1,3,5,6,7,10,11,12,13,14,15,16,19,23,26,36,41],less:37,let:11,lib:31,librari:[1,10,12,23,28,30,31,33,34,36,38,42,43],life:26,light:[12,29,33,36,37,38],like:[1,36,37,42],limit:[24,39,43],line:[31,33],list:[4,5,7,11,14,16,17,19,24,28,34,36,37],live:1,local:[35,42],lock:[13,29,37],lockcommand:13,lockstat:13,log:34,logic:[3,5,35,36,37,40],login:42,long_press:9,look:[17,41,42],loop:[1,33,35,36,37,38,40,41,42],lost:[1,33],low:43,lower:[25,36],lowfanmod:11,lwt:[0,29,39,43],mac:[33,35,36,37,38,40,41,42],macaddress:40,macro:[39,43],made:[35,41],mai:[1,4,7,8,10,11,12,13,14,16,18,19,20,24,28,34,36,37,38],main:[1,24],maintain:[35,37,38,40,41],make:[26,29],makeesparduino:[30,43],makefil:[31,34],manag:[31,38],manual:33,manufactur:[0,36],match:[1,18,24],materialdesignicon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],max:[10,11,14],maxdevicestypesnb:1,maxdigitsnb:23,maxentriesnb:24,maxi:28,maximum:[1,10,11,12,14,23,24,25,37],mcu:36,mdi:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],mdn:29,mean:[3,17],meaning:17,meant:31,measur:[14,17],mediumfanmod:11,meet:35,mega:28,member:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],memori:[0,3,9,11,24,25,26,34,37],menu:31,messag:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,24,29,33,39,43],method:[0,1,3,4,7,8,10,11,12,13,14,16,17,18,19,23,24,26,31,32,33,35,38,40,41],mfrc522:29,millisecond:1,min:[10,11,14],mini:28,minim:[14,40],minimum:[10,11,12,14],mire:12,mix:17,mode:[7,10,11,12,13,14,16,19,29,39,43],modeauto:14,modebox:14,model:[0,36],modesfeatur:11,modeslid:14,modul:[6,28,29],more:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,31,42],mosquitto:[32,42],most:33,movement:14,mqtt:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,29,32,35,37,38,39,40,43],multi:29,multipl:[5,7,10,11,12,13,14,15,16,19,29,37],multipli:23,must:[10,11,12,14,16,19],my:43,mybrok:35,mycustomprefix:38,mydataprefix:38,myid:36,mynetworkssid:40,mypassword:40,myswitch:33,myswitchid:33,mytop:41,myuniqueid:[33,36],name:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,19,24,36],nano:[28,29],necessari:40,need:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,31,32,33,34,36,38,40,41],netclient:1,network:[1,28,42],never:[1,3],newli:26,nodemcu:[28,29],non:[10,12,14,16,19,41],none:0,note:[0,1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,19,23,24,28,33,36,37],noth:0,nullptr:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,24],number:[0,1,10,11,14,17,18,23,24,25,29,37],numberprecis:[3,11,14,18],numberpropertytyp:24,numer:[10,14,18,23,29],object:[1,24,40],objectid:24,occupi:34,off:[4,10,19,33],offact:11,offlin:[0,29,33,43],offmod:11,offswingmod:11,onauxstatecommand:11,onbrightnesscommand:12,onc:[0,5,15,16,35,40],oncolortemperaturecommand:12,oncommand:[5,7,13,14,15,16,19],onconnect:[1,41],onconnectedlog:1,one:[1,4,7,8,10,11,12,13,14,16,18,19,31,34,35,36,38],onfanmodecommand:11,onli:[0,1,3,10,11,12,14,16,18,24,31,33,35],onlin:[0,3,29,33,43],onmessag:[1,41],onmodecommand:11,onmqttconnect:[1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],onmqttmessag:[1,3,5,7,10,11,12,13,14,15,16,19],onpowercommand:11,onrgbcolorcommand:12,onspeedcommand:10,onstatecommand:[10,12],onswingmod:11,onswingmodecommand:11,ontargettemperaturecommand:11,open:[10,12,13,24,29,30,31],oper:[12,23],optim:[39,43],optimist:[7,10,12,13,14,16,19],option:[16,36],order:32,other:[6,17,31],otherwis:0,output:[10,24,25,26],over:32,overload:[11,14,18],overrid:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],own:[0,1,24,36],owner:24,ownership:1,panel:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,29,33,37,42,43],paramet:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,39,43],pars:[7,10,11,12,13,14],part:[23,40],pass:[1,9,24],password:[1,35,40,41,42],payload:[1,3,5,7,10,11,12,13,14,15,16,19,24,41],payloadlength:1,percentag:10,perform:[1,20],period:[1,40],physic:[36,37],pick:[35,36],piec:40,pin:29,pleas:[0,1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,19,23,24,28,31,33,36,37,41,42],plu:23,point:[1,3,9,11,14,18],pointer:[0,1,9,24,25,36],port:[1,35],posit:7,positionfeatur:7,possibl:[5,7,10,11,12,13,14,15,16,17,19,35,43],potenti:39,pow:23,power:[11,29,33,37,42],powerfeatur:11,precis:[11,14,18,23],precisionp0:[3,14,18],precisionp1:[3,11],precisionp2:3,precisionp3:3,prefix:[1,24,39,43],prerequisit:[30,43],present:[26,30,35],press:[5,9,29],preview:29,previou:[4,7,8,10,11,12,13,14,16,17,18,19],privat:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],pro:28,process:[1,17,38],processmessag:1,produc:[1,3,5,7,9,10,11,12,13,14,15,16,17,19,20],progmem:[1,3,6,8,9,11,14,24],progmemitem:25,progmempropertyvalu:24,project:[31,40,43],proper:[7,10,11,12,13,14,23,24],properti:[0,1,6,7,13,24,25,39,43],propertyentrytyp:24,propertyvaluetyp:24,protect:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],protocol:32,provid:[11,14,18,26,34,40],publish:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,24,29,33,38,39,43],publishact:11,publishauxst:11,publishavail:[0,3],publishbright:12,publishcolortemperatur:12,publishconfig:3,publishcurrenttemperatur:11,publishfanmod:11,publishimag:6,publishmod:11,publishondatatop:3,publishposit:7,publishrgbcolor:12,publishspe:10,publishst:[4,7,8,10,12,13,14,16,19],publishswingmod:11,publishtargettemperatur:11,publishvalu:18,pubsub:1,pubsubcli:[1,31],pure:28,purpos:[1,24],push:[7,10,12,38],quickli:37,r2:28,r3:28,r:12,ram:[33,36,37,43],random:37,rang:10,raw:6,rbb:12,re:[1,11,17,31,32,40],reboot:37,receiv:[1,3,5,7,10,11,12,13,14,16,19,24,41],recogn:24,recommend:[32,33,36,37],reconnect:[1,43],reconnectinterv:1,red:12,reduc:24,refer:[31,43],regist:[0,1,3,5,7,10,11,12,13,14,15,16,19,37,38],registri:0,relat:33,reli:[33,38],remov:1,replac:42,report:[3,7,8,10,11,12,13,14,16,19,29,39,43],repres:[0,1,4,5,6,8,9,10,11,14,16,23,25,26,36,37],represent:[0,9,17,23,24,25,26,29],requir:[33,35,37],reset:23,resourc:[3,33,37,43],result:[23,34,37],retain:[1,3,5,7,9,10,11,12,13,14,15,16,19,41],rfid:29,rgb:[12,29],rgbcolor:12,rgbfeatur:12,rgbstringmaxlength:12,roller:7,root:31,router:8,rule:[38,40],runtim:[33,37],s:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,24,28,29,36,37,38,39,40,42,43],safe:1,safest:36,samd:29,same:[0,1,4,5,7,8,10,11,12,13,14,15,16,18,19,42],save:[0,3,23,26,33,34],scale:12,scan:[20,29],scanner:[20,29,37],scene:[15,29,37],scope:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,36],search:31,second:31,secur:[39,43],see:[11,33],select:[16,29,31,37],selector:29,semicolon:16,send:20,sender:[5,7,10,11,12,13,14,15,16,19],sensor:[1,4,14,17,18,19,29,33,36,37,38],separ:[16,33],sequenc:36,serial:[0,3,11,16,24,25],serializerentri:24,serverhostnam:1,serverip:1,serverport:1,session:24,set:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,24,33,35,36],setact:11,setauxst:11,setavail:[0,3,33],setbasevalu:23,setbright:12,setbrightnessscal:12,setcolortemperatur:12,setcurrentact:11,setcurrentauxst:11,setcurrentbright:12,setcurrentcolortemperatur:12,setcurrentcurrenttemperatur:11,setcurrentfanmod:11,setcurrentmod:11,setcurrentposit:7,setcurrentrgbcolor:12,setcurrentspe:10,setcurrentst:[4,7,8,10,12,13,14,16,19],setcurrentswingmod:11,setcurrenttargettemperatur:11,setcurrenttemperatur:11,setcurrentvalu:18,setdataprefix:[1,38],setdeviceclass:[4,5,7,14,17,19],setdiscoveryprefix:[1,38],setencod:6,setfanmod:11,setforceupd:17,seticon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],setlastwil:1,setmanufactur:[0,36],setmax:14,setmaxmir:12,setmaxtemp:11,setmin:14,setminmir:12,setmintemp:11,setmod:[11,14],setmodel:[0,36],setnam:[0,3,36],setopt:16,setoptimist:[7,10,12,13,14,16,19],setp:11,setposit:7,setprecis:23,setretain:[5,7,10,11,12,13,14,15,16,19],setrgbcolor:12,setsoftwarevers:[0,36],setsourcetyp:8,setspe:10,setspeedrangemax:10,setspeedrangemin:10,setstat:[4,7,8,10,12,13,14,16,19],setstep:14,setswingmod:11,settargettemperatur:11,settemperatureunit:11,settempstep:11,setter:36,setuniqueid:[0,40],setunitofmeasur:[14,17],setup:[32,33,35,37,38,40,41,42],setvalu:[17,18],share:[0,39,43],shield:43,should:[0,1,3,7,10,11,12,14,16,23,28,35,42],show:33,shown:33,shutter:7,simpl:[29,36,37],simplifi:23,sinc:1,singl:[24,33,37],singleton:1,size:[9,23,24,25,26],sizeof:[33,35,36,37,38,40,41,42],sketch:31,skip:40,slider:[14,29],smallest:14,so:[0,3,10,26,32,36,37],softwar:[0,36],softwarevers:0,solid:39,solut:[33,36,42],some:[1,5,24,26,34,37,38,41],sonoff:28,sourc:8,sourcetyp:8,sourcetypebluetooth:8,sourcetypebluetoothl:8,sourcetypegp:8,sourcetyperout:8,sourcetypeunknown:8,spec:36,specif:[3,33,34],specifi:[0,1,3,9,25,35],speed:[10,29],speed_rang:10,speed_range_min:10,speedsfeatur:10,src:26,ssl:[39,43],start:[40,43],state:[0,3,4,7,8,10,11,12,13,14,16,18,19,29,33,38,43],stateclos:7,statehom:8,statelock:13,statenotavail:8,statenothom:8,stateopen:7,statestop:7,stateunknown:[7,8,13],stateunlock:13,statu:40,step:[10,11,14,30],stop:29,store:[1,3,14,16,17,24,25],str:26,strcmp:41,stream:[1,24],string:[0,1,3,6,8,9,11,14,16,17,23,24,25,26,29],struct:[12,24],structur:24,subclass:[3,17],submodul:31,subscrib:[1,3,29,41,43],subscribetop:3,subscript:[1,39,43],subtyp:[9,24],successfulli:[4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,25,43],suffix:26,suppli:33,support:[3,9,10,11,12,28,33,34,36,39,43],swing:11,swingfeatur:11,swingmod:11,t:[1,4,7,8,10,11,12,13,14,16,17,18,19,30,33,40],tabl:[34,37],tag:[20,29,31,37],tagscan:20,take:[1,33,38,41,42],target:[11,29],targettemperaturefeatur:11,tcp:[1,32,33,42],teh:1,temperatur:[11,12,29],temperatureunit:11,templat:[11,14],termin:[0,23],test:[28,43],testament:[29,43],text:37,textual:17,than:[23,25],thei:[11,37],them:[34,36],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,26,30,33,34,35,37,39,40,41,42],those:34,three:[3,36],through:1,tick:40,time:[1,3,5,7,10,11,12,13,14,16,17,19,41],tl:42,tofloat:23,toint16:23,toint32:23,toint8:23,topic:[0,1,3,5,7,10,11,12,13,14,15,16,19,24,29,39,41,43],topicentrytyp:24,topicp:24,topictyp:24,tostr:23,touint16:23,touint32:23,touint8:23,track:33,tracker:[8,37],trackerst:8,traffic:[1,42],trigger:[5,9,15,29,37],triggersubtyp:9,triggertyp:9,truncat:34,turn:33,turnoff:[10,12,19],turnoffsubtyp:9,turnon:[10,12,19],turnonsubtyp:9,tuya:28,twice:0,two:[3,26,31,38,43],type:[1,3,6,7,8,9,10,11,12,13,14,17,22,23,24,25,31,34,36,38,39,40,43],typedef:25,ui:14,uint16_t:[0,1,3,5,6,7,9,10,11,12,13,14,15,16,18,19,23,24,25,26,41],uint32_t:[1,11,14,18,23],uint8_t:[1,3,5,6,7,10,11,12,13,14,15,16,18,19,23,24,25,41],unattend:42,unclear:30,uncom:34,understand:[3,39],uniqu:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,39,43],uniqueid:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20],unit:[11,14,17,37,43],unitofmeasur:[14,17],unknownact:11,unknownentrytyp:24,unknownfanmod:11,unknownmod:11,unknownpropertyvaluetyp:24,unknownswingmod:11,unlik:17,unlock:[13,34],uno:[28,37,43],unsupport:9,up:40,updat:[4,6,7,8,10,11,12,13,14,16,17,18,19],upfront:24,uptim:29,us:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24,25,26,28,29,31,32,33,34,35,37,38,40,41,42,43],usag:36,user:[20,31],usernam:[1,35,40,41,42],util:[22,33,37,38,39,43],v2:31,vacuum:37,valu:[3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24],valuetyp:24,variabl:24,variant:35,verifi:[1,3,9],version:[0,31,36],via:[0,3,11,12,16,29,34],virtual:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,34],voltag:29,wa:[0,1,3,9,16,17,28,43],wai:[0,31,33,36,43],wait:40,wall:[9,29],want:[1,4,7,8,10,11,12,13,14,16,17,18,19,33,34],wasn:[8,11,13,14],welcom:30,were:[9,24,25],what:[11,14,17,18,40],when:[0,1,7,10,11,12,13,14,15,16,19,33,41],whenev:[1,38],where:[1,23,24,26,36],whether:[0,1,3,9,24,25,26],which:[3,28],whose:36,wi:[28,36],wifi:40,wificli:[1,40],wificlientsecur:42,window:29,withavail:24,withdevic:24,within:10,without:[0,4,7,8,10,11,12,13,14,16,18,19,23,33],wl_connect:40,wl_mac_addr_length:40,won:[1,4,7,8,10,11,12,13,14,16,18,19,33],work:[0,28,32,43],worri:40,wrapper:1,write:[1,24],writepayload:1,written:[1,23,24],www:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],you:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,28,30,31,32,33,34,35,36,37,38,39,40,41,42],your:[0,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,35,36,37,38,40,42],zero:23},titles:["HADevice class","HAMqtt class","Core API","HABaseDeviceType class","HABinarySensor class","HAButton class","HACamera class","HACover class","HADeviceTracker class","HADeviceTrigger class","HAFan class","HAHVAC class","HALight class","HALock class","HANumber class","HAScene class","HASelect class","HASensor class","HASensorNumber class","HASwitch class","HATagScanner class","Device types API","API reference","HANumeric class","HASerializer class","HASerializerArray class","HAUtils class","Utils API","Compatible Hardware","Examples","Getting started","Installation","Prerequisites","Availability reporting","Compiler macros","Connection parameters","Device configuration","Device types","Discovery","Library","Introduction","MQTT advanced features","MQTT security","ArduinoHA documentation"],titleterms:{"1":36,"2":36,"3":36,"byte":36,"char":36,"class":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"const":36,advanc:41,api:[2,21,22,27],arduino:[31,40],arduinoha:43,arrai:36,avail:33,boilerpl:40,callback:41,code:34,compat:28,compil:34,configur:36,connect:[35,42],constructor:36,core:2,debug:34,devic:[21,33,36,37],discoveri:38,doc:43,document:43,dure:36,esp32:40,esp8266:40,exampl:29,featur:[41,43],get:30,habasedevicetyp:3,habinarysensor:4,habutton:5,hacamera:6,hacov:7,hadevic:[0,36],hadevicetrack:8,hadevicetrigg:9,hafan:10,hahvac:11,halight:12,halock:13,hamqtt:1,hanumb:14,hanumer:23,hardwar:28,hascen:15,haselect:16,hasensor:17,hasensornumb:18,haseri:24,haserializerarrai:25,haswitch:19,hatagscann:20,hautil:26,id:[31,36],instal:31,introduct:40,librari:39,limit:37,lwt:33,macro:34,makeesparduino:31,messag:41,method:36,mode:34,mqtt:[33,41,42],optim:34,paramet:35,prefix:38,prerequisit:32,properti:36,provid:36,publish:41,refer:22,report:33,s:33,secur:42,setuniqueid:36,setup:36,share:33,ssl:42,start:30,string:36,subscript:41,support:37,topic:38,type:[21,33,37],uniqu:36,us:36,util:27}})
\ No newline at end of file
+Search.setIndex({docnames:["documents/api/core/ha-device","documents/api/core/ha-mqtt","documents/api/core/index","documents/api/device-types/ha-base-device-type","documents/api/device-types/ha-binary-sensor","documents/api/device-types/ha-button","documents/api/device-types/ha-camera","documents/api/device-types/ha-cover","documents/api/device-types/ha-device-tracker","documents/api/device-types/ha-device-trigger","documents/api/device-types/ha-fan","documents/api/device-types/ha-hvac","documents/api/device-types/ha-light","documents/api/device-types/ha-lock","documents/api/device-types/ha-number","documents/api/device-types/ha-scene","documents/api/device-types/ha-select","documents/api/device-types/ha-sensor","documents/api/device-types/ha-sensor-number","documents/api/device-types/ha-switch","documents/api/device-types/ha-tag-scanner","documents/api/device-types/index","documents/api/index","documents/api/utils/ha-numeric","documents/api/utils/ha-serializer","documents/api/utils/ha-serializer-array","documents/api/utils/ha-utils","documents/api/utils/index","documents/getting-started/compatible-hardware","documents/getting-started/examples","documents/getting-started/index","documents/getting-started/installation","documents/getting-started/prerequisites","documents/library/availability-reporting","documents/library/compiler-macros","documents/library/connection-params","documents/library/device-configuration","documents/library/device-types","documents/library/discovery","documents/library/index","documents/library/introduction","documents/library/mqtt-advanced","documents/library/mqtt-security","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["documents/api/core/ha-device.rst","documents/api/core/ha-mqtt.rst","documents/api/core/index.rst","documents/api/device-types/ha-base-device-type.rst","documents/api/device-types/ha-binary-sensor.rst","documents/api/device-types/ha-button.rst","documents/api/device-types/ha-camera.rst","documents/api/device-types/ha-cover.rst","documents/api/device-types/ha-device-tracker.rst","documents/api/device-types/ha-device-trigger.rst","documents/api/device-types/ha-fan.rst","documents/api/device-types/ha-hvac.rst","documents/api/device-types/ha-light.rst","documents/api/device-types/ha-lock.rst","documents/api/device-types/ha-number.rst","documents/api/device-types/ha-scene.rst","documents/api/device-types/ha-select.rst","documents/api/device-types/ha-sensor.rst","documents/api/device-types/ha-sensor-number.rst","documents/api/device-types/ha-switch.rst","documents/api/device-types/ha-tag-scanner.rst","documents/api/device-types/index.rst","documents/api/index.rst","documents/api/utils/ha-numeric.rst","documents/api/utils/ha-serializer.rst","documents/api/utils/ha-serializer-array.rst","documents/api/utils/ha-utils.rst","documents/api/utils/index.rst","documents/getting-started/compatible-hardware.rst","documents/getting-started/examples.rst","documents/getting-started/index.rst","documents/getting-started/installation.rst","documents/getting-started/prerequisites.rst","documents/library/availability-reporting.rst","documents/library/compiler-macros.rst","documents/library/connection-params.rst","documents/library/device-configuration.rst","documents/library/device-types.rst","documents/library/discovery.rst","documents/library/index.rst","documents/library/introduction.rst","documents/library/mqtt-advanced.rst","documents/library/mqtt-security.rst","index.rst"],objects:{"":[[3,0,1,"_CPPv416HABaseDeviceType","HABaseDeviceType"],[3,1,1,"_CPPv4N16HABaseDeviceType12AvailabilityE","HABaseDeviceType::Availability"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE","HABaseDeviceType::Availability::AvailabilityDefault"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE","HABaseDeviceType::Availability::AvailabilityOffline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE","HABaseDeviceType::Availability::AvailabilityOnline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE","HABaseDeviceType::AvailabilityDefault"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE","HABaseDeviceType::AvailabilityOffline"],[3,2,1,"_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE","HABaseDeviceType::AvailabilityOnline"],[3,3,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType"],[3,4,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType::componentName"],[3,4,1,"_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc","HABaseDeviceType::HABaseDeviceType::uniqueId"],[3,1,1,"_CPPv4N16HABaseDeviceType15NumberPrecisionE","HABaseDeviceType::NumberPrecision"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E","HABaseDeviceType::NumberPrecision::PrecisionP0"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E","HABaseDeviceType::NumberPrecision::PrecisionP1"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E","HABaseDeviceType::NumberPrecision::PrecisionP2"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E","HABaseDeviceType::NumberPrecision::PrecisionP3"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E","HABaseDeviceType::PrecisionP0"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E","HABaseDeviceType::PrecisionP1"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E","HABaseDeviceType::PrecisionP2"],[3,2,1,"_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E","HABaseDeviceType::PrecisionP3"],[3,5,1,"_CPPv4N16HABaseDeviceType13_availabilityE","HABaseDeviceType::_availability"],[3,5,1,"_CPPv4N16HABaseDeviceType14_componentNameE","HABaseDeviceType::_componentName"],[3,5,1,"_CPPv4N16HABaseDeviceType5_nameE","HABaseDeviceType::_name"],[3,5,1,"_CPPv4N16HABaseDeviceType9_objectIdE","HABaseDeviceType::_objectId"],[3,5,1,"_CPPv4N16HABaseDeviceType11_serializerE","HABaseDeviceType::_serializer"],[3,5,1,"_CPPv4N16HABaseDeviceType9_uniqueIdE","HABaseDeviceType::_uniqueId"],[3,3,1,"_CPPv4N16HABaseDeviceType15buildSerializerEv","HABaseDeviceType::buildSerializer"],[3,3,1,"_CPPv4NK16HABaseDeviceType13componentNameEv","HABaseDeviceType::componentName"],[3,3,1,"_CPPv4N16HABaseDeviceType17destroySerializerEv","HABaseDeviceType::destroySerializer"],[3,3,1,"_CPPv4NK16HABaseDeviceType7getNameEv","HABaseDeviceType::getName"],[3,3,1,"_CPPv4NK16HABaseDeviceType11getObjectIdEv","HABaseDeviceType::getObjectId"],[3,3,1,"_CPPv4NK16HABaseDeviceType24isAvailabilityConfiguredEv","HABaseDeviceType::isAvailabilityConfigured"],[3,3,1,"_CPPv4NK16HABaseDeviceType8isOnlineEv","HABaseDeviceType::isOnline"],[3,3,1,"_CPPv4N16HABaseDeviceType4mqttEv","HABaseDeviceType::mqtt"],[3,3,1,"_CPPv4N16HABaseDeviceType15onMqttConnectedEv","HABaseDeviceType::onMqttConnected"],[3,3,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::length"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t","HABaseDeviceType::onMqttMessage::topic"],[3,3,1,"_CPPv4N16HABaseDeviceType19publishAvailabilityEv","HABaseDeviceType::publishAvailability"],[3,3,1,"_CPPv4N16HABaseDeviceType13publishConfigEv","HABaseDeviceType::publishConfig"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic"],[3,3,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::isProgmemData"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::length"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::payload"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::retained"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb","HABaseDeviceType::publishOnDataTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb","HABaseDeviceType::publishOnDataTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb","HABaseDeviceType::publishOnDataTopic::topic"],[3,3,1,"_CPPv4N16HABaseDeviceType15setAvailabilityEb","HABaseDeviceType::setAvailability"],[3,4,1,"_CPPv4N16HABaseDeviceType15setAvailabilityEb","HABaseDeviceType::setAvailability::online"],[3,3,1,"_CPPv4N16HABaseDeviceType7setNameEPKc","HABaseDeviceType::setName"],[3,4,1,"_CPPv4N16HABaseDeviceType7setNameEPKc","HABaseDeviceType::setName::name"],[3,3,1,"_CPPv4N16HABaseDeviceType11setObjectIdEPKc","HABaseDeviceType::setObjectId"],[3,4,1,"_CPPv4N16HABaseDeviceType11setObjectIdEPKc","HABaseDeviceType::setObjectId::objectId"],[3,3,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic"],[3,4,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic::topic"],[3,4,1,"_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper","HABaseDeviceType::subscribeTopic::uniqueId"],[3,3,1,"_CPPv4NK16HABaseDeviceType8uniqueIdEv","HABaseDeviceType::uniqueId"],[4,0,1,"_CPPv414HABinarySensor","HABinarySensor"],[4,3,1,"_CPPv4N14HABinarySensor14HABinarySensorEPKc","HABinarySensor::HABinarySensor"],[4,4,1,"_CPPv4N14HABinarySensor14HABinarySensorEPKc","HABinarySensor::HABinarySensor::uniqueId"],[4,5,1,"_CPPv4N14HABinarySensor6_classE","HABinarySensor::_class"],[4,5,1,"_CPPv4N14HABinarySensor13_currentStateE","HABinarySensor::_currentState"],[4,5,1,"_CPPv4N14HABinarySensor12_expireAfterE","HABinarySensor::_expireAfter"],[4,5,1,"_CPPv4N14HABinarySensor5_iconE","HABinarySensor::_icon"],[4,3,1,"_CPPv4N14HABinarySensor15buildSerializerEv","HABinarySensor::buildSerializer"],[4,3,1,"_CPPv4NK14HABinarySensor15getCurrentStateEv","HABinarySensor::getCurrentState"],[4,3,1,"_CPPv4N14HABinarySensor15onMqttConnectedEv","HABinarySensor::onMqttConnected"],[4,3,1,"_CPPv4N14HABinarySensor12publishStateEb","HABinarySensor::publishState"],[4,4,1,"_CPPv4N14HABinarySensor12publishStateEb","HABinarySensor::publishState::state"],[4,3,1,"_CPPv4N14HABinarySensor15setCurrentStateEKb","HABinarySensor::setCurrentState"],[4,4,1,"_CPPv4N14HABinarySensor15setCurrentStateEKb","HABinarySensor::setCurrentState::state"],[4,3,1,"_CPPv4N14HABinarySensor14setDeviceClassEPKc","HABinarySensor::setDeviceClass"],[4,4,1,"_CPPv4N14HABinarySensor14setDeviceClassEPKc","HABinarySensor::setDeviceClass::deviceClass"],[4,3,1,"_CPPv4N14HABinarySensor14setExpireAfterE8uint16_t","HABinarySensor::setExpireAfter"],[4,4,1,"_CPPv4N14HABinarySensor14setExpireAfterE8uint16_t","HABinarySensor::setExpireAfter::expireAfter"],[4,3,1,"_CPPv4N14HABinarySensor7setIconEPKc","HABinarySensor::setIcon"],[4,4,1,"_CPPv4N14HABinarySensor7setIconEPKc","HABinarySensor::setIcon::icon"],[4,3,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState"],[4,4,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState::force"],[4,4,1,"_CPPv4N14HABinarySensor8setStateEKbKb","HABinarySensor::setState::state"],[5,0,1,"_CPPv48HAButton","HAButton"],[5,3,1,"_CPPv4N8HAButton8HAButtonEPKc","HAButton::HAButton"],[5,4,1,"_CPPv4N8HAButton8HAButtonEPKc","HAButton::HAButton::uniqueId"],[5,5,1,"_CPPv4N8HAButton6_classE","HAButton::_class"],[5,5,1,"_CPPv4N8HAButton16_commandCallbackE","HAButton::_commandCallback"],[5,5,1,"_CPPv4N8HAButton5_iconE","HAButton::_icon"],[5,5,1,"_CPPv4N8HAButton7_retainE","HAButton::_retain"],[5,3,1,"_CPPv4N8HAButton15buildSerializerEv","HAButton::buildSerializer"],[5,3,1,"_CPPv4N8HAButton9onCommandEPFvP8HAButtonE","HAButton::onCommand"],[5,4,1,"_CPPv4N8HAButton9onCommandEPFvP8HAButtonE","HAButton::onCommand::callback"],[5,3,1,"_CPPv4N8HAButton15onMqttConnectedEv","HAButton::onMqttConnected"],[5,3,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::length"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::payload"],[5,4,1,"_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAButton::onMqttMessage::topic"],[5,3,1,"_CPPv4N8HAButton14setDeviceClassEPKc","HAButton::setDeviceClass"],[5,4,1,"_CPPv4N8HAButton14setDeviceClassEPKc","HAButton::setDeviceClass::deviceClass"],[5,3,1,"_CPPv4N8HAButton7setIconEPKc","HAButton::setIcon"],[5,4,1,"_CPPv4N8HAButton7setIconEPKc","HAButton::setIcon::icon"],[5,3,1,"_CPPv4N8HAButton9setRetainEKb","HAButton::setRetain"],[5,4,1,"_CPPv4N8HAButton9setRetainEKb","HAButton::setRetain::retain"],[6,0,1,"_CPPv48HACamera","HACamera"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBase64E","HACamera::EncodingBase64"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE","HACamera::EncodingBinary"],[6,3,1,"_CPPv4N8HACamera8HACameraEPKc","HACamera::HACamera"],[6,4,1,"_CPPv4N8HACamera8HACameraEPKc","HACamera::HACamera::uniqueId"],[6,1,1,"_CPPv4N8HACamera13ImageEncodingE","HACamera::ImageEncoding"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBase64E","HACamera::ImageEncoding::EncodingBase64"],[6,2,1,"_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE","HACamera::ImageEncoding::EncodingBinary"],[6,5,1,"_CPPv4N8HACamera9_encodingE","HACamera::_encoding"],[6,5,1,"_CPPv4N8HACamera5_iconE","HACamera::_icon"],[6,3,1,"_CPPv4N8HACamera15buildSerializerEv","HACamera::buildSerializer"],[6,3,1,"_CPPv4NK8HACamera19getEncodingPropertyEv","HACamera::getEncodingProperty"],[6,3,1,"_CPPv4N8HACamera15onMqttConnectedEv","HACamera::onMqttConnected"],[6,3,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage"],[6,4,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage::data"],[6,4,1,"_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t","HACamera::publishImage::length"],[6,3,1,"_CPPv4N8HACamera11setEncodingEK13ImageEncoding","HACamera::setEncoding"],[6,4,1,"_CPPv4N8HACamera11setEncodingEK13ImageEncoding","HACamera::setEncoding::encoding"],[6,3,1,"_CPPv4N8HACamera7setIconEPKc","HACamera::setIcon"],[6,4,1,"_CPPv4N8HACamera7setIconEPKc","HACamera::setIcon::icon"],[7,0,1,"_CPPv47HACover","HACover"],[7,2,1,"_CPPv4N7HACover12CoverCommand12CommandCloseE","HACover::CommandClose"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandOpenE","HACover::CommandOpen"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandStopE","HACover::CommandStop"],[7,1,1,"_CPPv4N7HACover12CoverCommandE","HACover::CoverCommand"],[7,2,1,"_CPPv4N7HACover12CoverCommand12CommandCloseE","HACover::CoverCommand::CommandClose"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandOpenE","HACover::CoverCommand::CommandOpen"],[7,2,1,"_CPPv4N7HACover12CoverCommand11CommandStopE","HACover::CoverCommand::CommandStop"],[7,1,1,"_CPPv4N7HACover10CoverStateE","HACover::CoverState"],[7,2,1,"_CPPv4N7HACover10CoverState11StateClosedE","HACover::CoverState::StateClosed"],[7,2,1,"_CPPv4N7HACover10CoverState12StateClosingE","HACover::CoverState::StateClosing"],[7,2,1,"_CPPv4N7HACover10CoverState9StateOpenE","HACover::CoverState::StateOpen"],[7,2,1,"_CPPv4N7HACover10CoverState12StateOpeningE","HACover::CoverState::StateOpening"],[7,2,1,"_CPPv4N7HACover10CoverState12StateStoppedE","HACover::CoverState::StateStopped"],[7,2,1,"_CPPv4N7HACover10CoverState12StateUnknownE","HACover::CoverState::StateUnknown"],[7,2,1,"_CPPv4N7HACover8Features15DefaultFeaturesE","HACover::DefaultFeatures"],[7,5,1,"_CPPv4N7HACover15DefaultPositionE","HACover::DefaultPosition"],[7,1,1,"_CPPv4N7HACover8FeaturesE","HACover::Features"],[7,2,1,"_CPPv4N7HACover8Features15DefaultFeaturesE","HACover::Features::DefaultFeatures"],[7,2,1,"_CPPv4N7HACover8Features15PositionFeatureE","HACover::Features::PositionFeature"],[7,3,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover"],[7,4,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover::features"],[7,4,1,"_CPPv4N7HACover7HACoverEPKcK8Features","HACover::HACover::uniqueId"],[7,2,1,"_CPPv4N7HACover8Features15PositionFeatureE","HACover::PositionFeature"],[7,2,1,"_CPPv4N7HACover10CoverState11StateClosedE","HACover::StateClosed"],[7,2,1,"_CPPv4N7HACover10CoverState12StateClosingE","HACover::StateClosing"],[7,2,1,"_CPPv4N7HACover10CoverState9StateOpenE","HACover::StateOpen"],[7,2,1,"_CPPv4N7HACover10CoverState12StateOpeningE","HACover::StateOpening"],[7,2,1,"_CPPv4N7HACover10CoverState12StateStoppedE","HACover::StateStopped"],[7,2,1,"_CPPv4N7HACover10CoverState12StateUnknownE","HACover::StateUnknown"],[7,5,1,"_CPPv4N7HACover6_classE","HACover::_class"],[7,5,1,"_CPPv4N7HACover16_commandCallbackE","HACover::_commandCallback"],[7,5,1,"_CPPv4N7HACover16_currentPositionE","HACover::_currentPosition"],[7,5,1,"_CPPv4N7HACover13_currentStateE","HACover::_currentState"],[7,5,1,"_CPPv4N7HACover9_featuresE","HACover::_features"],[7,5,1,"_CPPv4N7HACover5_iconE","HACover::_icon"],[7,5,1,"_CPPv4N7HACover11_optimisticE","HACover::_optimistic"],[7,5,1,"_CPPv4N7HACover7_retainE","HACover::_retain"],[7,3,1,"_CPPv4N7HACover15buildSerializerEv","HACover::buildSerializer"],[7,3,1,"_CPPv4NK7HACover18getCurrentPositionEv","HACover::getCurrentPosition"],[7,3,1,"_CPPv4NK7HACover15getCurrentStateEv","HACover::getCurrentState"],[7,3,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand"],[7,4,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand::cmd"],[7,4,1,"_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t","HACover::handleCommand::length"],[7,3,1,"_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE","HACover::onCommand"],[7,4,1,"_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE","HACover::onCommand::callback"],[7,3,1,"_CPPv4N7HACover15onMqttConnectedEv","HACover::onMqttConnected"],[7,3,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::length"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::payload"],[7,4,1,"_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t","HACover::onMqttMessage::topic"],[7,3,1,"_CPPv4N7HACover15publishPositionEK7int16_t","HACover::publishPosition"],[7,4,1,"_CPPv4N7HACover15publishPositionEK7int16_t","HACover::publishPosition::position"],[7,3,1,"_CPPv4N7HACover12publishStateEK10CoverState","HACover::publishState"],[7,4,1,"_CPPv4N7HACover12publishStateEK10CoverState","HACover::publishState::state"],[7,3,1,"_CPPv4N7HACover18setCurrentPositionEK7int16_t","HACover::setCurrentPosition"],[7,4,1,"_CPPv4N7HACover18setCurrentPositionEK7int16_t","HACover::setCurrentPosition::position"],[7,3,1,"_CPPv4N7HACover15setCurrentStateEK10CoverState","HACover::setCurrentState"],[7,4,1,"_CPPv4N7HACover15setCurrentStateEK10CoverState","HACover::setCurrentState::state"],[7,3,1,"_CPPv4N7HACover14setDeviceClassEPKc","HACover::setDeviceClass"],[7,4,1,"_CPPv4N7HACover14setDeviceClassEPKc","HACover::setDeviceClass::deviceClass"],[7,3,1,"_CPPv4N7HACover7setIconEPKc","HACover::setIcon"],[7,4,1,"_CPPv4N7HACover7setIconEPKc","HACover::setIcon::icon"],[7,3,1,"_CPPv4N7HACover13setOptimisticEKb","HACover::setOptimistic"],[7,4,1,"_CPPv4N7HACover13setOptimisticEKb","HACover::setOptimistic::optimistic"],[7,3,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition"],[7,4,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition::force"],[7,4,1,"_CPPv4N7HACover11setPositionEK7int16_tKb","HACover::setPosition::position"],[7,3,1,"_CPPv4N7HACover9setRetainEKb","HACover::setRetain"],[7,4,1,"_CPPv4N7HACover9setRetainEKb","HACover::setRetain::retain"],[7,3,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState"],[7,4,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState::force"],[7,4,1,"_CPPv4N7HACover8setStateEK10CoverStateKb","HACover::setState::state"],[0,0,1,"_CPPv48HADevice","HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEPKc","HADevice::HADevice"],[0,3,1,"_CPPv4N8HADevice8HADeviceEv","HADevice::HADevice"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice::length"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t","HADevice::HADevice::uniqueId"],[0,4,1,"_CPPv4N8HADevice8HADeviceEPKc","HADevice::HADevice::uniqueId"],[0,5,1,"_CPPv4N8HADevice18_availabilityTopicE","HADevice::_availabilityTopic"],[0,5,1,"_CPPv4N8HADevice10_availableE","HADevice::_available"],[0,5,1,"_CPPv4N8HADevice18_extendedUniqueIdsE","HADevice::_extendedUniqueIds"],[0,5,1,"_CPPv4N8HADevice13_ownsUniqueIdE","HADevice::_ownsUniqueId"],[0,5,1,"_CPPv4N8HADevice11_serializerE","HADevice::_serializer"],[0,5,1,"_CPPv4N8HADevice19_sharedAvailabilityE","HADevice::_sharedAvailability"],[0,5,1,"_CPPv4N8HADevice9_uniqueIdE","HADevice::_uniqueId"],[0,3,1,"_CPPv4N8HADevice23enableExtendedUniqueIdsEv","HADevice::enableExtendedUniqueIds"],[0,3,1,"_CPPv4N8HADevice14enableLastWillEv","HADevice::enableLastWill"],[0,3,1,"_CPPv4N8HADevice24enableSharedAvailabilityEv","HADevice::enableSharedAvailability"],[0,3,1,"_CPPv4NK8HADevice20getAvailabilityTopicEv","HADevice::getAvailabilityTopic"],[0,3,1,"_CPPv4NK8HADevice13getSerializerEv","HADevice::getSerializer"],[0,3,1,"_CPPv4NK8HADevice11getUniqueIdEv","HADevice::getUniqueId"],[0,3,1,"_CPPv4NK8HADevice11isAvailableEv","HADevice::isAvailable"],[0,3,1,"_CPPv4NK8HADevice26isExtendedUniqueIdsEnabledEv","HADevice::isExtendedUniqueIdsEnabled"],[0,3,1,"_CPPv4NK8HADevice27isSharedAvailabilityEnabledEv","HADevice::isSharedAvailabilityEnabled"],[0,3,1,"_CPPv4NK8HADevice19publishAvailabilityEv","HADevice::publishAvailability"],[0,3,1,"_CPPv4N8HADevice15setAvailabilityEb","HADevice::setAvailability"],[0,4,1,"_CPPv4N8HADevice15setAvailabilityEb","HADevice::setAvailability::online"],[0,3,1,"_CPPv4N8HADevice19setConfigurationUrlEPKc","HADevice::setConfigurationUrl"],[0,4,1,"_CPPv4N8HADevice19setConfigurationUrlEPKc","HADevice::setConfigurationUrl::url"],[0,3,1,"_CPPv4N8HADevice15setManufacturerEPKc","HADevice::setManufacturer"],[0,4,1,"_CPPv4N8HADevice15setManufacturerEPKc","HADevice::setManufacturer::manufacturer"],[0,3,1,"_CPPv4N8HADevice8setModelEPKc","HADevice::setModel"],[0,4,1,"_CPPv4N8HADevice8setModelEPKc","HADevice::setModel::model"],[0,3,1,"_CPPv4N8HADevice7setNameEPKc","HADevice::setName"],[0,4,1,"_CPPv4N8HADevice7setNameEPKc","HADevice::setName::name"],[0,3,1,"_CPPv4N8HADevice18setSoftwareVersionEPKc","HADevice::setSoftwareVersion"],[0,4,1,"_CPPv4N8HADevice18setSoftwareVersionEPKc","HADevice::setSoftwareVersion::softwareVersion"],[0,3,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId"],[0,4,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId::length"],[0,4,1,"_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t","HADevice::setUniqueId::uniqueId"],[0,3,1,"_CPPv4N8HADeviceD0Ev","HADevice::~HADevice"],[8,0,1,"_CPPv415HADeviceTracker","HADeviceTracker"],[8,3,1,"_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc","HADeviceTracker::HADeviceTracker"],[8,4,1,"_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc","HADeviceTracker::HADeviceTracker::uniqueId"],[8,1,1,"_CPPv4N15HADeviceTracker10SourceTypeE","HADeviceTracker::SourceType"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE","HADeviceTracker::SourceType::SourceTypeBluetooth"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE","HADeviceTracker::SourceType::SourceTypeBluetoothLE"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE","HADeviceTracker::SourceType::SourceTypeGPS"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE","HADeviceTracker::SourceType::SourceTypeRouter"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE","HADeviceTracker::SourceType::SourceTypeUnknown"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE","HADeviceTracker::SourceTypeBluetooth"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE","HADeviceTracker::SourceTypeBluetoothLE"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE","HADeviceTracker::SourceTypeGPS"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE","HADeviceTracker::SourceTypeRouter"],[8,2,1,"_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE","HADeviceTracker::SourceTypeUnknown"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState9StateHomeE","HADeviceTracker::StateHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE","HADeviceTracker::StateNotAvailable"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE","HADeviceTracker::StateNotHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE","HADeviceTracker::StateUnknown"],[8,1,1,"_CPPv4N15HADeviceTracker12TrackerStateE","HADeviceTracker::TrackerState"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState9StateHomeE","HADeviceTracker::TrackerState::StateHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE","HADeviceTracker::TrackerState::StateNotAvailable"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE","HADeviceTracker::TrackerState::StateNotHome"],[8,2,1,"_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE","HADeviceTracker::TrackerState::StateUnknown"],[8,5,1,"_CPPv4N15HADeviceTracker13_currentStateE","HADeviceTracker::_currentState"],[8,5,1,"_CPPv4N15HADeviceTracker5_iconE","HADeviceTracker::_icon"],[8,5,1,"_CPPv4N15HADeviceTracker11_sourceTypeE","HADeviceTracker::_sourceType"],[8,3,1,"_CPPv4N15HADeviceTracker15buildSerializerEv","HADeviceTracker::buildSerializer"],[8,3,1,"_CPPv4NK15HADeviceTracker21getSourceTypePropertyEv","HADeviceTracker::getSourceTypeProperty"],[8,3,1,"_CPPv4NK15HADeviceTracker8getStateEv","HADeviceTracker::getState"],[8,3,1,"_CPPv4N15HADeviceTracker15onMqttConnectedEv","HADeviceTracker::onMqttConnected"],[8,3,1,"_CPPv4N15HADeviceTracker12publishStateE12TrackerState","HADeviceTracker::publishState"],[8,4,1,"_CPPv4N15HADeviceTracker12publishStateE12TrackerState","HADeviceTracker::publishState::state"],[8,3,1,"_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState","HADeviceTracker::setCurrentState"],[8,4,1,"_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState","HADeviceTracker::setCurrentState::state"],[8,3,1,"_CPPv4N15HADeviceTracker7setIconEPKc","HADeviceTracker::setIcon"],[8,4,1,"_CPPv4N15HADeviceTracker7setIconEPKc","HADeviceTracker::setIcon::icon"],[8,3,1,"_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType","HADeviceTracker::setSourceType"],[8,4,1,"_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType","HADeviceTracker::setSourceType::type"],[8,3,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState"],[8,4,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState::force"],[8,4,1,"_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb","HADeviceTracker::setState::state"],[9,0,1,"_CPPv415HADeviceTrigger","HADeviceTrigger"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE","HADeviceTrigger::Button1Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE","HADeviceTrigger::Button2Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE","HADeviceTrigger::Button3Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE","HADeviceTrigger::Button4Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE","HADeviceTrigger::Button5Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE","HADeviceTrigger::Button6Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE","HADeviceTrigger::ButtonDoublePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE","HADeviceTrigger::ButtonLongPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE","HADeviceTrigger::ButtonLongReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE","HADeviceTrigger::ButtonQuadruplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE","HADeviceTrigger::ButtonQuintuplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE","HADeviceTrigger::ButtonShortPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE","HADeviceTrigger::ButtonShortReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE","HADeviceTrigger::ButtonTriplePressType"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger"],[9,3,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger::subtype"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype","HADeviceTrigger::HADeviceTrigger::type"],[9,4,1,"_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc","HADeviceTrigger::HADeviceTrigger::type"],[9,1,1,"_CPPv4N15HADeviceTrigger14TriggerSubtypeE","HADeviceTrigger::TriggerSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE","HADeviceTrigger::TriggerSubtype::Button1Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE","HADeviceTrigger::TriggerSubtype::Button2Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE","HADeviceTrigger::TriggerSubtype::Button3Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE","HADeviceTrigger::TriggerSubtype::Button4Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE","HADeviceTrigger::TriggerSubtype::Button5Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE","HADeviceTrigger::TriggerSubtype::Button6Subtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE","HADeviceTrigger::TriggerSubtype::TurnOffSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE","HADeviceTrigger::TriggerSubtype::TurnOnSubtype"],[9,1,1,"_CPPv4N15HADeviceTrigger11TriggerTypeE","HADeviceTrigger::TriggerType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE","HADeviceTrigger::TriggerType::ButtonDoublePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE","HADeviceTrigger::TriggerType::ButtonLongPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE","HADeviceTrigger::TriggerType::ButtonLongReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE","HADeviceTrigger::TriggerType::ButtonQuadruplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE","HADeviceTrigger::TriggerType::ButtonQuintuplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE","HADeviceTrigger::TriggerType::ButtonShortPressType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE","HADeviceTrigger::TriggerType::ButtonShortReleaseType"],[9,2,1,"_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE","HADeviceTrigger::TriggerType::ButtonTriplePressType"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE","HADeviceTrigger::TurnOffSubtype"],[9,2,1,"_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE","HADeviceTrigger::TurnOnSubtype"],[9,5,1,"_CPPv4N15HADeviceTrigger17_isProgmemSubtypeE","HADeviceTrigger::_isProgmemSubtype"],[9,5,1,"_CPPv4N15HADeviceTrigger14_isProgmemTypeE","HADeviceTrigger::_isProgmemType"],[9,5,1,"_CPPv4N15HADeviceTrigger8_subtypeE","HADeviceTrigger::_subtype"],[9,5,1,"_CPPv4N15HADeviceTrigger5_typeE","HADeviceTrigger::_type"],[9,3,1,"_CPPv4N15HADeviceTrigger15buildSerializerEv","HADeviceTrigger::buildSerializer"],[9,3,1,"_CPPv4N15HADeviceTrigger13buildUniqueIdEv","HADeviceTrigger::buildUniqueId"],[9,3,1,"_CPPv4NK15HADeviceTrigger15calculateIdSizeEv","HADeviceTrigger::calculateIdSize"],[9,3,1,"_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype","HADeviceTrigger::determineProgmemSubtype"],[9,4,1,"_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype","HADeviceTrigger::determineProgmemSubtype::subtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType","HADeviceTrigger::determineProgmemType"],[9,4,1,"_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType","HADeviceTrigger::determineProgmemType::type"],[9,3,1,"_CPPv4NK15HADeviceTrigger10getSubtypeEv","HADeviceTrigger::getSubtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger7getTypeEv","HADeviceTrigger::getType"],[9,3,1,"_CPPv4NK15HADeviceTrigger16isProgmemSubtypeEv","HADeviceTrigger::isProgmemSubtype"],[9,3,1,"_CPPv4NK15HADeviceTrigger13isProgmemTypeEv","HADeviceTrigger::isProgmemType"],[9,3,1,"_CPPv4N15HADeviceTrigger15onMqttConnectedEv","HADeviceTrigger::onMqttConnected"],[9,3,1,"_CPPv4N15HADeviceTrigger7triggerEv","HADeviceTrigger::trigger"],[9,3,1,"_CPPv4N15HADeviceTriggerD0Ev","HADeviceTrigger::~HADeviceTrigger"],[10,0,1,"_CPPv45HAFan","HAFan"],[10,2,1,"_CPPv4N5HAFan8Features15DefaultFeaturesE","HAFan::DefaultFeatures"],[10,1,1,"_CPPv4N5HAFan8FeaturesE","HAFan::Features"],[10,2,1,"_CPPv4N5HAFan8Features15DefaultFeaturesE","HAFan::Features::DefaultFeatures"],[10,2,1,"_CPPv4N5HAFan8Features13SpeedsFeatureE","HAFan::Features::SpeedsFeature"],[10,3,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan"],[10,4,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan::features"],[10,4,1,"_CPPv4N5HAFan5HAFanEPKcK7uint8_t","HAFan::HAFan::uniqueId"],[10,2,1,"_CPPv4N5HAFan8Features13SpeedsFeatureE","HAFan::SpeedsFeature"],[10,5,1,"_CPPv4N5HAFan13_currentSpeedE","HAFan::_currentSpeed"],[10,5,1,"_CPPv4N5HAFan13_currentStateE","HAFan::_currentState"],[10,5,1,"_CPPv4N5HAFan9_featuresE","HAFan::_features"],[10,5,1,"_CPPv4N5HAFan5_iconE","HAFan::_icon"],[10,5,1,"_CPPv4N5HAFan11_optimisticE","HAFan::_optimistic"],[10,5,1,"_CPPv4N5HAFan7_retainE","HAFan::_retain"],[10,5,1,"_CPPv4N5HAFan14_speedCallbackE","HAFan::_speedCallback"],[10,5,1,"_CPPv4N5HAFan14_speedRangeMaxE","HAFan::_speedRangeMax"],[10,5,1,"_CPPv4N5HAFan14_speedRangeMinE","HAFan::_speedRangeMin"],[10,5,1,"_CPPv4N5HAFan14_stateCallbackE","HAFan::_stateCallback"],[10,3,1,"_CPPv4N5HAFan15buildSerializerEv","HAFan::buildSerializer"],[10,3,1,"_CPPv4NK5HAFan15getCurrentSpeedEv","HAFan::getCurrentSpeed"],[10,3,1,"_CPPv4NK5HAFan15getCurrentStateEv","HAFan::getCurrentState"],[10,3,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand"],[10,4,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand::cmd"],[10,4,1,"_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t","HAFan::handleSpeedCommand::length"],[10,3,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand"],[10,4,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand::cmd"],[10,4,1,"_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t","HAFan::handleStateCommand::length"],[10,3,1,"_CPPv4N5HAFan15onMqttConnectedEv","HAFan::onMqttConnected"],[10,3,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::length"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::payload"],[10,4,1,"_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAFan::onMqttMessage::topic"],[10,3,1,"_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE","HAFan::onSpeedCommand"],[10,4,1,"_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE","HAFan::onSpeedCommand::callback"],[10,3,1,"_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE","HAFan::onStateCommand"],[10,4,1,"_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE","HAFan::onStateCommand::callback"],[10,3,1,"_CPPv4N5HAFan12publishSpeedEK8uint16_t","HAFan::publishSpeed"],[10,4,1,"_CPPv4N5HAFan12publishSpeedEK8uint16_t","HAFan::publishSpeed::speed"],[10,3,1,"_CPPv4N5HAFan12publishStateEKb","HAFan::publishState"],[10,4,1,"_CPPv4N5HAFan12publishStateEKb","HAFan::publishState::state"],[10,3,1,"_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t","HAFan::setCurrentSpeed"],[10,4,1,"_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t","HAFan::setCurrentSpeed::speed"],[10,3,1,"_CPPv4N5HAFan15setCurrentStateEKb","HAFan::setCurrentState"],[10,4,1,"_CPPv4N5HAFan15setCurrentStateEKb","HAFan::setCurrentState::state"],[10,3,1,"_CPPv4N5HAFan7setIconEPKc","HAFan::setIcon"],[10,4,1,"_CPPv4N5HAFan7setIconEPKc","HAFan::setIcon::icon"],[10,3,1,"_CPPv4N5HAFan13setOptimisticEKb","HAFan::setOptimistic"],[10,4,1,"_CPPv4N5HAFan13setOptimisticEKb","HAFan::setOptimistic::optimistic"],[10,3,1,"_CPPv4N5HAFan9setRetainEKb","HAFan::setRetain"],[10,4,1,"_CPPv4N5HAFan9setRetainEKb","HAFan::setRetain::retain"],[10,3,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed"],[10,4,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed::force"],[10,4,1,"_CPPv4N5HAFan8setSpeedEK8uint16_tKb","HAFan::setSpeed::speed"],[10,3,1,"_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t","HAFan::setSpeedRangeMax"],[10,4,1,"_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t","HAFan::setSpeedRangeMax::max"],[10,3,1,"_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t","HAFan::setSpeedRangeMin"],[10,4,1,"_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t","HAFan::setSpeedRangeMin::min"],[10,3,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState"],[10,4,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState::force"],[10,4,1,"_CPPv4N5HAFan8setStateEKbKb","HAFan::setState::state"],[10,3,1,"_CPPv4N5HAFan7turnOffEv","HAFan::turnOff"],[10,3,1,"_CPPv4N5HAFan6turnOnEv","HAFan::turnOn"],[11,0,1,"_CPPv46HAHVAC","HAHVAC"],[11,1,1,"_CPPv4N6HAHVAC6ActionE","HAHVAC::Action"],[11,2,1,"_CPPv4N6HAHVAC6Action13CoolingActionE","HAHVAC::Action::CoolingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action12DryingActionE","HAHVAC::Action::DryingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action9FanActionE","HAHVAC::Action::FanAction"],[11,2,1,"_CPPv4N6HAHVAC6Action13HeatingActionE","HAHVAC::Action::HeatingAction"],[11,2,1,"_CPPv4N6HAHVAC6Action10IdleActionE","HAHVAC::Action::IdleAction"],[11,2,1,"_CPPv4N6HAHVAC6Action9OffActionE","HAHVAC::Action::OffAction"],[11,2,1,"_CPPv4N6HAHVAC6Action13UnknownActionE","HAHVAC::Action::UnknownAction"],[11,2,1,"_CPPv4N6HAHVAC8Features13ActionFeatureE","HAHVAC::ActionFeature"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11AutoFanModeE","HAHVAC::AutoFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8AutoModeE","HAHVAC::AutoMode"],[11,2,1,"_CPPv4N6HAHVAC8Features17AuxHeatingFeatureE","HAHVAC::AuxHeatingFeature"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11CelsiusUnitE","HAHVAC::CelsiusUnit"],[11,2,1,"_CPPv4N6HAHVAC4Mode8CoolModeE","HAHVAC::CoolMode"],[11,2,1,"_CPPv4N6HAHVAC6Action13CoolingActionE","HAHVAC::CoolingAction"],[11,5,1,"_CPPv4N6HAHVAC15DefaultFanModesE","HAHVAC::DefaultFanModes"],[11,2,1,"_CPPv4N6HAHVAC8Features15DefaultFeaturesE","HAHVAC::DefaultFeatures"],[11,5,1,"_CPPv4N6HAHVAC12DefaultModesE","HAHVAC::DefaultModes"],[11,5,1,"_CPPv4N6HAHVAC17DefaultSwingModesE","HAHVAC::DefaultSwingModes"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11DefaultUnitE","HAHVAC::DefaultUnit"],[11,2,1,"_CPPv4N6HAHVAC4Mode7DryModeE","HAHVAC::DryMode"],[11,2,1,"_CPPv4N6HAHVAC6Action12DryingActionE","HAHVAC::DryingAction"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit14FahrenheitUnitE","HAHVAC::FahrenheitUnit"],[11,2,1,"_CPPv4N6HAHVAC6Action9FanActionE","HAHVAC::FanAction"],[11,2,1,"_CPPv4N6HAHVAC8Features10FanFeatureE","HAHVAC::FanFeature"],[11,1,1,"_CPPv4N6HAHVAC7FanModeE","HAHVAC::FanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11AutoFanModeE","HAHVAC::FanMode::AutoFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11HighFanModeE","HAHVAC::FanMode::HighFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode10LowFanModeE","HAHVAC::FanMode::LowFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode13MediumFanModeE","HAHVAC::FanMode::MediumFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode14UnknownFanModeE","HAHVAC::FanMode::UnknownFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11FanOnlyModeE","HAHVAC::FanOnlyMode"],[11,1,1,"_CPPv4N6HAHVAC8FeaturesE","HAHVAC::Features"],[11,2,1,"_CPPv4N6HAHVAC8Features13ActionFeatureE","HAHVAC::Features::ActionFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features17AuxHeatingFeatureE","HAHVAC::Features::AuxHeatingFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features15DefaultFeaturesE","HAHVAC::Features::DefaultFeatures"],[11,2,1,"_CPPv4N6HAHVAC8Features10FanFeatureE","HAHVAC::Features::FanFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12ModesFeatureE","HAHVAC::Features::ModesFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12PowerFeatureE","HAHVAC::Features::PowerFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12SwingFeatureE","HAHVAC::Features::SwingFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features24TargetTemperatureFeatureE","HAHVAC::Features::TargetTemperatureFeature"],[11,3,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::features"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::precision"],[11,4,1,"_CPPv4N6HAHVAC6HAHVACEPKcK8uint16_tK15NumberPrecision","HAHVAC::HAHVAC::uniqueId"],[11,2,1,"_CPPv4N6HAHVAC4Mode8HeatModeE","HAHVAC::HeatMode"],[11,2,1,"_CPPv4N6HAHVAC6Action13HeatingActionE","HAHVAC::HeatingAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode11HighFanModeE","HAHVAC::HighFanMode"],[11,2,1,"_CPPv4N6HAHVAC6Action10IdleActionE","HAHVAC::IdleAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode10LowFanModeE","HAHVAC::LowFanMode"],[11,2,1,"_CPPv4N6HAHVAC7FanMode13MediumFanModeE","HAHVAC::MediumFanMode"],[11,1,1,"_CPPv4N6HAHVAC4ModeE","HAHVAC::Mode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8AutoModeE","HAHVAC::Mode::AutoMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8CoolModeE","HAHVAC::Mode::CoolMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode7DryModeE","HAHVAC::Mode::DryMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11FanOnlyModeE","HAHVAC::Mode::FanOnlyMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode8HeatModeE","HAHVAC::Mode::HeatMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode7OffModeE","HAHVAC::Mode::OffMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11UnknownModeE","HAHVAC::Mode::UnknownMode"],[11,2,1,"_CPPv4N6HAHVAC8Features12ModesFeatureE","HAHVAC::ModesFeature"],[11,2,1,"_CPPv4N6HAHVAC6Action9OffActionE","HAHVAC::OffAction"],[11,2,1,"_CPPv4N6HAHVAC4Mode7OffModeE","HAHVAC::OffMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode12OffSwingModeE","HAHVAC::OffSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode11OnSwingModeE","HAHVAC::OnSwingMode"],[11,2,1,"_CPPv4N6HAHVAC8Features12PowerFeatureE","HAHVAC::PowerFeature"],[11,2,1,"_CPPv4N6HAHVAC8Features12SwingFeatureE","HAHVAC::SwingFeature"],[11,1,1,"_CPPv4N6HAHVAC9SwingModeE","HAHVAC::SwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode12OffSwingModeE","HAHVAC::SwingMode::OffSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode11OnSwingModeE","HAHVAC::SwingMode::OnSwingMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode16UnknownSwingModeE","HAHVAC::SwingMode::UnknownSwingMode"],[11,2,1,"_CPPv4N6HAHVAC8Features24TargetTemperatureFeatureE","HAHVAC::TargetTemperatureFeature"],[11,1,1,"_CPPv4N6HAHVAC15TemperatureUnitE","HAHVAC::TemperatureUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11CelsiusUnitE","HAHVAC::TemperatureUnit::CelsiusUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit11DefaultUnitE","HAHVAC::TemperatureUnit::DefaultUnit"],[11,2,1,"_CPPv4N6HAHVAC15TemperatureUnit14FahrenheitUnitE","HAHVAC::TemperatureUnit::FahrenheitUnit"],[11,2,1,"_CPPv4N6HAHVAC6Action13UnknownActionE","HAHVAC::UnknownAction"],[11,2,1,"_CPPv4N6HAHVAC7FanMode14UnknownFanModeE","HAHVAC::UnknownFanMode"],[11,2,1,"_CPPv4N6HAHVAC4Mode11UnknownModeE","HAHVAC::UnknownMode"],[11,2,1,"_CPPv4N6HAHVAC9SwingMode16UnknownSwingModeE","HAHVAC::UnknownSwingMode"],[11,5,1,"_CPPv4N6HAHVAC7_actionE","HAHVAC::_action"],[11,5,1,"_CPPv4N6HAHVAC12_auxCallbackE","HAHVAC::_auxCallback"],[11,5,1,"_CPPv4N6HAHVAC9_auxStateE","HAHVAC::_auxState"],[11,5,1,"_CPPv4N6HAHVAC19_currentTemperatureE","HAHVAC::_currentTemperature"],[11,5,1,"_CPPv4N6HAHVAC8_fanModeE","HAHVAC::_fanMode"],[11,5,1,"_CPPv4N6HAHVAC16_fanModeCallbackE","HAHVAC::_fanModeCallback"],[11,5,1,"_CPPv4N6HAHVAC9_fanModesE","HAHVAC::_fanModes"],[11,5,1,"_CPPv4N6HAHVAC19_fanModesSerializerE","HAHVAC::_fanModesSerializer"],[11,5,1,"_CPPv4N6HAHVAC9_featuresE","HAHVAC::_features"],[11,5,1,"_CPPv4N6HAHVAC5_iconE","HAHVAC::_icon"],[11,5,1,"_CPPv4N6HAHVAC8_maxTempE","HAHVAC::_maxTemp"],[11,5,1,"_CPPv4N6HAHVAC8_minTempE","HAHVAC::_minTemp"],[11,5,1,"_CPPv4N6HAHVAC5_modeE","HAHVAC::_mode"],[11,5,1,"_CPPv4N6HAHVAC13_modeCallbackE","HAHVAC::_modeCallback"],[11,5,1,"_CPPv4N6HAHVAC6_modesE","HAHVAC::_modes"],[11,5,1,"_CPPv4N6HAHVAC16_modesSerializerE","HAHVAC::_modesSerializer"],[11,5,1,"_CPPv4N6HAHVAC14_powerCallbackE","HAHVAC::_powerCallback"],[11,5,1,"_CPPv4N6HAHVAC10_precisionE","HAHVAC::_precision"],[11,5,1,"_CPPv4N6HAHVAC7_retainE","HAHVAC::_retain"],[11,5,1,"_CPPv4N6HAHVAC10_swingModeE","HAHVAC::_swingMode"],[11,5,1,"_CPPv4N6HAHVAC18_swingModeCallbackE","HAHVAC::_swingModeCallback"],[11,5,1,"_CPPv4N6HAHVAC11_swingModesE","HAHVAC::_swingModes"],[11,5,1,"_CPPv4N6HAHVAC21_swingModesSerializerE","HAHVAC::_swingModesSerializer"],[11,5,1,"_CPPv4N6HAHVAC18_targetTemperatureE","HAHVAC::_targetTemperature"],[11,5,1,"_CPPv4N6HAHVAC26_targetTemperatureCallbackE","HAHVAC::_targetTemperatureCallback"],[11,5,1,"_CPPv4N6HAHVAC9_tempStepE","HAHVAC::_tempStep"],[11,5,1,"_CPPv4N6HAHVAC16_temperatureUnitE","HAHVAC::_temperatureUnit"],[11,3,1,"_CPPv4N6HAHVAC15buildSerializerEv","HAHVAC::buildSerializer"],[11,3,1,"_CPPv4N6HAHVAC27getCommandWithFloatTemplateEv","HAHVAC::getCommandWithFloatTemplate"],[11,3,1,"_CPPv4NK6HAHVAC16getCurrentActionEv","HAHVAC::getCurrentAction"],[11,3,1,"_CPPv4NK6HAHVAC18getCurrentAuxStateEv","HAHVAC::getCurrentAuxState"],[11,3,1,"_CPPv4NK6HAHVAC17getCurrentFanModeEv","HAHVAC::getCurrentFanMode"],[11,3,1,"_CPPv4NK6HAHVAC14getCurrentModeEv","HAHVAC::getCurrentMode"],[11,3,1,"_CPPv4NK6HAHVAC19getCurrentSwingModeEv","HAHVAC::getCurrentSwingMode"],[11,3,1,"_CPPv4NK6HAHVAC27getCurrentTargetTemperatureEv","HAHVAC::getCurrentTargetTemperature"],[11,3,1,"_CPPv4NK6HAHVAC21getCurrentTemperatureEv","HAHVAC::getCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand"],[11,4,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC21handleAuxStateCommandEPK7uint8_tK8uint16_t","HAHVAC::handleAuxStateCommand::length"],[11,3,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand"],[11,4,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC20handleFanModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleFanModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand"],[11,4,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC17handleModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand"],[11,4,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC18handlePowerCommandEPK7uint8_tK8uint16_t","HAHVAC::handlePowerCommand::length"],[11,3,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand"],[11,4,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC22handleSwingModeCommandEPK7uint8_tK8uint16_t","HAHVAC::handleSwingModeCommand::length"],[11,3,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand"],[11,4,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand::cmd"],[11,4,1,"_CPPv4N6HAHVAC30handleTargetTemperatureCommandEPK7uint8_tK8uint16_t","HAHVAC::handleTargetTemperatureCommand::length"],[11,3,1,"_CPPv4N6HAHVAC17onAuxStateCommandEPFvbP6HAHVACE","HAHVAC::onAuxStateCommand"],[11,4,1,"_CPPv4N6HAHVAC17onAuxStateCommandEPFvbP6HAHVACE","HAHVAC::onAuxStateCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC16onFanModeCommandEPFv7FanModeP6HAHVACE","HAHVAC::onFanModeCommand"],[11,4,1,"_CPPv4N6HAHVAC16onFanModeCommandEPFv7FanModeP6HAHVACE","HAHVAC::onFanModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC13onModeCommandEPFv4ModeP6HAHVACE","HAHVAC::onModeCommand"],[11,4,1,"_CPPv4N6HAHVAC13onModeCommandEPFv4ModeP6HAHVACE","HAHVAC::onModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC15onMqttConnectedEv","HAHVAC::onMqttConnected"],[11,3,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::length"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::payload"],[11,4,1,"_CPPv4N6HAHVAC13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAHVAC::onMqttMessage::topic"],[11,3,1,"_CPPv4N6HAHVAC14onPowerCommandEPFvbP6HAHVACE","HAHVAC::onPowerCommand"],[11,4,1,"_CPPv4N6HAHVAC14onPowerCommandEPFvbP6HAHVACE","HAHVAC::onPowerCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC18onSwingModeCommandEPFv9SwingModeP6HAHVACE","HAHVAC::onSwingModeCommand"],[11,4,1,"_CPPv4N6HAHVAC18onSwingModeCommandEPFv9SwingModeP6HAHVACE","HAHVAC::onSwingModeCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC26onTargetTemperatureCommandEPFv9HANumericP6HAHVACE","HAHVAC::onTargetTemperatureCommand"],[11,4,1,"_CPPv4N6HAHVAC26onTargetTemperatureCommandEPFv9HANumericP6HAHVACE","HAHVAC::onTargetTemperatureCommand::callback"],[11,3,1,"_CPPv4N6HAHVAC13publishActionEK6Action","HAHVAC::publishAction"],[11,4,1,"_CPPv4N6HAHVAC13publishActionEK6Action","HAHVAC::publishAction::action"],[11,3,1,"_CPPv4N6HAHVAC15publishAuxStateEKb","HAHVAC::publishAuxState"],[11,4,1,"_CPPv4N6HAHVAC15publishAuxStateEKb","HAHVAC::publishAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC25publishCurrentTemperatureERK9HANumeric","HAHVAC::publishCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC25publishCurrentTemperatureERK9HANumeric","HAHVAC::publishCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC14publishFanModeEK7FanMode","HAHVAC::publishFanMode"],[11,4,1,"_CPPv4N6HAHVAC14publishFanModeEK7FanMode","HAHVAC::publishFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC11publishModeEK4Mode","HAHVAC::publishMode"],[11,4,1,"_CPPv4N6HAHVAC11publishModeEK4Mode","HAHVAC::publishMode::mode"],[11,3,1,"_CPPv4N6HAHVAC16publishSwingModeEK9SwingMode","HAHVAC::publishSwingMode"],[11,4,1,"_CPPv4N6HAHVAC16publishSwingModeEK9SwingMode","HAHVAC::publishSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC24publishTargetTemperatureERK9HANumeric","HAHVAC::publishTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC24publishTargetTemperatureERK9HANumeric","HAHVAC::publishTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction"],[11,4,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction::action"],[11,4,1,"_CPPv4N6HAHVAC9setActionEK6ActionKb","HAHVAC::setAction::force"],[11,3,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState"],[11,4,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState::force"],[11,4,1,"_CPPv4N6HAHVAC11setAuxStateEKbKb","HAHVAC::setAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC16setCurrentActionEK6Action","HAHVAC::setCurrentAction"],[11,4,1,"_CPPv4N6HAHVAC16setCurrentActionEK6Action","HAHVAC::setCurrentAction::action"],[11,3,1,"_CPPv4N6HAHVAC18setCurrentAuxStateEKb","HAHVAC::setCurrentAuxState"],[11,4,1,"_CPPv4N6HAHVAC18setCurrentAuxStateEKb","HAHVAC::setCurrentAuxState::state"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK6int8_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int16_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int32_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7uint8_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint16_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint32_t","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEKf","HAHVAC::setCurrentCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureERK9HANumeric","HAHVAC::setCurrentCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK6int8_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int16_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7int32_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK7uint8_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint16_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEK8uint32_t","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureEKf","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC28setCurrentCurrentTemperatureERK9HANumeric","HAHVAC::setCurrentCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC17setCurrentFanModeEK7FanMode","HAHVAC::setCurrentFanMode"],[11,4,1,"_CPPv4N6HAHVAC17setCurrentFanModeEK7FanMode","HAHVAC::setCurrentFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC14setCurrentModeEK4Mode","HAHVAC::setCurrentMode"],[11,4,1,"_CPPv4N6HAHVAC14setCurrentModeEK4Mode","HAHVAC::setCurrentMode::mode"],[11,3,1,"_CPPv4N6HAHVAC19setCurrentSwingModeEK9SwingMode","HAHVAC::setCurrentSwingMode"],[11,4,1,"_CPPv4N6HAHVAC19setCurrentSwingModeEK9SwingMode","HAHVAC::setCurrentSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK6int8_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int16_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int32_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7uint8_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint16_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint32_t","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEKf","HAHVAC::setCurrentTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureERK9HANumeric","HAHVAC::setCurrentTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK6int8_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int16_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7int32_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK7uint8_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint16_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEK8uint32_t","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureEKf","HAHVAC::setCurrentTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC27setCurrentTargetTemperatureERK9HANumeric","HAHVAC::setCurrentTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature"],[11,3,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK6int8_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int16_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7int32_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK7uint8_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint16_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEK8uint32_tKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureEKfKb","HAHVAC::setCurrentTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC21setCurrentTemperatureERK9HANumericKb","HAHVAC::setCurrentTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode"],[11,4,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode::force"],[11,4,1,"_CPPv4N6HAHVAC10setFanModeEK7FanModeKb","HAHVAC::setFanMode::mode"],[11,3,1,"_CPPv4N6HAHVAC11setFanModesEK7uint8_t","HAHVAC::setFanModes"],[11,4,1,"_CPPv4N6HAHVAC11setFanModesEK7uint8_t","HAHVAC::setFanModes::modes"],[11,3,1,"_CPPv4N6HAHVAC7setIconEPKc","HAHVAC::setIcon"],[11,4,1,"_CPPv4N6HAHVAC7setIconEPKc","HAHVAC::setIcon::icon"],[11,3,1,"_CPPv4N6HAHVAC10setMaxTempEKf","HAHVAC::setMaxTemp"],[11,4,1,"_CPPv4N6HAHVAC10setMaxTempEKf","HAHVAC::setMaxTemp::max"],[11,3,1,"_CPPv4N6HAHVAC10setMinTempEKf","HAHVAC::setMinTemp"],[11,4,1,"_CPPv4N6HAHVAC10setMinTempEKf","HAHVAC::setMinTemp::min"],[11,3,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode"],[11,4,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode::force"],[11,4,1,"_CPPv4N6HAHVAC7setModeEK4ModeKb","HAHVAC::setMode::mode"],[11,3,1,"_CPPv4N6HAHVAC8setModesEK7uint8_t","HAHVAC::setModes"],[11,4,1,"_CPPv4N6HAHVAC8setModesEK7uint8_t","HAHVAC::setModes::modes"],[11,3,1,"_CPPv4N6HAHVAC9setRetainEKb","HAHVAC::setRetain"],[11,4,1,"_CPPv4N6HAHVAC9setRetainEKb","HAHVAC::setRetain::retain"],[11,3,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode"],[11,4,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode::force"],[11,4,1,"_CPPv4N6HAHVAC12setSwingModeEK9SwingModeKb","HAHVAC::setSwingMode::mode"],[11,3,1,"_CPPv4N6HAHVAC13setSwingModesEK7uint8_t","HAHVAC::setSwingModes"],[11,4,1,"_CPPv4N6HAHVAC13setSwingModesEK7uint8_t","HAHVAC::setSwingModes::modes"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature"],[11,3,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature::force"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK6int8_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int16_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7int32_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK7uint8_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint16_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEK8uint32_tKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureEKfKb","HAHVAC::setTargetTemperature::temperature"],[11,4,1,"_CPPv4N6HAHVAC20setTargetTemperatureERK9HANumericKb","HAHVAC::setTargetTemperature::temperature"],[11,3,1,"_CPPv4N6HAHVAC11setTempStepEKf","HAHVAC::setTempStep"],[11,4,1,"_CPPv4N6HAHVAC11setTempStepEKf","HAHVAC::setTempStep::step"],[11,3,1,"_CPPv4N6HAHVAC18setTemperatureUnitE15TemperatureUnit","HAHVAC::setTemperatureUnit"],[11,4,1,"_CPPv4N6HAHVAC18setTemperatureUnitE15TemperatureUnit","HAHVAC::setTemperatureUnit::unit"],[11,3,1,"_CPPv4N6HAHVACD0Ev","HAHVAC::~HAHVAC"],[12,0,1,"_CPPv47HALight","HALight"],[12,2,1,"_CPPv4N7HALight8Features17BrightnessFeatureE","HALight::BrightnessFeature"],[12,2,1,"_CPPv4N7HALight8Features23ColorTemperatureFeatureE","HALight::ColorTemperatureFeature"],[12,2,1,"_CPPv4N7HALight8Features15DefaultFeaturesE","HALight::DefaultFeatures"],[12,1,1,"_CPPv4N7HALight8FeaturesE","HALight::Features"],[12,2,1,"_CPPv4N7HALight8Features17BrightnessFeatureE","HALight::Features::BrightnessFeature"],[12,2,1,"_CPPv4N7HALight8Features23ColorTemperatureFeatureE","HALight::Features::ColorTemperatureFeature"],[12,2,1,"_CPPv4N7HALight8Features15DefaultFeaturesE","HALight::Features::DefaultFeatures"],[12,2,1,"_CPPv4N7HALight8Features10RGBFeatureE","HALight::Features::RGBFeature"],[12,3,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight"],[12,4,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight::features"],[12,4,1,"_CPPv4N7HALight7HALightEPKcK7uint8_t","HALight::HALight::uniqueId"],[12,0,1,"_CPPv4N7HALight8RGBColorE","HALight::RGBColor"],[12,3,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor"],[12,3,1,"_CPPv4N7HALight8RGBColor8RGBColorEv","HALight::RGBColor::RGBColor"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::b"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::g"],[12,4,1,"_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t","HALight::RGBColor::RGBColor::r"],[12,5,1,"_CPPv4N7HALight8RGBColor4blueE","HALight::RGBColor::blue"],[12,3,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer"],[12,4,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer::data"],[12,4,1,"_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t","HALight::RGBColor::fromBuffer::length"],[12,5,1,"_CPPv4N7HALight8RGBColor5greenE","HALight::RGBColor::green"],[12,5,1,"_CPPv4N7HALight8RGBColor5isSetE","HALight::RGBColor::isSet"],[12,3,1,"_CPPv4NK7HALight8RGBColorneERK8RGBColor","HALight::RGBColor::operator!="],[12,4,1,"_CPPv4NK7HALight8RGBColorneERK8RGBColor","HALight::RGBColor::operator!=::a"],[12,3,1,"_CPPv4N7HALight8RGBColoraSERK8RGBColor","HALight::RGBColor::operator="],[12,4,1,"_CPPv4N7HALight8RGBColoraSERK8RGBColor","HALight::RGBColor::operator=::a"],[12,3,1,"_CPPv4NK7HALight8RGBColoreqERK8RGBColor","HALight::RGBColor::operator=="],[12,4,1,"_CPPv4NK7HALight8RGBColoreqERK8RGBColor","HALight::RGBColor::operator==::a"],[12,5,1,"_CPPv4N7HALight8RGBColor3redE","HALight::RGBColor::red"],[12,2,1,"_CPPv4N7HALight8Features10RGBFeatureE","HALight::RGBFeature"],[12,5,1,"_CPPv4N7HALight18RGBStringMaxLengthE","HALight::RGBStringMaxLength"],[12,5,1,"_CPPv4N7HALight19_brightnessCallbackE","HALight::_brightnessCallback"],[12,5,1,"_CPPv4N7HALight16_brightnessScaleE","HALight::_brightnessScale"],[12,5,1,"_CPPv4N7HALight25_colorTemperatureCallbackE","HALight::_colorTemperatureCallback"],[12,5,1,"_CPPv4N7HALight18_currentBrightnessE","HALight::_currentBrightness"],[12,5,1,"_CPPv4N7HALight24_currentColorTemperatureE","HALight::_currentColorTemperature"],[12,5,1,"_CPPv4N7HALight16_currentRGBColorE","HALight::_currentRGBColor"],[12,5,1,"_CPPv4N7HALight13_currentStateE","HALight::_currentState"],[12,5,1,"_CPPv4N7HALight9_featuresE","HALight::_features"],[12,5,1,"_CPPv4N7HALight5_iconE","HALight::_icon"],[12,5,1,"_CPPv4N7HALight10_maxMiredsE","HALight::_maxMireds"],[12,5,1,"_CPPv4N7HALight10_minMiredsE","HALight::_minMireds"],[12,5,1,"_CPPv4N7HALight11_optimisticE","HALight::_optimistic"],[12,5,1,"_CPPv4N7HALight7_retainE","HALight::_retain"],[12,5,1,"_CPPv4N7HALight17_rgbColorCallbackE","HALight::_rgbColorCallback"],[12,5,1,"_CPPv4N7HALight14_stateCallbackE","HALight::_stateCallback"],[12,3,1,"_CPPv4N7HALight15buildSerializerEv","HALight::buildSerializer"],[12,3,1,"_CPPv4NK7HALight20getCurrentBrightnessEv","HALight::getCurrentBrightness"],[12,3,1,"_CPPv4NK7HALight26getCurrentColorTemperatureEv","HALight::getCurrentColorTemperature"],[12,3,1,"_CPPv4NK7HALight18getCurrentRGBColorEv","HALight::getCurrentRGBColor"],[12,3,1,"_CPPv4NK7HALight15getCurrentStateEv","HALight::getCurrentState"],[12,3,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand"],[12,4,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand::cmd"],[12,4,1,"_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t","HALight::handleBrightnessCommand::length"],[12,3,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand"],[12,4,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand::cmd"],[12,4,1,"_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t","HALight::handleColorTemperatureCommand::length"],[12,3,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand"],[12,4,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand::cmd"],[12,4,1,"_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t","HALight::handleRGBCommand::length"],[12,3,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand"],[12,4,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand::cmd"],[12,4,1,"_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t","HALight::handleStateCommand::length"],[12,3,1,"_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE","HALight::onBrightnessCommand"],[12,4,1,"_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE","HALight::onBrightnessCommand::callback"],[12,3,1,"_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE","HALight::onColorTemperatureCommand"],[12,4,1,"_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE","HALight::onColorTemperatureCommand::callback"],[12,3,1,"_CPPv4N7HALight15onMqttConnectedEv","HALight::onMqttConnected"],[12,3,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::length"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::payload"],[12,4,1,"_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALight::onMqttMessage::topic"],[12,3,1,"_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE","HALight::onRGBColorCommand"],[12,4,1,"_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE","HALight::onRGBColorCommand::callback"],[12,3,1,"_CPPv4N7HALight14onStateCommandEPFvbP7HALightE","HALight::onStateCommand"],[12,4,1,"_CPPv4N7HALight14onStateCommandEPFvbP7HALightE","HALight::onStateCommand::callback"],[12,3,1,"_CPPv4N7HALight17publishBrightnessEK7uint8_t","HALight::publishBrightness"],[12,4,1,"_CPPv4N7HALight17publishBrightnessEK7uint8_t","HALight::publishBrightness::brightness"],[12,3,1,"_CPPv4N7HALight23publishColorTemperatureEK8uint16_t","HALight::publishColorTemperature"],[12,4,1,"_CPPv4N7HALight23publishColorTemperatureEK8uint16_t","HALight::publishColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight15publishRGBColorERK8RGBColor","HALight::publishRGBColor"],[12,4,1,"_CPPv4N7HALight15publishRGBColorERK8RGBColor","HALight::publishRGBColor::color"],[12,3,1,"_CPPv4N7HALight12publishStateEKb","HALight::publishState"],[12,4,1,"_CPPv4N7HALight12publishStateEKb","HALight::publishState::state"],[12,3,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness"],[12,4,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness::brightness"],[12,4,1,"_CPPv4N7HALight13setBrightnessEK7uint8_tKb","HALight::setBrightness::force"],[12,3,1,"_CPPv4N7HALight18setBrightnessScaleEK7uint8_t","HALight::setBrightnessScale"],[12,4,1,"_CPPv4N7HALight18setBrightnessScaleEK7uint8_t","HALight::setBrightnessScale::scale"],[12,3,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature"],[12,4,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature::force"],[12,4,1,"_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb","HALight::setColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t","HALight::setCurrentBrightness"],[12,4,1,"_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t","HALight::setCurrentBrightness::brightness"],[12,3,1,"_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t","HALight::setCurrentColorTemperature"],[12,4,1,"_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t","HALight::setCurrentColorTemperature::temperature"],[12,3,1,"_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor","HALight::setCurrentRGBColor"],[12,4,1,"_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor","HALight::setCurrentRGBColor::color"],[12,3,1,"_CPPv4N7HALight15setCurrentStateEKb","HALight::setCurrentState"],[12,4,1,"_CPPv4N7HALight15setCurrentStateEKb","HALight::setCurrentState::state"],[12,3,1,"_CPPv4N7HALight7setIconEPKc","HALight::setIcon"],[12,4,1,"_CPPv4N7HALight7setIconEPKc","HALight::setIcon::icon"],[12,3,1,"_CPPv4N7HALight12setMaxMiredsEK8uint16_t","HALight::setMaxMireds"],[12,4,1,"_CPPv4N7HALight12setMaxMiredsEK8uint16_t","HALight::setMaxMireds::mireds"],[12,3,1,"_CPPv4N7HALight12setMinMiredsEK8uint16_t","HALight::setMinMireds"],[12,4,1,"_CPPv4N7HALight12setMinMiredsEK8uint16_t","HALight::setMinMireds::mireds"],[12,3,1,"_CPPv4N7HALight13setOptimisticEKb","HALight::setOptimistic"],[12,4,1,"_CPPv4N7HALight13setOptimisticEKb","HALight::setOptimistic::optimistic"],[12,3,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor"],[12,4,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor::color"],[12,4,1,"_CPPv4N7HALight11setRGBColorERK8RGBColorKb","HALight::setRGBColor::force"],[12,3,1,"_CPPv4N7HALight9setRetainEKb","HALight::setRetain"],[12,4,1,"_CPPv4N7HALight9setRetainEKb","HALight::setRetain::retain"],[12,3,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState"],[12,4,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState::force"],[12,4,1,"_CPPv4N7HALight8setStateEKbKb","HALight::setState::state"],[12,3,1,"_CPPv4N7HALight7turnOffEv","HALight::turnOff"],[12,3,1,"_CPPv4N7HALight6turnOnEv","HALight::turnOn"],[13,0,1,"_CPPv46HALock","HALock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandLockE","HALock::CommandLock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandOpenE","HALock::CommandOpen"],[13,2,1,"_CPPv4N6HALock11LockCommand13CommandUnlockE","HALock::CommandUnlock"],[13,3,1,"_CPPv4N6HALock6HALockEPKc","HALock::HALock"],[13,4,1,"_CPPv4N6HALock6HALockEPKc","HALock::HALock::uniqueId"],[13,1,1,"_CPPv4N6HALock11LockCommandE","HALock::LockCommand"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandLockE","HALock::LockCommand::CommandLock"],[13,2,1,"_CPPv4N6HALock11LockCommand11CommandOpenE","HALock::LockCommand::CommandOpen"],[13,2,1,"_CPPv4N6HALock11LockCommand13CommandUnlockE","HALock::LockCommand::CommandUnlock"],[13,1,1,"_CPPv4N6HALock9LockStateE","HALock::LockState"],[13,2,1,"_CPPv4N6HALock9LockState11StateLockedE","HALock::LockState::StateLocked"],[13,2,1,"_CPPv4N6HALock9LockState12StateUnknownE","HALock::LockState::StateUnknown"],[13,2,1,"_CPPv4N6HALock9LockState13StateUnlockedE","HALock::LockState::StateUnlocked"],[13,2,1,"_CPPv4N6HALock9LockState11StateLockedE","HALock::StateLocked"],[13,2,1,"_CPPv4N6HALock9LockState12StateUnknownE","HALock::StateUnknown"],[13,2,1,"_CPPv4N6HALock9LockState13StateUnlockedE","HALock::StateUnlocked"],[13,5,1,"_CPPv4N6HALock16_commandCallbackE","HALock::_commandCallback"],[13,5,1,"_CPPv4N6HALock13_currentStateE","HALock::_currentState"],[13,5,1,"_CPPv4N6HALock5_iconE","HALock::_icon"],[13,5,1,"_CPPv4N6HALock11_optimisticE","HALock::_optimistic"],[13,5,1,"_CPPv4N6HALock7_retainE","HALock::_retain"],[13,3,1,"_CPPv4N6HALock15buildSerializerEv","HALock::buildSerializer"],[13,3,1,"_CPPv4NK6HALock15getCurrentStateEv","HALock::getCurrentState"],[13,3,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand"],[13,4,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand::cmd"],[13,4,1,"_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t","HALock::handleCommand::length"],[13,3,1,"_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE","HALock::onCommand"],[13,4,1,"_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE","HALock::onCommand::callback"],[13,3,1,"_CPPv4N6HALock15onMqttConnectedEv","HALock::onMqttConnected"],[13,3,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::length"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::payload"],[13,4,1,"_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t","HALock::onMqttMessage::topic"],[13,3,1,"_CPPv4N6HALock12publishStateEK9LockState","HALock::publishState"],[13,4,1,"_CPPv4N6HALock12publishStateEK9LockState","HALock::publishState::state"],[13,3,1,"_CPPv4N6HALock15setCurrentStateEK9LockState","HALock::setCurrentState"],[13,4,1,"_CPPv4N6HALock15setCurrentStateEK9LockState","HALock::setCurrentState::state"],[13,3,1,"_CPPv4N6HALock7setIconEPKc","HALock::setIcon"],[13,4,1,"_CPPv4N6HALock7setIconEPKc","HALock::setIcon::icon"],[13,3,1,"_CPPv4N6HALock13setOptimisticEKb","HALock::setOptimistic"],[13,4,1,"_CPPv4N6HALock13setOptimisticEKb","HALock::setOptimistic::optimistic"],[13,3,1,"_CPPv4N6HALock9setRetainEKb","HALock::setRetain"],[13,4,1,"_CPPv4N6HALock9setRetainEKb","HALock::setRetain::retain"],[13,3,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState"],[13,4,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState::force"],[13,4,1,"_CPPv4N6HALock8setStateEK9LockStateKb","HALock::setState::state"],[1,0,1,"_CPPv46HAMqtt","HAMqtt"],[1,1,1,"_CPPv4N6HAMqtt15ConnectionStateE","HAMqtt::ConnectionState"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateBadClientIdE","HAMqtt::ConnectionState::StateBadClientId"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState19StateBadCredentialsE","HAMqtt::ConnectionState::StateBadCredentials"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateBadProtocolE","HAMqtt::ConnectionState::StateBadProtocol"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState14StateConnectedE","HAMqtt::ConnectionState::StateConnected"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState15StateConnectingE","HAMqtt::ConnectionState::StateConnecting"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState21StateConnectionFailedE","HAMqtt::ConnectionState::StateConnectionFailed"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState19StateConnectionLostE","HAMqtt::ConnectionState::StateConnectionLost"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState22StateConnectionTimeoutE","HAMqtt::ConnectionState::StateConnectionTimeout"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState17StateDisconnectedE","HAMqtt::ConnectionState::StateDisconnected"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState17StateUnauthorizedE","HAMqtt::ConnectionState::StateUnauthorized"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateUnavailableE","HAMqtt::ConnectionState::StateUnavailable"],[1,3,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::device"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::maxDevicesTypesNb"],[1,4,1,"_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t","HAMqtt::HAMqtt::netClient"],[1,5,1,"_CPPv4N6HAMqtt17ReconnectIntervalE","HAMqtt::ReconnectInterval"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateBadClientIdE","HAMqtt::StateBadClientId"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState19StateBadCredentialsE","HAMqtt::StateBadCredentials"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateBadProtocolE","HAMqtt::StateBadProtocol"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState14StateConnectedE","HAMqtt::StateConnected"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState15StateConnectingE","HAMqtt::StateConnecting"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState21StateConnectionFailedE","HAMqtt::StateConnectionFailed"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState19StateConnectionLostE","HAMqtt::StateConnectionLost"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState22StateConnectionTimeoutE","HAMqtt::StateConnectionTimeout"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState17StateDisconnectedE","HAMqtt::StateDisconnected"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState17StateUnauthorizedE","HAMqtt::StateUnauthorized"],[1,2,1,"_CPPv4N6HAMqtt15ConnectionState16StateUnavailableE","HAMqtt::StateUnavailable"],[1,5,1,"_CPPv4N6HAMqtt18_connectedCallbackE","HAMqtt::_connectedCallback"],[1,5,1,"_CPPv4N6HAMqtt13_currentStateE","HAMqtt::_currentState"],[1,5,1,"_CPPv4N6HAMqtt11_dataPrefixE","HAMqtt::_dataPrefix"],[1,5,1,"_CPPv4N6HAMqtt7_deviceE","HAMqtt::_device"],[1,5,1,"_CPPv4N6HAMqtt13_devicesTypesE","HAMqtt::_devicesTypes"],[1,5,1,"_CPPv4N6HAMqtt15_devicesTypesNbE","HAMqtt::_devicesTypesNb"],[1,5,1,"_CPPv4N6HAMqtt21_disconnectedCallbackE","HAMqtt::_disconnectedCallback"],[1,5,1,"_CPPv4N6HAMqtt16_discoveryPrefixE","HAMqtt::_discoveryPrefix"],[1,5,1,"_CPPv4N6HAMqtt12_initializedE","HAMqtt::_initialized"],[1,5,1,"_CPPv4N6HAMqtt9_instanceE","HAMqtt::_instance"],[1,5,1,"_CPPv4N6HAMqtt24_lastConnectionAttemptAtE","HAMqtt::_lastConnectionAttemptAt"],[1,5,1,"_CPPv4N6HAMqtt16_lastWillMessageE","HAMqtt::_lastWillMessage"],[1,5,1,"_CPPv4N6HAMqtt15_lastWillRetainE","HAMqtt::_lastWillRetain"],[1,5,1,"_CPPv4N6HAMqtt14_lastWillTopicE","HAMqtt::_lastWillTopic"],[1,5,1,"_CPPv4N6HAMqtt18_maxDevicesTypesNbE","HAMqtt::_maxDevicesTypesNb"],[1,5,1,"_CPPv4N6HAMqtt16_messageCallbackE","HAMqtt::_messageCallback"],[1,5,1,"_CPPv4N6HAMqtt5_mqttE","HAMqtt::_mqtt"],[1,5,1,"_CPPv4N6HAMqtt9_passwordE","HAMqtt::_password"],[1,5,1,"_CPPv4N6HAMqtt21_stateChangedCallbackE","HAMqtt::_stateChangedCallback"],[1,5,1,"_CPPv4N6HAMqtt9_usernameE","HAMqtt::_username"],[1,3,1,"_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType","HAMqtt::addDeviceType"],[1,4,1,"_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType","HAMqtt::addDeviceType::deviceType"],[1,3,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin"],[1,3,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::password"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::serverHostname"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::serverHostname"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::serverIp"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::serverIp"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::serverPort"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::serverPort"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc","HAMqtt::begin::username"],[1,4,1,"_CPPv4N6HAMqtt5beginEPKcPKcPKc","HAMqtt::begin::username"],[1,3,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::payloadLength"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::retained"],[1,4,1,"_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb","HAMqtt::beginPublish::topic"],[1,3,1,"_CPPv4N6HAMqtt15connectToServerEv","HAMqtt::connectToServer"],[1,3,1,"_CPPv4N6HAMqtt10disconnectEv","HAMqtt::disconnect"],[1,3,1,"_CPPv4N6HAMqtt10endPublishEv","HAMqtt::endPublish"],[1,3,1,"_CPPv4NK6HAMqtt13getDataPrefixEv","HAMqtt::getDataPrefix"],[1,3,1,"_CPPv4NK6HAMqtt9getDeviceEv","HAMqtt::getDevice"],[1,3,1,"_CPPv4NK6HAMqtt18getDiscoveryPrefixEv","HAMqtt::getDiscoveryPrefix"],[1,3,1,"_CPPv4NK6HAMqtt8getStateEv","HAMqtt::getState"],[1,3,1,"_CPPv4N6HAMqtt8instanceEv","HAMqtt::instance"],[1,3,1,"_CPPv4NK6HAMqtt11isConnectedEv","HAMqtt::isConnected"],[1,3,1,"_CPPv4N6HAMqtt4loopEv","HAMqtt::loop"],[1,3,1,"_CPPv4N6HAMqtt11onConnectedEPFvvE","HAMqtt::onConnected"],[1,4,1,"_CPPv4N6HAMqtt11onConnectedEPFvvE","HAMqtt::onConnected::callback"],[1,3,1,"_CPPv4N6HAMqtt16onConnectedLogicEv","HAMqtt::onConnectedLogic"],[1,3,1,"_CPPv4N6HAMqtt14onDisconnectedEPFvvE","HAMqtt::onDisconnected"],[1,4,1,"_CPPv4N6HAMqtt14onDisconnectedEPFvvE","HAMqtt::onDisconnected::callback"],[1,3,1,"_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE","HAMqtt::onMessage"],[1,4,1,"_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE","HAMqtt::onMessage::callback"],[1,3,1,"_CPPv4N6HAMqtt14onStateChangedEPFv15ConnectionStateE","HAMqtt::onStateChanged"],[1,4,1,"_CPPv4N6HAMqtt14onStateChangedEPFv15ConnectionStateE","HAMqtt::onStateChanged::callback"],[1,3,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::length"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::payload"],[1,4,1,"_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t","HAMqtt::processMessage::topic"],[1,3,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::payload"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::retained"],[1,4,1,"_CPPv4N6HAMqtt7publishEPKcPKcb","HAMqtt::publish::topic"],[1,3,1,"_CPPv4N6HAMqtt13setBufferSizeE8uint16_t","HAMqtt::setBufferSize"],[1,4,1,"_CPPv4N6HAMqtt13setBufferSizeE8uint16_t","HAMqtt::setBufferSize::size"],[1,3,1,"_CPPv4N6HAMqtt13setDataPrefixEPKc","HAMqtt::setDataPrefix"],[1,4,1,"_CPPv4N6HAMqtt13setDataPrefixEPKc","HAMqtt::setDataPrefix::prefix"],[1,3,1,"_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc","HAMqtt::setDiscoveryPrefix"],[1,4,1,"_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc","HAMqtt::setDiscoveryPrefix::prefix"],[1,3,1,"_CPPv4N6HAMqtt12setKeepAliveE8uint16_t","HAMqtt::setKeepAlive"],[1,4,1,"_CPPv4N6HAMqtt12setKeepAliveE8uint16_t","HAMqtt::setKeepAlive::keepAlive"],[1,3,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillMessage"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillRetain"],[1,4,1,"_CPPv4N6HAMqtt11setLastWillEPKcPKcb","HAMqtt::setLastWill::lastWillTopic"],[1,3,1,"_CPPv4N6HAMqtt8setStateE15ConnectionState","HAMqtt::setState"],[1,4,1,"_CPPv4N6HAMqtt8setStateE15ConnectionState","HAMqtt::setState::state"],[1,3,1,"_CPPv4N6HAMqtt9subscribeEPKc","HAMqtt::subscribe"],[1,4,1,"_CPPv4N6HAMqtt9subscribeEPKc","HAMqtt::subscribe::topic"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper","HAMqtt::writePayload"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload"],[1,3,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload::data"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t","HAMqtt::writePayload::length"],[1,4,1,"_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t","HAMqtt::writePayload::length"],[1,3,1,"_CPPv4N6HAMqttD0Ev","HAMqtt::~HAMqtt"],[14,0,1,"_CPPv48HANumber","HANumber"],[14,3,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber"],[14,4,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber::precision"],[14,4,1,"_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision","HANumber::HANumber::uniqueId"],[14,1,1,"_CPPv4N8HANumber4ModeE","HANumber::Mode"],[14,2,1,"_CPPv4N8HANumber4Mode8ModeAutoE","HANumber::Mode::ModeAuto"],[14,2,1,"_CPPv4N8HANumber4Mode7ModeBoxE","HANumber::Mode::ModeBox"],[14,2,1,"_CPPv4N8HANumber4Mode10ModeSliderE","HANumber::Mode::ModeSlider"],[14,2,1,"_CPPv4N8HANumber4Mode8ModeAutoE","HANumber::ModeAuto"],[14,2,1,"_CPPv4N8HANumber4Mode7ModeBoxE","HANumber::ModeBox"],[14,2,1,"_CPPv4N8HANumber4Mode10ModeSliderE","HANumber::ModeSlider"],[14,5,1,"_CPPv4N8HANumber6_classE","HANumber::_class"],[14,5,1,"_CPPv4N8HANumber16_commandCallbackE","HANumber::_commandCallback"],[14,5,1,"_CPPv4N8HANumber13_currentStateE","HANumber::_currentState"],[14,5,1,"_CPPv4N8HANumber5_iconE","HANumber::_icon"],[14,5,1,"_CPPv4N8HANumber9_maxValueE","HANumber::_maxValue"],[14,5,1,"_CPPv4N8HANumber9_minValueE","HANumber::_minValue"],[14,5,1,"_CPPv4N8HANumber5_modeE","HANumber::_mode"],[14,5,1,"_CPPv4N8HANumber11_optimisticE","HANumber::_optimistic"],[14,5,1,"_CPPv4N8HANumber10_precisionE","HANumber::_precision"],[14,5,1,"_CPPv4N8HANumber7_retainE","HANumber::_retain"],[14,5,1,"_CPPv4N8HANumber5_stepE","HANumber::_step"],[14,5,1,"_CPPv4N8HANumber18_unitOfMeasurementE","HANumber::_unitOfMeasurement"],[14,3,1,"_CPPv4N8HANumber15buildSerializerEv","HANumber::buildSerializer"],[14,3,1,"_CPPv4N8HANumber18getCommandTemplateEv","HANumber::getCommandTemplate"],[14,3,1,"_CPPv4NK8HANumber15getCurrentStateEv","HANumber::getCurrentState"],[14,3,1,"_CPPv4NK8HANumber15getModePropertyEv","HANumber::getModeProperty"],[14,3,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand"],[14,4,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand::cmd"],[14,4,1,"_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t","HANumber::handleCommand::length"],[14,3,1,"_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE","HANumber::onCommand"],[14,4,1,"_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE","HANumber::onCommand::callback"],[14,3,1,"_CPPv4N8HANumber15onMqttConnectedEv","HANumber::onMqttConnected"],[14,3,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::length"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::payload"],[14,4,1,"_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t","HANumber::onMqttMessage::topic"],[14,3,1,"_CPPv4N8HANumber12publishStateERK9HANumeric","HANumber::publishState"],[14,4,1,"_CPPv4N8HANumber12publishStateERK9HANumeric","HANumber::publishState::state"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK6int8_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7int16_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7int32_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK7uint8_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK8uint16_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEK8uint32_t","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateEKf","HANumber::setCurrentState"],[14,3,1,"_CPPv4N8HANumber15setCurrentStateERK9HANumeric","HANumber::setCurrentState"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK6int8_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7int16_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7int32_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK7uint8_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK8uint16_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEK8uint32_t","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateEKf","HANumber::setCurrentState::state"],[14,4,1,"_CPPv4N8HANumber15setCurrentStateERK9HANumeric","HANumber::setCurrentState::state"],[14,3,1,"_CPPv4N8HANumber14setDeviceClassEPKc","HANumber::setDeviceClass"],[14,4,1,"_CPPv4N8HANumber14setDeviceClassEPKc","HANumber::setDeviceClass::deviceClass"],[14,3,1,"_CPPv4N8HANumber7setIconEPKc","HANumber::setIcon"],[14,4,1,"_CPPv4N8HANumber7setIconEPKc","HANumber::setIcon::icon"],[14,3,1,"_CPPv4N8HANumber6setMaxEKf","HANumber::setMax"],[14,4,1,"_CPPv4N8HANumber6setMaxEKf","HANumber::setMax::max"],[14,3,1,"_CPPv4N8HANumber6setMinEKf","HANumber::setMin"],[14,4,1,"_CPPv4N8HANumber6setMinEKf","HANumber::setMin::min"],[14,3,1,"_CPPv4N8HANumber7setModeEK4Mode","HANumber::setMode"],[14,4,1,"_CPPv4N8HANumber7setModeEK4Mode","HANumber::setMode::mode"],[14,3,1,"_CPPv4N8HANumber13setOptimisticEKb","HANumber::setOptimistic"],[14,4,1,"_CPPv4N8HANumber13setOptimisticEKb","HANumber::setOptimistic::optimistic"],[14,3,1,"_CPPv4N8HANumber9setRetainEKb","HANumber::setRetain"],[14,4,1,"_CPPv4N8HANumber9setRetainEKb","HANumber::setRetain::retain"],[14,3,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState"],[14,3,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState"],[14,4,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState::force"],[14,4,1,"_CPPv4N8HANumber8setStateEK6int8_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int16_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7int32_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK7uint8_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint16_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEK8uint32_tKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateEKfKb","HANumber::setState::state"],[14,4,1,"_CPPv4N8HANumber8setStateERK9HANumericKb","HANumber::setState::state"],[14,3,1,"_CPPv4N8HANumber7setStepEKf","HANumber::setStep"],[14,4,1,"_CPPv4N8HANumber7setStepEKf","HANumber::setStep::step"],[14,3,1,"_CPPv4N8HANumber20setUnitOfMeasurementEPKc","HANumber::setUnitOfMeasurement"],[14,4,1,"_CPPv4N8HANumber20setUnitOfMeasurementEPKc","HANumber::setUnitOfMeasurement::unitOfMeasurement"],[23,0,1,"_CPPv49HANumeric","HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7int64_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric"],[23,3,1,"_CPPv4N9HANumeric9HANumericEv","HANumeric::HANumeric"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric::precision"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7int64_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t","HANumeric::HANumeric::value"],[23,4,1,"_CPPv4N9HANumeric9HANumericEKfK7uint8_t","HANumeric::HANumeric::value"],[23,5,1,"_CPPv4N9HANumeric11MaxDigitsNbE","HANumeric::MaxDigitsNb"],[23,5,1,"_CPPv4N9HANumeric6_isSetE","HANumeric::_isSet"],[23,5,1,"_CPPv4N9HANumeric10_precisionE","HANumeric::_precision"],[23,5,1,"_CPPv4N9HANumeric6_valueE","HANumeric::_value"],[23,3,1,"_CPPv4NK9HANumeric13calculateSizeEv","HANumeric::calculateSize"],[23,3,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr"],[23,4,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr::buffer"],[23,4,1,"_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t","HANumeric::fromStr::length"],[23,3,1,"_CPPv4NK9HANumeric12getBaseValueEv","HANumeric::getBaseValue"],[23,3,1,"_CPPv4NK9HANumeric12getPrecisionEv","HANumeric::getPrecision"],[23,3,1,"_CPPv4NK9HANumeric16getPrecisionBaseEv","HANumeric::getPrecisionBase"],[23,3,1,"_CPPv4NK9HANumeric7isFloatEv","HANumeric::isFloat"],[23,3,1,"_CPPv4NK9HANumeric7isInt16Ev","HANumeric::isInt16"],[23,3,1,"_CPPv4NK9HANumeric7isInt32Ev","HANumeric::isInt32"],[23,3,1,"_CPPv4NK9HANumeric6isInt8Ev","HANumeric::isInt8"],[23,3,1,"_CPPv4NK9HANumeric5isSetEv","HANumeric::isSet"],[23,3,1,"_CPPv4NK9HANumeric8isUInt16Ev","HANumeric::isUInt16"],[23,3,1,"_CPPv4NK9HANumeric8isUInt32Ev","HANumeric::isUInt32"],[23,3,1,"_CPPv4NK9HANumeric7isUInt8Ev","HANumeric::isUInt8"],[23,3,1,"_CPPv4N9HANumericaSERK9HANumeric","HANumeric::operator="],[23,4,1,"_CPPv4N9HANumericaSERK9HANumeric","HANumeric::operator=::a"],[23,3,1,"_CPPv4NK9HANumericeqERK9HANumeric","HANumeric::operator=="],[23,4,1,"_CPPv4NK9HANumericeqERK9HANumeric","HANumeric::operator==::a"],[23,3,1,"_CPPv4N9HANumeric5resetEv","HANumeric::reset"],[23,3,1,"_CPPv4N9HANumeric12setBaseValueE7int64_t","HANumeric::setBaseValue"],[23,4,1,"_CPPv4N9HANumeric12setBaseValueE7int64_t","HANumeric::setBaseValue::value"],[23,3,1,"_CPPv4N9HANumeric12setPrecisionEK7uint8_t","HANumeric::setPrecision"],[23,4,1,"_CPPv4N9HANumeric12setPrecisionEK7uint8_t","HANumeric::setPrecision::precision"],[23,3,1,"_CPPv4NK9HANumeric7toFloatEv","HANumeric::toFloat"],[23,3,1,"_CPPv4NK9HANumeric7toInt16Ev","HANumeric::toInt16"],[23,3,1,"_CPPv4NK9HANumeric7toInt32Ev","HANumeric::toInt32"],[23,3,1,"_CPPv4NK9HANumeric6toInt8Ev","HANumeric::toInt8"],[23,3,1,"_CPPv4NK9HANumeric5toStrEPc","HANumeric::toStr"],[23,4,1,"_CPPv4NK9HANumeric5toStrEPc","HANumeric::toStr::dst"],[23,3,1,"_CPPv4NK9HANumeric8toUInt16Ev","HANumeric::toUInt16"],[23,3,1,"_CPPv4NK9HANumeric8toUInt32Ev","HANumeric::toUInt32"],[23,3,1,"_CPPv4NK9HANumeric7toUInt8Ev","HANumeric::toUInt8"],[15,0,1,"_CPPv47HAScene","HAScene"],[15,3,1,"_CPPv4N7HAScene7HASceneEPKc","HAScene::HAScene"],[15,4,1,"_CPPv4N7HAScene7HASceneEPKc","HAScene::HAScene::uniqueId"],[15,5,1,"_CPPv4N7HAScene16_commandCallbackE","HAScene::_commandCallback"],[15,5,1,"_CPPv4N7HAScene5_iconE","HAScene::_icon"],[15,5,1,"_CPPv4N7HAScene7_retainE","HAScene::_retain"],[15,3,1,"_CPPv4N7HAScene15buildSerializerEv","HAScene::buildSerializer"],[15,3,1,"_CPPv4N7HAScene9onCommandEPFvP7HASceneE","HAScene::onCommand"],[15,4,1,"_CPPv4N7HAScene9onCommandEPFvP7HASceneE","HAScene::onCommand::callback"],[15,3,1,"_CPPv4N7HAScene15onMqttConnectedEv","HAScene::onMqttConnected"],[15,3,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::length"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::payload"],[15,4,1,"_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t","HAScene::onMqttMessage::topic"],[15,3,1,"_CPPv4N7HAScene7setIconEPKc","HAScene::setIcon"],[15,4,1,"_CPPv4N7HAScene7setIconEPKc","HAScene::setIcon::icon"],[15,3,1,"_CPPv4N7HAScene9setRetainEKb","HAScene::setRetain"],[15,4,1,"_CPPv4N7HAScene9setRetainEKb","HAScene::setRetain::retain"],[16,0,1,"_CPPv48HASelect","HASelect"],[16,3,1,"_CPPv4N8HASelect8HASelectEPKc","HASelect::HASelect"],[16,4,1,"_CPPv4N8HASelect8HASelectEPKc","HASelect::HASelect::uniqueId"],[16,5,1,"_CPPv4N8HASelect16_commandCallbackE","HASelect::_commandCallback"],[16,5,1,"_CPPv4N8HASelect13_currentStateE","HASelect::_currentState"],[16,5,1,"_CPPv4N8HASelect5_iconE","HASelect::_icon"],[16,5,1,"_CPPv4N8HASelect11_optimisticE","HASelect::_optimistic"],[16,5,1,"_CPPv4N8HASelect8_optionsE","HASelect::_options"],[16,5,1,"_CPPv4N8HASelect7_retainE","HASelect::_retain"],[16,3,1,"_CPPv4N8HASelect15buildSerializerEv","HASelect::buildSerializer"],[16,3,1,"_CPPv4NK8HASelect20countOptionsInStringEPKc","HASelect::countOptionsInString"],[16,4,1,"_CPPv4NK8HASelect20countOptionsInStringEPKc","HASelect::countOptionsInString::options"],[16,3,1,"_CPPv4NK8HASelect16getCurrentOptionEv","HASelect::getCurrentOption"],[16,3,1,"_CPPv4NK8HASelect15getCurrentStateEv","HASelect::getCurrentState"],[16,3,1,"_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE","HASelect::onCommand"],[16,4,1,"_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE","HASelect::onCommand::callback"],[16,3,1,"_CPPv4N8HASelect15onMqttConnectedEv","HASelect::onMqttConnected"],[16,3,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::length"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::payload"],[16,4,1,"_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASelect::onMqttMessage::topic"],[16,3,1,"_CPPv4N8HASelect12publishStateEK6int8_t","HASelect::publishState"],[16,4,1,"_CPPv4N8HASelect12publishStateEK6int8_t","HASelect::publishState::state"],[16,3,1,"_CPPv4N8HASelect15setCurrentStateEK6int8_t","HASelect::setCurrentState"],[16,4,1,"_CPPv4N8HASelect15setCurrentStateEK6int8_t","HASelect::setCurrentState::state"],[16,3,1,"_CPPv4N8HASelect7setIconEPKc","HASelect::setIcon"],[16,4,1,"_CPPv4N8HASelect7setIconEPKc","HASelect::setIcon::icon"],[16,3,1,"_CPPv4N8HASelect13setOptimisticEKb","HASelect::setOptimistic"],[16,4,1,"_CPPv4N8HASelect13setOptimisticEKb","HASelect::setOptimistic::optimistic"],[16,3,1,"_CPPv4N8HASelect10setOptionsEPKc","HASelect::setOptions"],[16,4,1,"_CPPv4N8HASelect10setOptionsEPKc","HASelect::setOptions::options"],[16,3,1,"_CPPv4N8HASelect9setRetainEKb","HASelect::setRetain"],[16,4,1,"_CPPv4N8HASelect9setRetainEKb","HASelect::setRetain::retain"],[16,3,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState"],[16,4,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState::force"],[16,4,1,"_CPPv4N8HASelect8setStateEK6int8_tKb","HASelect::setState::state"],[16,3,1,"_CPPv4N8HASelectD0Ev","HASelect::~HASelect"],[17,0,1,"_CPPv48HASensor","HASensor"],[17,2,1,"_CPPv4N8HASensor8Features15DefaultFeaturesE","HASensor::DefaultFeatures"],[17,1,1,"_CPPv4N8HASensor8FeaturesE","HASensor::Features"],[17,2,1,"_CPPv4N8HASensor8Features15DefaultFeaturesE","HASensor::Features::DefaultFeatures"],[17,2,1,"_CPPv4N8HASensor8Features21JsonAttributesFeatureE","HASensor::Features::JsonAttributesFeature"],[17,3,1,"_CPPv4N8HASensor8HASensorEPKcK8uint16_t","HASensor::HASensor"],[17,4,1,"_CPPv4N8HASensor8HASensorEPKcK8uint16_t","HASensor::HASensor::features"],[17,4,1,"_CPPv4N8HASensor8HASensorEPKcK8uint16_t","HASensor::HASensor::uniqueId"],[17,2,1,"_CPPv4N8HASensor8Features21JsonAttributesFeatureE","HASensor::JsonAttributesFeature"],[17,5,1,"_CPPv4N8HASensor12_deviceClassE","HASensor::_deviceClass"],[17,5,1,"_CPPv4N8HASensor12_expireAfterE","HASensor::_expireAfter"],[17,5,1,"_CPPv4N8HASensor9_featuresE","HASensor::_features"],[17,5,1,"_CPPv4N8HASensor12_forceUpdateE","HASensor::_forceUpdate"],[17,5,1,"_CPPv4N8HASensor5_iconE","HASensor::_icon"],[17,5,1,"_CPPv4N8HASensor11_stateClassE","HASensor::_stateClass"],[17,5,1,"_CPPv4N8HASensor18_unitOfMeasurementE","HASensor::_unitOfMeasurement"],[17,3,1,"_CPPv4N8HASensor15buildSerializerEv","HASensor::buildSerializer"],[17,3,1,"_CPPv4N8HASensor15onMqttConnectedEv","HASensor::onMqttConnected"],[17,3,1,"_CPPv4N8HASensor14setDeviceClassEPKc","HASensor::setDeviceClass"],[17,4,1,"_CPPv4N8HASensor14setDeviceClassEPKc","HASensor::setDeviceClass::deviceClass"],[17,3,1,"_CPPv4N8HASensor14setExpireAfterE8uint16_t","HASensor::setExpireAfter"],[17,4,1,"_CPPv4N8HASensor14setExpireAfterE8uint16_t","HASensor::setExpireAfter::expireAfter"],[17,3,1,"_CPPv4N8HASensor14setForceUpdateEb","HASensor::setForceUpdate"],[17,4,1,"_CPPv4N8HASensor14setForceUpdateEb","HASensor::setForceUpdate::forceUpdate"],[17,3,1,"_CPPv4N8HASensor7setIconEPKc","HASensor::setIcon"],[17,4,1,"_CPPv4N8HASensor7setIconEPKc","HASensor::setIcon::icon"],[17,3,1,"_CPPv4N8HASensor17setJsonAttributesEPKc","HASensor::setJsonAttributes"],[17,4,1,"_CPPv4N8HASensor17setJsonAttributesEPKc","HASensor::setJsonAttributes::json"],[17,3,1,"_CPPv4N8HASensor13setStateClassEPKc","HASensor::setStateClass"],[17,4,1,"_CPPv4N8HASensor13setStateClassEPKc","HASensor::setStateClass::stateClass"],[17,3,1,"_CPPv4N8HASensor20setUnitOfMeasurementEPKc","HASensor::setUnitOfMeasurement"],[17,4,1,"_CPPv4N8HASensor20setUnitOfMeasurementEPKc","HASensor::setUnitOfMeasurement::unitOfMeasurement"],[17,3,1,"_CPPv4N8HASensor8setValueEPKc","HASensor::setValue"],[17,4,1,"_CPPv4N8HASensor8setValueEPKc","HASensor::setValue::value"],[18,0,1,"_CPPv414HASensorNumber","HASensorNumber"],[18,3,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecisionK8uint16_t","HASensorNumber::HASensorNumber"],[18,4,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecisionK8uint16_t","HASensorNumber::HASensorNumber::features"],[18,4,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecisionK8uint16_t","HASensorNumber::HASensorNumber::precision"],[18,4,1,"_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecisionK8uint16_t","HASensorNumber::HASensorNumber::uniqueId"],[18,5,1,"_CPPv4N14HASensorNumber13_currentValueE","HASensorNumber::_currentValue"],[18,5,1,"_CPPv4N14HASensorNumber10_precisionE","HASensorNumber::_precision"],[18,3,1,"_CPPv4NK14HASensorNumber15getCurrentValueEv","HASensorNumber::getCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15onMqttConnectedEv","HASensorNumber::onMqttConnected"],[18,3,1,"_CPPv4N14HASensorNumber12publishValueERK9HANumeric","HASensorNumber::publishValue"],[18,4,1,"_CPPv4N14HASensorNumber12publishValueERK9HANumeric","HASensorNumber::publishValue::value"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueEKf","HASensorNumber::setCurrentValue"],[18,3,1,"_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric","HASensorNumber::setCurrentValue"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueEKf","HASensorNumber::setCurrentValue::value"],[18,4,1,"_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric","HASensorNumber::setCurrentValue::value"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue"],[18,3,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue::force"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK6int8_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int16_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7int32_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK7uint8_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint16_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEK8uint32_tKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueEKfKb","HASensorNumber::setValue::value"],[18,4,1,"_CPPv4N14HASensorNumber8setValueERK9HANumericKb","HASensorNumber::setValue::value"],[24,0,1,"_CPPv412HASerializer","HASerializer"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE","HASerializer::ArrayPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE","HASerializer::BoolPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE","HASerializer::ConstCharPropertyValue"],[24,1,1,"_CPPv4N12HASerializer9EntryTypeE","HASerializer::EntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType13FlagEntryTypeE","HASerializer::EntryType::FlagEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE","HASerializer::EntryType::PropertyEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType14TopicEntryTypeE","HASerializer::EntryType::TopicEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE","HASerializer::EntryType::UnknownEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType13FlagEntryTypeE","HASerializer::FlagEntryType"],[24,1,1,"_CPPv4N12HASerializer8FlagTypeE","HASerializer::FlagType"],[24,2,1,"_CPPv4N12HASerializer8FlagType16WithAvailabilityE","HASerializer::FlagType::WithAvailability"],[24,2,1,"_CPPv4N12HASerializer8FlagType10WithDeviceE","HASerializer::FlagType::WithDevice"],[24,2,1,"_CPPv4N12HASerializer8FlagType12WithUniqueIdE","HASerializer::FlagType::WithUniqueId"],[24,3,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer"],[24,4,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer::deviceType"],[24,4,1,"_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t","HASerializer::HASerializer::maxEntriesNb"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE","HASerializer::NumberPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE","HASerializer::ProgmemPropertyValue"],[24,2,1,"_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE","HASerializer::PropertyEntryType"],[24,1,1,"_CPPv4N12HASerializer17PropertyValueTypeE","HASerializer::PropertyValueType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE","HASerializer::PropertyValueType::ArrayPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE","HASerializer::PropertyValueType::BoolPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE","HASerializer::PropertyValueType::ConstCharPropertyValue"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE","HASerializer::PropertyValueType::NumberPropertyType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE","HASerializer::PropertyValueType::ProgmemPropertyValue"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE","HASerializer::PropertyValueType::UnknownPropertyValueType"],[24,0,1,"_CPPv4N12HASerializer15SerializerEntryE","HASerializer::SerializerEntry"],[24,3,1,"_CPPv4N12HASerializer15SerializerEntry15SerializerEntryEv","HASerializer::SerializerEntry::SerializerEntry"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry8propertyE","HASerializer::SerializerEntry::property"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry7subtypeE","HASerializer::SerializerEntry::subtype"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry4typeE","HASerializer::SerializerEntry::type"],[24,5,1,"_CPPv4N12HASerializer15SerializerEntry5valueE","HASerializer::SerializerEntry::value"],[24,2,1,"_CPPv4N12HASerializer9EntryType14TopicEntryTypeE","HASerializer::TopicEntryType"],[24,2,1,"_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE","HASerializer::UnknownEntryType"],[24,2,1,"_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE","HASerializer::UnknownPropertyValueType"],[24,2,1,"_CPPv4N12HASerializer8FlagType16WithAvailabilityE","HASerializer::WithAvailability"],[24,2,1,"_CPPv4N12HASerializer8FlagType10WithDeviceE","HASerializer::WithDevice"],[24,2,1,"_CPPv4N12HASerializer8FlagType12WithUniqueIdE","HASerializer::WithUniqueId"],[24,5,1,"_CPPv4N12HASerializer11_deviceTypeE","HASerializer::_deviceType"],[24,5,1,"_CPPv4N12HASerializer8_entriesE","HASerializer::_entries"],[24,5,1,"_CPPv4N12HASerializer10_entriesNbE","HASerializer::_entriesNb"],[24,5,1,"_CPPv4N12HASerializer13_maxEntriesNbE","HASerializer::_maxEntriesNb"],[24,3,1,"_CPPv4N12HASerializer8addEntryEv","HASerializer::addEntry"],[24,3,1,"_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray","HASerializer::calculateArraySize"],[24,4,1,"_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray","HASerializer::calculateArraySize::array"],[24,3,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength"],[24,4,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength::component"],[24,4,1,"_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc","HASerializer::calculateConfigTopicLength::objectId"],[24,3,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength"],[24,4,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength::objectId"],[24,4,1,"_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper","HASerializer::calculateDataTopicLength::topic"],[24,3,1,"_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry","HASerializer::calculateEntrySize"],[24,4,1,"_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry","HASerializer::calculateEntrySize::entry"],[24,3,1,"_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType","HASerializer::calculateFlagSize"],[24,4,1,"_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType","HASerializer::calculateFlagSize::flag"],[24,3,1,"_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry","HASerializer::calculatePropertyValueSize"],[24,4,1,"_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry","HASerializer::calculatePropertyValueSize::entry"],[24,3,1,"_CPPv4NK12HASerializer13calculateSizeEv","HASerializer::calculateSize"],[24,3,1,"_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry","HASerializer::calculateTopicEntrySize"],[24,4,1,"_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry","HASerializer::calculateTopicEntrySize::entry"],[24,3,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::actualTopic"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::objectId"],[24,4,1,"_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper","HASerializer::compareDataTopics::topic"],[24,3,1,"_CPPv4NK12HASerializer5flushEv","HASerializer::flush"],[24,3,1,"_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry","HASerializer::flushEntry"],[24,4,1,"_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry","HASerializer::flushEntry::entry"],[24,3,1,"_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry","HASerializer::flushEntryValue"],[24,4,1,"_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry","HASerializer::flushEntryValue::entry"],[24,3,1,"_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry","HASerializer::flushFlag"],[24,4,1,"_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry","HASerializer::flushFlag::entry"],[24,3,1,"_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry","HASerializer::flushTopic"],[24,4,1,"_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry","HASerializer::flushTopic::entry"],[24,3,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::component"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::objectId"],[24,4,1,"_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc","HASerializer::generateConfigTopic::output"],[24,3,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::objectId"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::output"],[24,4,1,"_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper","HASerializer::generateDataTopic::topic"],[24,3,1,"_CPPv4NK12HASerializer10getEntriesEv","HASerializer::getEntries"],[24,3,1,"_CPPv4NK12HASerializer12getEntriesNbEv","HASerializer::getEntriesNb"],[24,3,1,"_CPPv4N12HASerializer3setEK8FlagType","HASerializer::set"],[24,3,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set"],[24,4,1,"_CPPv4N12HASerializer3setEK8FlagType","HASerializer::set::flag"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::property"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::value"],[24,4,1,"_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType","HASerializer::set::valueType"],[24,3,1,"_CPPv4N12HASerializer5topicEPK19__FlashStringHelper","HASerializer::topic"],[24,4,1,"_CPPv4N12HASerializer5topicEPK19__FlashStringHelper","HASerializer::topic::topic"],[24,3,1,"_CPPv4N12HASerializerD0Ev","HASerializer::~HASerializer"],[25,0,1,"_CPPv417HASerializerArray","HASerializerArray"],[25,3,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray"],[25,4,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray::progmemItems"],[25,4,1,"_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb","HASerializerArray::HASerializerArray::size"],[25,6,1,"_CPPv4N17HASerializerArray8ItemTypeE","HASerializerArray::ItemType"],[25,5,1,"_CPPv4N17HASerializerArray6_itemsE","HASerializerArray::_items"],[25,5,1,"_CPPv4N17HASerializerArray8_itemsNbE","HASerializerArray::_itemsNb"],[25,5,1,"_CPPv4N17HASerializerArray13_progmemItemsE","HASerializerArray::_progmemItems"],[25,5,1,"_CPPv4N17HASerializerArray5_sizeE","HASerializerArray::_size"],[25,3,1,"_CPPv4N17HASerializerArray3addE8ItemType","HASerializerArray::add"],[25,4,1,"_CPPv4N17HASerializerArray3addE8ItemType","HASerializerArray::add::item"],[25,3,1,"_CPPv4NK17HASerializerArray13calculateSizeEv","HASerializerArray::calculateSize"],[25,3,1,"_CPPv4N17HASerializerArray5clearEv","HASerializerArray::clear"],[25,3,1,"_CPPv4NK17HASerializerArray7getItemEK7uint8_t","HASerializerArray::getItem"],[25,4,1,"_CPPv4NK17HASerializerArray7getItemEK7uint8_t","HASerializerArray::getItem::index"],[25,3,1,"_CPPv4NK17HASerializerArray8getItemsEv","HASerializerArray::getItems"],[25,3,1,"_CPPv4NK17HASerializerArray10getItemsNbEv","HASerializerArray::getItemsNb"],[25,3,1,"_CPPv4NK17HASerializerArray9serializeEPc","HASerializerArray::serialize"],[25,4,1,"_CPPv4NK17HASerializerArray9serializeEPc","HASerializerArray::serialize::output"],[25,3,1,"_CPPv4N17HASerializerArrayD0Ev","HASerializerArray::~HASerializerArray"],[19,0,1,"_CPPv48HASwitch","HASwitch"],[19,3,1,"_CPPv4N8HASwitch8HASwitchEPKc","HASwitch::HASwitch"],[19,4,1,"_CPPv4N8HASwitch8HASwitchEPKc","HASwitch::HASwitch::uniqueId"],[19,5,1,"_CPPv4N8HASwitch6_classE","HASwitch::_class"],[19,5,1,"_CPPv4N8HASwitch16_commandCallbackE","HASwitch::_commandCallback"],[19,5,1,"_CPPv4N8HASwitch13_currentStateE","HASwitch::_currentState"],[19,5,1,"_CPPv4N8HASwitch5_iconE","HASwitch::_icon"],[19,5,1,"_CPPv4N8HASwitch11_optimisticE","HASwitch::_optimistic"],[19,5,1,"_CPPv4N8HASwitch7_retainE","HASwitch::_retain"],[19,3,1,"_CPPv4N8HASwitch15buildSerializerEv","HASwitch::buildSerializer"],[19,3,1,"_CPPv4NK8HASwitch15getCurrentStateEv","HASwitch::getCurrentState"],[19,3,1,"_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE","HASwitch::onCommand"],[19,4,1,"_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE","HASwitch::onCommand::callback"],[19,3,1,"_CPPv4N8HASwitch15onMqttConnectedEv","HASwitch::onMqttConnected"],[19,3,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::length"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::payload"],[19,4,1,"_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t","HASwitch::onMqttMessage::topic"],[19,3,1,"_CPPv4N8HASwitch12publishStateEKb","HASwitch::publishState"],[19,4,1,"_CPPv4N8HASwitch12publishStateEKb","HASwitch::publishState::state"],[19,3,1,"_CPPv4N8HASwitch15setCurrentStateEKb","HASwitch::setCurrentState"],[19,4,1,"_CPPv4N8HASwitch15setCurrentStateEKb","HASwitch::setCurrentState::state"],[19,3,1,"_CPPv4N8HASwitch14setDeviceClassEPKc","HASwitch::setDeviceClass"],[19,4,1,"_CPPv4N8HASwitch14setDeviceClassEPKc","HASwitch::setDeviceClass::deviceClass"],[19,3,1,"_CPPv4N8HASwitch7setIconEPKc","HASwitch::setIcon"],[19,4,1,"_CPPv4N8HASwitch7setIconEPKc","HASwitch::setIcon::icon"],[19,3,1,"_CPPv4N8HASwitch13setOptimisticEKb","HASwitch::setOptimistic"],[19,4,1,"_CPPv4N8HASwitch13setOptimisticEKb","HASwitch::setOptimistic::optimistic"],[19,3,1,"_CPPv4N8HASwitch9setRetainEKb","HASwitch::setRetain"],[19,4,1,"_CPPv4N8HASwitch9setRetainEKb","HASwitch::setRetain::retain"],[19,3,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState"],[19,4,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState::force"],[19,4,1,"_CPPv4N8HASwitch8setStateEKbKb","HASwitch::setState::state"],[19,3,1,"_CPPv4N8HASwitch7turnOffEv","HASwitch::turnOff"],[19,3,1,"_CPPv4N8HASwitch6turnOnEv","HASwitch::turnOn"],[20,0,1,"_CPPv412HATagScanner","HATagScanner"],[20,3,1,"_CPPv4N12HATagScanner12HATagScannerEPKc","HATagScanner::HATagScanner"],[20,4,1,"_CPPv4N12HATagScanner12HATagScannerEPKc","HATagScanner::HATagScanner::uniqueId"],[20,3,1,"_CPPv4N12HATagScanner15buildSerializerEv","HATagScanner::buildSerializer"],[20,3,1,"_CPPv4N12HATagScanner15onMqttConnectedEv","HATagScanner::onMqttConnected"],[20,3,1,"_CPPv4N12HATagScanner10tagScannedEPKc","HATagScanner::tagScanned"],[20,4,1,"_CPPv4N12HATagScanner10tagScannedEPKc","HATagScanner::tagScanned::tag"],[26,0,1,"_CPPv47HAUtils","HAUtils"],[26,3,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr"],[26,3,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::dst"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr::length"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::length"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t","HAUtils::byteArrayToStr::src"],[26,4,1,"_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t","HAUtils::byteArrayToStr::src"],[26,3,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith"],[26,4,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith::str"],[26,4,1,"_CPPv4N7HAUtils8endsWithEPKcPKc","HAUtils::endsWith::suffix"]]},objnames:{"0":["cpp","class","C++ class"],"1":["cpp","enum","C++ enum"],"2":["cpp","enumerator","C++ enumerator"],"3":["cpp","function","C++ function"],"4":["cpp","functionParam","C++ function parameter"],"5":["cpp","member","C++ member"],"6":["cpp","type","C++ type"]},objtypes:{"0":"cpp:class","1":"cpp:enum","2":"cpp:enumerator","3":"cpp:function","4":"cpp:functionParam","5":"cpp:member","6":"cpp:type"},terms:{"0":[3,7,10,12,14,31,36,41],"001":14,"0010fa6e384a":37,"0010fa6e384a_myvalv":37,"01":[28,37],"0x00":[33,35,36,37,38,40,41,42],"0x05":36,"0x10":[33,35,36,37,38,40,41,42],"0x1f":36,"0x38":[33,35,36,37,38,40,41,42],"0x4a":[33,35,36,37,38,40,41,42],"0x6e":[33,35,36,37,38,40,41,42],"0x8c":36,"0x9f":36,"0xb4":36,"0xbe":36,"0xc6":36,"0xc7":36,"0xce":36,"0xfa":[33,35,36,37,38,40,41,42],"1":[10,11,16,23,31,35,40,41,42],"10":23,"100":[7,10],"10000":1,"123":[23,36],"1234":[23,36],"15":[1,41],"153":12,"168":[35,36,40,41,42],"1883":[1,35],"192":[35,36,40,41,42],"2":[26,31,33],"24":[1,37],"255":12,"256":[1,41],"32768":7,"33":[28,29],"4":23,"40":37,"5":33,"50":[35,40,41,42],"500":[12,40],"512":41,"55":36,"5m":1,"6":[31,37],"60":41,"8":31,"8888":35,"break":37,"byte":[0,1,23,26,33,35,37,38,40,41,42],"case":[1,33,38],"char":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,38,41],"class":[2,21,22,27,28,34,35,36,37,38,40,41,43],"const":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,38,41],"default":[1,4,6,7,8,10,11,12,13,14,16,17,18,19,23,32,33,35,37,38,41,42],"do":1,"enum":[1,3,6,7,8,9,10,11,12,13,14,17,24],"final":[0,17],"float":[11,14,18,23],"function":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"long":[17,28,33],"new":[1,3,4,7,8,10,11,12,13,14,15,16,18,19,24,25,26,30,37],"null":[0,1,16,23,25],"public":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"return":[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24,25,26],"short":[0,3,36],"static":[1,3,7,11,12,23,24,25,26],"switch":[1,9,19,28,29,33,36,37,38],"true":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,25,26,33,41],"try":[1,28,36],"void":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,33,35,36,37,38,40,41,42],"while":[37,40],A:[16,29],By:[1,4,6,7,8,10,11,12,13,14,16,17,18,19,33,37,42],For:[9,14,16,17,23,31,33],If:[0,1,5,7,8,9,10,11,12,13,14,15,16,17,19,23,24,25,30,31],In:[1,7,10,12,13,14,16,19,33,38],It:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,28,34,40],Its:[24,37],No:3,OR:12,On:37,One:3,THe:[3,18],That:[33,38],The:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,28,29,31,32,33,34,35,36,37,38,41,42,43],Then:31,There:[31,33,36,38],These:37,To:[31,34,37],Will:[29,43],With:36,_:24,__flashstringhelp:[1,3,6,8,11,14,24],_action:11,_auxcallback:11,_auxstat:11,_avail:[0,3],_availabilitytop:0,_brightnesscallback:12,_brightnessscal:12,_class:[4,5,7,14,19],_colortemperaturecallback:12,_commandcallback:[5,7,13,14,15,16,19],_componentnam:3,_connectedcallback:1,_currentbright:12,_currentcolortemperatur:12,_currentposit:7,_currentrgbcolor:12,_currentspe:10,_currentst:[1,4,7,8,10,12,13,14,16,19],_currenttemperatur:11,_currentvalu:18,_dataprefix:1,_devic:1,_deviceclass:17,_devicestyp:1,_devicestypesnb:1,_devicetyp:24,_disconnectedcallback:1,_discoveryprefix:1,_encod:6,_entri:24,_entriesnb:24,_expireaft:[4,17],_extendeduniqueid:0,_fanmod:11,_fanmodecallback:11,_fanmodesseri:11,_featur:[7,10,11,12,17],_forceupd:17,_icon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],_initi:1,_instanc:1,_isprogmemsubtyp:9,_isprogmemtyp:9,_isset:23,_item:25,_itemsnb:25,_lastconnectionattemptat:1,_lastwillmessag:1,_lastwillretain:1,_lastwilltop:1,_maxdevicestypesnb:1,_maxentriesnb:24,_maxmir:12,_maxtemp:11,_maxvalu:14,_messagecallback:1,_minmir:12,_mintemp:11,_minvalu:14,_mode:[11,14],_modecallback:11,_modesseri:11,_mqtt:1,_name:3,_objectid:3,_optimist:[7,10,12,13,14,16,19],_option:16,_ownsuniqueid:0,_password:1,_powercallback:11,_precis:[11,14,18,23],_progmemitem:25,_retain:[5,7,10,11,12,13,14,15,16,19],_rgbcolorcallback:12,_serial:[0,3],_sharedavail:0,_size:25,_sourcetyp:8,_speedcallback:10,_speedrangemax:10,_speedrangemin:10,_statecallback:[10,12],_statechangedcallback:1,_stateclass:17,_step:14,_subtyp:9,_swingmod:11,_swingmodecallback:11,_swingmodesseri:11,_targettemperatur:11,_targettemperaturecallback:11,_temperatureunit:11,_tempstep:11,_type:9,_uniqueid:[0,3],_unitofmeasur:[14,17],_usernam:1,_valu:23,abc:36,about:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],abov:[11,14,18,37],accept:[11,14,18,36],access:[37,42],acquir:[0,1,3,4,7,8,10,11,12,13,14,16,18,19,38],across:[23,37],act:32,action:[9,11],actionfeatur:11,activ:15,actual:24,actualtop:24,ad:[10,12,23,24,25,29,43],add:[1,14,15,16,24,25,31],adddevicetyp:1,addentri:24,addon:32,address:[1,36,37,40],admin:1,advanc:[29,31,39,43],advis:[36,37],after:[1,3,4,17,32,38,40],against:42,aha:[1,38],alarm:37,alia:[10,12,19],aliv:[1,41],all:[0,1,3,30,32,33,35,36,38,39],alloc:[0,9,11,24,25,26],allow:[4,6,7,8,9,10,12,13,17,18,19,20,24,29,33,35,36,39,41,43],alphanumer:36,alreadi:40,also:[1,3,33,35,41,42],alter:37,alwai:[1,3],amount:[1,16,37],an:[0,1,6,11,14,18,23,29,31,32,36,37,41,43],analog:29,analysi:42,ani:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,19,28,36,37],anonym:1,anoth:40,anoym:35,anyth:30,api:[1,28,36,37,43],appear:[36,37],appli:14,applic:40,approach:[24,31,36],ar:[1,16,25,31,34,36,37,38,40],arduino:[5,28,29,30,37,39,42,43],arduinoha:[30,32,33,35,36,37,38,40,41,42],arduinoha_debug:34,arduinohadefin:34,argument:[11,14,18],aris:37,arrai:[0,1,11,16,24,25,26],arraypropertytyp:24,assign:[0,1,3,9,37],assist:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,34,36,37,38,42,43],asynchron:35,atmega168:37,atmega328p:37,attemp:1,attempt:[1,35],attribut:[1,3,7,11,12,17,23],aunit:43,authent:1,auto:43,autofanmod:11,autom:[9,20,37],automat:[1,33,37,38,43],automod:11,aux:11,auxheatingfeatur:11,avail:[0,1,3,4,5,7,8,11,13,14,16,17,19,24,28,29,31,39,43],availabilitydefault:3,availabilityofflin:3,availabilityonlin:3,avoid:37,b:[12,16],back:[7,10,11,12,13,14,16,19],base64:6,base:[0,9,16,20,23,25,37,43],basic:[28,29,33,38,39],becaus:[33,38],becom:33,bedroom:36,been:[4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,25],befor:[1,4,7,8,10,11,12,13,14,16,18,19,24],begin:[1,33,35,37,40,41,42],beginpublish:1,behavior:37,being:24,belong:3,below:[24,33,34,35,37,41],best:[31,36],better:3,between:[1,37,42],binari:[4,6,29,37],binary_sensor:[3,4,24],bind:41,bitwis:12,blind:7,blue:12,bluetooth:8,board:[37,43],boil:40,boilerpl:[39,43],bool:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,33],boolpropertytyp:24,boot:1,box:14,bridg:1,bright:[12,29],brightnessfeatur:12,broker:[0,1,4,7,8,10,11,12,13,14,16,18,19,24,29,32,33,35,38,40,41,42,43],brokker:32,btn0:9,bu:6,buffer:[1,23,24,41],build:[3,9,31],buildseri:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],builduniqueid:9,built:[3,9],busi:40,button1subtyp:9,button2subtyp:9,button3subtyp:9,button4subtyp:9,button5subtyp:9,button6subtyp:9,button:[4,5,7,10,11,12,16,19,29,33,37],buttondoublepresstyp:9,buttonlongpresstyp:9,buttonlongreleasetyp:9,buttonquadruplepresstyp:9,buttonquintuplepresstyp:9,buttonshortpresstyp:9,buttonshortreleasetyp:9,buttontriplepresstyp:9,bytearraytostr:26,c:[14,16,17],calcul:[9,23,24,25],calculatearrays:24,calculateconfigtopiclength:24,calculatedatatopiclength:24,calculateentrys:24,calculateflags:24,calculateids:9,calculatepropertyvalues:24,calculates:[23,24,25],calculatetopicentrys:24,call:[0,1,3,5,7,8,10,11,12,13,14,15,16,17,19,24,33,35,40,41],callback:[1,5,7,10,11,12,13,14,15,16,19,39,43],cam:[6,28,29],camera:[6,29,37],can:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,31,33,34,35,36,37,38,40,41,42],cannot:37,capabl:33,care:[33,38],cd:31,celsiusunit:11,central:1,certain:37,chang:[1,4,7,8,10,11,12,13,14,16,18,19,29,33,37,38,41],chapter:[39,40],charact:[23,36],check:[24,26],checkout:31,child:37,chip:36,choos:36,clear:[25,37],click:[5,7,9,31],client:[1,28,33,35,37,38,40,41,42],climat:11,clone:36,close:[1,29],cmd:[7,10,11,12,13,14],code:[39,40,43],codebas:37,color:[12,29],colortemp:12,colortemperaturefeatur:12,com:[4,5,6,7,8,10,11,12,13,14,15,16,17,19,31],combin:9,command:[5,7,10,11,12,13,14,15,16,19,43],commandclos:7,commandlock:13,commandopen:[7,13],commandstop:7,commandunlock:13,commun:[1,32,34,42,43],compar:[4,7,8,10,11,12,13,14,16,18,19,24],comparedatatop:24,compat:[30,43],compil:[31,39,43],complet:[28,33],compon:[3,24],componentnam:3,comprehens:42,config:24,configur:[0,1,3,24,38,39,42,43],conflict:37,confus:37,connect:[0,1,3,4,7,8,10,11,12,13,14,16,18,19,29,33,38,39,40,41,42,43],connectionst:[1,41],connecttoserv:1,consequ:[37,42],consid:33,constcharpropertyvalu:24,construct:[0,1,25,38],constructor:[0,1,3,9,11,37],contact:29,contain:[11,16,23,26],content:[1,6,36],control:[7,10,11,12,13,14,29,33,36,37],controllino:28,conveni:[11,14,18],convert:[0,23,26],coolingact:11,coolmod:11,copi:36,core:[17,22,28,39,43],corp:36,correspond:[34,36],could:[37,42],count:16,countoptionsinstr:16,coupl:34,cover:[7,16,29,37,43],covercommand:7,coverst:7,creat:[1,3,9,14,23,24,37,38],credenti:[29,35,40,42],crucial:37,current:[0,1,3,4,7,8,10,11,12,13,14,16,18,19],curtain:28,custom:[8,9,13,29,41,42,43],custompayload:41,customtop:41,cut:33,cycl:[1,35],dashboard:37,data:[1,3,6,7,10,11,12,13,14,17,24,38,40],databas:37,dawidchyrzynski:31,debug:[39,43],decim:[3,23],defaultfanmod:11,defaultfeatur:[7,10,11,12,17,18],defaultmod:11,defaultposit:7,defaultswingmod:11,defaultunit:11,defin:[3,4,14,17,20,34,37],delai:40,delet:0,depend:31,describ:[37,39,40],descript:29,deseri:23,design:43,desir:[9,25,37],destin:[23,26],destroi:[1,3],destroyseri:3,detail:40,determin:[10,24],determineprogmemsubtyp:9,determineprogmemtyp:9,develop:[17,36],devic:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,24,28,29,31,32,34,35,38,39,40,41,42,43],device_track:8,device_trigg:9,deviceclass:[4,5,7,14,17,19],devicetyp:[1,24],differ:[11,14,18,23],digit:[3,23],directli:34,disabl:[7,10,11,12,13,14,16,19,33],disconnect:1,discov:37,discover:29,discoveri:[1,3,24,29,39,42,43],discuss:30,displai:[0,5,6,14,17,18,19,29,33],distinct:[36,37],doc:17,document:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,31,37,40],doe:37,doesn:[1,7,10,12,13,14,16,17,19,25,40],don:[30,40],door:[7,13,29],down:40,doxygen:43,dropdown:[16,29,31],dryingact:11,drymod:11,dst:[23,26],dual:28,due:28,dure:35,dynam:[24,25],e:[3,6,16,17,24,33],each:[0,1,3,5,7,10,11,12,13,14,16,17,19,26,33,36,37,38,40,41],easier:26,easili:[24,33],element:25,emploi:[37,42],empti:[1,23],enabl:[0,1,3,7,10,11,12,13,14,16,17,18,19,33,34,36,37,42],enableextendeduniqueid:[0,37],enablelastwil:[0,1,33],enablesharedavail:[0,33],encod:6,encodingbase64:6,encodingbinari:6,encrypt:42,end:[23,26,35,40],endpublish:1,endswith:26,entir:[33,37],entiti:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,29,36,39,43],entri:24,entrytyp:24,enumer:[1,3,6,7,8,9,10,11,12,13,14,17,24],environ:31,epoxyduino:43,equip:6,esp32:[6,28,29,31,39,43],esp8255:43,esp8266:[29,31,39,43],esp8266wifi:40,esp:[5,28,37,43],essenti:[36,40],establish:[1,29,35,41,42],etc:[0,1,33,38],ethernet:[28,33,35,36,37,38,40,41,42,43],ethernetcli:[1,33,35,37,38,40,41,42],even:33,event:[9,20,37],ever:1,everi:36,everyth:40,ex_arduinoha_binary_sensor:34,ex_arduinoha_button:34,ex_arduinoha_camera:34,ex_arduinoha_cov:34,ex_arduinoha_device_track:34,ex_arduinoha_device_trigg:34,ex_arduinoha_fan:34,ex_arduinoha_hvac:34,ex_arduinoha_light:34,ex_arduinoha_lock:34,ex_arduinoha_numb:34,ex_arduinoha_scen:34,ex_arduinoha_select:34,ex_arduinoha_sensor:34,ex_arduinoha_switch:34,ex_arduinoha_tag_scann:34,exampl:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,23,30,33,34,35,40,41,43],except:36,execut:[7,10,11,12,13,14,43],exist:[1,3,25],expect:[6,23],expir:[4,17],expireaft:[4,17],explain:40,explicit:[1,23],expos:[33,35,36,37,41],extend:[0,37],extra:[23,31,32],fahrenheitunit:11,fals:[1,3,4,7,8,10,11,12,13,14,16,18,19,33],famili:29,fan:[7,10,11,29,37,38],fanact:11,fanfeatur:11,fanmod:11,fanonlymod:11,featur:[0,3,7,10,11,12,17,18,30,33,34,37,39],feel:30,few:[35,40],fi:[28,36],field:[31,37],file:34,find:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,26],fine:28,finish:1,fire:1,firmwar:1,first:[0,1,37],flag:[5,7,10,11,12,13,14,15,16,17,19,24,34],flagentrytyp:24,flagtyp:24,flash:[3,9,25,33,34,36,37,43],flush:24,flushentri:24,flushentryvalu:24,flushflag:24,flushtop:24,follow:[3,24,31,33,37,38,40],forc:[4,7,8,10,11,12,13,14,16,17,18,19],forceupd:17,formula:23,foundat:39,free:[9,11,24],friend:3,friendli:37,from:[1,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,29,31],frombuff:12,fromstr:23,full:39,fun:30,fundament:40,g:[3,6,12,16,17,24],garag:7,gener:[0,3,23,24,37],generateconfigtop:24,generatedatatop:24,get:[3,16,32,40,43],getavailabilitytop:0,getbasevalu:23,getcommandtempl:14,getcommandwithfloattempl:11,getcurrentact:11,getcurrentauxst:11,getcurrentbright:12,getcurrentcolortemperatur:12,getcurrentfanmod:11,getcurrentmod:11,getcurrentopt:16,getcurrentposit:7,getcurrentrgbcolor:12,getcurrentspe:10,getcurrentst:[4,7,10,12,13,14,16,19],getcurrentswingmod:11,getcurrenttargettemperatur:11,getcurrenttemperatur:11,getcurrentvalu:18,getdataprefix:1,getdevic:1,getdiscoveryprefix:1,getencodingproperti:6,getentri:24,getentriesnb:24,getitem:25,getitemsnb:25,getmodeproperti:14,getnam:3,getobjectid:3,getprecis:23,getprecisionbas:23,getseri:0,getsourcetypeproperti:8,getstat:[1,8],getsubtyp:9,gettyp:9,getuniqueid:0,git:31,github:[10,12,30,31],given:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,23,24,25,26,37],global:40,go:[0,1,24,25,32],goe:[37,40],gp:8,graph:17,grasp:37,greater:23,green:12,group:36,guid:30,h:[33,34,35,36,37,38,40,41,42],ha:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,25,32,33,36,37],habasedevicetyp:[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,24,43],habinarysensor:[0,1,3,21,22,37,43],habutton:[3,21,22,37,43],hacamera:[3,21,22,37,43],hacov:[3,21,22,37,43],hadevic:[1,2,3,22,33,35,37,38,40,41,42,43],hadevicetrack:[3,21,22,37,43],hadevicetrigg:[3,21,22,37,43],hafan:[3,21,22,37,43],hahvac:[3,21,22,37,43],halight:[3,21,22,37,43],halock:[3,21,22,37,43],hamqtt:[0,2,3,22,33,35,37,38,40,41,42,43],handl:24,handleauxstatecommand:11,handlebrightnesscommand:12,handlecolortemperaturecommand:12,handlecommand:[7,13,14],handlefanmodecommand:11,handlemodecommand:11,handlepowercommand:11,handlergbcommand:12,handlespeedcommand:10,handlestatecommand:[10,12],handleswingmodecommand:11,handletargettemperaturecommand:11,hanumb:[3,11,21,22,37,43],hanumer:[4,10,11,12,14,17,18,22,27,43],happen:[0,40],hardwar:[30,43],hascen:[3,21,22,37,43],haselect:[3,21,22,37,43],hasensor:[0,3,18,21,22,37,43],hasensorinteg:18,hasensornumb:[17,21,22,37,43],haseri:[0,3,22,25,27,43],haserializerarrai:[11,16,22,24,27,43],haswitch:[1,3,21,22,33,37,43],hatagscann:[3,21,22,37,43],hautil:[22,27,43],have:[17,23,30,37,40],heat:11,heater:37,heatingact:11,heatmod:11,here:[4,5,7,14,17,19,28,37,38,40],hesit:30,hex:[0,26],highfanmod:11,highli:33,histori:17,hit:[24,37],hold:29,home:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,34,36,37,38,42,43],homeassist:[1,38],hostnam:[1,35],how:[14,33],howev:[37,42],http:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,31,36],humidifi:37,hvac:[11,29,37],i:[33,43],icon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],id:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,30,39,43],idea:40,identifi:[36,39,43],idleact:11,imag:6,imageencod:6,implement:[1,3,8,13,29,33,40],includ:[10,31,33,35,36,37,38,40,41,42],incom:17,incorpor:[37,40],increas:[36,37],index:[16,25],inform:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],initi:[1,3,8,11,13,14,37,40,43],inlin:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],input:[16,26,36],insid:1,instal:[30,32,43],instanc:[0,1,3,14,24,32,36,37,38,40],instead:1,int16_t:[7,11,14,18,23],int32_t:[11,14,18,23],int64_t:23,int8_t:[11,14,16,18,23],integ:[17,23,29],integr:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,31,32,37,43],interact:[28,29],interfac:37,intern:[1,24,36,37,38],interv:[1,41],introduct:[39,43],involv:37,io:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],iot:[28,29],ip:[1,40],ipaddress:1,isavail:0,isavailabilityconfigur:3,isconnect:1,isextendeduniqueidsen:0,isfloat:23,isint16:23,isint32:23,isint8:23,isonlin:3,isprogmemdata:3,isprogmemsubtyp:9,isprogmemtyp:9,isset:[12,23],issharedavailabilityen:0,issu:[10,12,37],isuint16:23,isuint32:23,isuint8:23,item:[24,25,37],itemp:25,itemtyp:25,its:[3,8,31,33,36],jpeg:6,json:[0,17,24,25],jsonattributesfeatur:17,just:[31,35],keep:[0,1,3,36,37,41],keepal:1,knolleari:31,known:[1,4,7,8,10,11,12,13,14,16,18,19,24],label:[3,37],lack:42,last:[1,4,7,8,10,11,12,13,14,16,18,19,29,43],lastwillmessag:1,lastwillretain:1,lastwilltop:1,later:40,latest:31,lawn:37,le:8,lead:[36,37],led:29,length:[0,1,3,5,6,7,10,11,12,13,14,15,16,19,23,26,36,41],less:37,let:[11,40],lib:31,librari:[1,10,12,23,28,30,31,33,34,36,37,38,42,43],life:26,light:[12,29,33,36,37,38],like:1,limit:[24,39,43],line:[31,33],list:[4,5,7,11,14,16,17,19,24,28,34,37],live:1,ll:40,local:[35,42],lock:[13,29,37],lockcommand:13,lockstat:13,log:[34,42],logic:[3,5,35,37,40],long_press:9,look:[17,41],loop:[1,33,35,36,37,38,40,41,42],lost:[1,33,41],low:43,lower:[25,36],lowfanmod:11,lwt:[0,29,39,43],mac:[33,35,36,37,38,40,41,42],macaddress:40,macro:[39,43],made:[35,41],mai:[1,4,7,8,10,11,12,13,14,16,18,19,20,24,28,34,37,38,42],main:[1,24],maintain:[35,37,38,40,41],make:[26,29],makeesparduino:[30,43],makefil:[31,34],manag:[31,38],manual:33,manufactur:[0,36],match:[1,18,24],materialdesignicon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19],max:[10,11,14],maxdevicestypesnb:1,maxdigitsnb:23,maxentriesnb:24,maxi:28,maximum:[1,10,11,12,14,23,24,25,37],mcu:36,mdi:[4,5,6,7,8,10,11,12,13,14,15,16,17,19,37],mdn:29,mean:[3,17],meaning:17,meant:31,measur:[14,17],mediumfanmod:11,meet:35,mega:28,member:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],memori:[0,3,9,11,24,25,26,34,37],menu:31,messag:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,24,29,33,39,43],method:[0,1,3,4,7,8,10,11,12,13,14,16,17,18,19,23,24,26,31,32,33,35,38,40,41],mfrc522:29,might:37,millisecond:1,min:[10,11,14],mini:28,minim:[14,40],minimum:[10,11,12,14],mire:12,mix:17,mode:[7,10,11,12,13,14,16,19,29,39,43],modeauto:14,modebox:14,model:[0,36],modesfeatur:11,modeslid:14,modifi:37,modul:[6,28,29],monitor:36,more:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,31,36],mosquitto:[32,42],most:[16,33],movement:14,mower:37,mqtt:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,29,32,35,37,38,39,40,43],multi:29,multipl:[5,7,10,11,12,13,14,15,16,19,29,37],multipli:23,must:[10,11,12,14,16,19,36,37],my:43,mybrok:35,mycustomprefix:38,mydataprefix:38,myid:36,mynetworkssid:40,mypassword:40,myswitch:33,myswitchid:33,mytop:41,myuniqueid:[33,36],myvalv:37,name:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,19,24,36,37],nano:[28,29],need:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,31,32,33,34,38,40,41],netclient:1,network:[1,28,42],never:[1,3,4,17],newli:26,nodemcu:[28,29],non:[10,12,14,16,19,41],none:0,note:[0,1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,19,23,24,28,33,36,37],noth:0,nullptr:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,24],number:[0,1,4,10,11,14,17,18,23,24,25,29,37],numberprecis:[3,11,14,18],numberpropertytyp:24,numer:[10,14,18,23,29],object:[1,3,24,40],objectid:[3,24],occupi:34,off:[4,10,19,33],offact:11,offlin:[0,29,33,43],offmod:11,offswingmod:11,onauxstatecommand:11,onbrightnesscommand:12,onc:[0,5,15,16,35,37,40],oncolortemperaturecommand:12,oncommand:[5,7,13,14,15,16,19],onconnect:[1,41],onconnectedlog:1,ondisconnect:[1,41],one:[1,4,7,8,10,11,12,13,14,16,18,19,31,34,35,36,38],onfanmodecommand:11,onli:[0,1,3,10,11,12,14,16,18,24,31,33,35],onlin:[0,3,29,33,43],onmessag:[1,41],onmodecommand:11,onmqttconnect:[1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],onmqttmessag:[1,3,5,7,10,11,12,13,14,15,16,19],onpowercommand:11,onrgbcolorcommand:12,onspeedcommand:10,onstatechang:[1,41],onstatecommand:[10,12],onswingmod:11,onswingmodecommand:11,ontargettemperaturecommand:11,open:[10,12,13,24,29,30,31],oper:[12,23],optim:[39,43],optimist:[7,10,12,13,14,16,19],option:[16,36,37],order:32,other:[6,17,31,37],otherwis:0,output:[10,24,25,26],over:32,overload:[11,14,18],overrid:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],own:[0,1,24,36,37],owner:24,ownership:1,panel:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,29,33,37,42,43],paramet:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26,36,37,39,43],pars:[7,10,11,12,13,14],part:[23,40],pass:[1,9,24],password:[1,35,40,41,42],payload:[1,3,5,7,10,11,12,13,14,15,16,19,24,41],payloadlength:1,percentag:10,perform:[1,20],period:[1,40],physic:[36,37],pick:35,piec:40,pin:29,platform:37,pleas:[0,1,3,4,5,7,8,9,10,11,12,13,14,15,16,18,19,23,24,28,31,33,36,37,41],plu:23,point:[1,3,9,11,14,18],pointer:[0,1,9,24,25,36],port:[1,35],pose:42,posit:7,positionfeatur:7,possibl:[5,7,10,11,12,13,14,15,16,17,19,35,42,43],potenti:39,pow:23,power:[11,29,33,37],powerfeatur:11,precis:[11,14,18,23],precisionp0:[3,14,18],precisionp1:[3,11],precisionp2:3,precisionp3:3,prefix:[0,1,24,37,39,43],prerequisit:[30,43],present:[26,30,35],press:[5,9,29],preview:29,previou:[4,7,8,10,11,12,13,14,16,17,18,19],primarili:37,print:16,prior:[17,40],privat:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23,24,25],pro:28,process:[1,17,38],processmessag:1,processor:37,produc:[1,3,5,7,9,10,11,12,13,14,15,16,17,19,20],progmem:[1,3,6,8,9,11,14,24],progmemitem:25,progmempropertyvalu:24,project:[31,40,43],proper:[7,10,11,12,13,14,23,24],properli:42,properti:[0,1,6,7,13,24,25,39,43],propertyentrytyp:24,propertyvaluetyp:24,protect:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],protocol:32,provid:[11,14,18,26,34,37,40,42],publish:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,24,29,33,38,39,43],publishact:11,publishauxst:11,publishavail:[0,3],publishbright:12,publishcolortemperatur:12,publishconfig:3,publishcurrenttemperatur:11,publishfanmod:11,publishimag:6,publishmod:11,publishondatatop:3,publishposit:7,publishrgbcolor:12,publishspe:10,publishst:[4,7,8,10,12,13,14,16,19],publishswingmod:11,publishtargettemperatur:11,publishvalu:18,pubsub:1,pubsubcli:[1,31],pure:28,purpos:[1,24,37],push:[7,10,12,38],r2:28,r3:28,r:12,ram:[33,36,37,43],random:37,rang:10,rapidli:37,raw:6,rbb:12,re:[1,11,17,31,32,40],reach:37,reboot:37,receiv:[1,3,5,7,10,11,12,13,14,16,19,24,41],recent:16,recogn:24,recommend:[32,33,36],reconnect:[1,43],reconnectinterv:1,red:12,reduc:24,refer:[31,43],regist:[0,1,3,5,7,10,11,12,13,14,15,16,19,37,38],registri:0,relat:33,reli:[33,37,38],remov:1,replac:42,report:[3,7,8,10,11,12,13,14,16,19,29,39,43],repres:[0,1,4,5,6,8,9,10,11,14,16,23,25,26,36,37],represent:[0,9,16,17,23,24,25,26,29],requir:[33,35,36],reset:[16,23],resourc:[3,33,37,43],result:[23,34],retain:[1,3,5,7,9,10,11,12,13,14,15,16,19,41],reus:37,rfid:29,rgb:[12,29],rgbcolor:12,rgbfeatur:12,rgbstringmaxlength:12,risk:42,roller:7,root:31,router:8,rule:[38,40],runtim:[33,37],s:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,24,28,29,36,37,38,39,40,42,43],safe:1,samd:29,same:[0,1,4,5,7,8,10,11,12,13,14,15,16,18,19,37,42],save:[0,3,23,26,33,34],scale:12,scan:[20,29],scanner:[20,29,37],scene:[15,29,37],scope:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,36],search:31,second:[1,4,17,31,41],secur:[39,43],see:[11,17,33],select:[16,29,31,37],selector:29,semicolon:16,send:20,sender:[5,7,10,11,12,13,14,15,16,19],sensor:[1,4,14,17,18,19,29,33,36,37,38],separ:[16,33],sequenc:36,serial:[0,3,11,16,24,25],serializerentri:24,serv:[36,37],serverhostnam:1,serverip:1,serverport:1,session:24,set:[0,1,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,23,24,33,35,36,41],setact:11,setauxst:11,setavail:[0,3,33],setbasevalu:23,setbright:12,setbrightnessscal:12,setbuffers:[1,41],setcolortemperatur:12,setconfigurationurl:[0,36],setcurrentact:11,setcurrentauxst:11,setcurrentbright:12,setcurrentcolortemperatur:12,setcurrentcurrenttemperatur:11,setcurrentfanmod:11,setcurrentmod:11,setcurrentposit:7,setcurrentrgbcolor:12,setcurrentspe:10,setcurrentst:[4,7,8,10,12,13,14,16,19],setcurrentswingmod:11,setcurrenttargettemperatur:11,setcurrenttemperatur:11,setcurrentvalu:18,setdataprefix:[1,38],setdeviceclass:[4,5,7,14,17,19],setdiscoveryprefix:[1,38],setencod:6,setexpireaft:[4,17],setfanmod:11,setforceupd:17,seticon:[4,5,6,7,8,10,11,12,13,14,15,16,17,19,37],setjsonattribut:17,setkeepal:[1,41],setlastwil:1,setmanufactur:[0,36],setmax:14,setmaxmir:12,setmaxtemp:11,setmin:14,setminmir:12,setmintemp:11,setmod:[11,14],setmodel:[0,36],setnam:[0,3,36,37],setobjectid:3,setopt:16,setoptimist:[7,10,12,13,14,16,19],setp:11,setposit:7,setprecis:23,setretain:[5,7,10,11,12,13,14,15,16,19],setrgbcolor:12,setsoftwarevers:[0,36],setsourcetyp:8,setspe:10,setspeedrangemax:10,setspeedrangemin:10,setstat:[1,4,7,8,10,12,13,14,16,19],setstateclass:17,setstep:14,setswingmod:11,settargettemperatur:11,settemperatureunit:11,settempstep:11,setter:36,setuniqueid:[0,40],setunitofmeasur:[14,17],setup:[32,33,35,37,38,40,41,42],setvalu:[17,18],sever:40,share:[0,39,43],shield:43,should:[0,1,3,7,10,11,12,14,16,17,18,23,28,35,37],show:33,shown:33,shutter:7,signific:42,simpl:[29,36,37],simplifi:23,sinc:1,singl:[24,33,37],singleton:1,siren:37,size:[1,9,23,24,25,26,41],sizeof:[33,35,36,37,38,40,41,42],sketch:31,skip:40,slider:[14,29],smallest:14,so:[0,3,10,26,32,37],softwar:[0,36],softwarevers:0,sole:37,solid:39,solut:[33,42],some:[1,5,24,26,34,38,41],sonoff:28,sourc:8,sourcetyp:8,sourcetypebluetooth:8,sourcetypebluetoothl:8,sourcetypegp:8,sourcetyperout:8,sourcetypeunknown:8,spec:36,specif:[3,33,34,37],specifi:[0,1,3,9,25,35],speed:[10,29],speed_rang:10,speed_range_min:10,speedsfeatur:10,sponsor:43,src:26,start:[40,43],stat:17,state:[0,1,3,4,7,8,10,11,12,13,14,16,17,18,19,29,33,38,41,43],statebadclientid:1,statebadcredenti:1,statebadprotocol:1,stateclass:17,stateclos:7,stateconnect:1,stateconnectionfail:1,stateconnectionlost:1,stateconnectiontimeout:1,statedisconnect:1,statehom:8,statelock:13,statenotavail:8,statenothom:8,stateopen:7,statestop:7,stateunauthor:1,stateunavail:1,stateunknown:[7,8,13],stateunlock:13,statist:17,statu:40,step:[10,11,14,30],stop:29,store:[1,3,14,16,17,24,25,37],str:26,strcmp:41,stream:[1,24],string:[0,1,3,6,8,9,11,14,16,17,23,24,25,26,29],struct:[12,24],structur:24,subclass:[3,17],submodul:31,subscrib:[1,3,29,41,43],subscribetop:3,subscript:[1,39,43],subtyp:[9,24],successfulli:[4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,25,43],suffix:26,suit:36,suppli:33,support:[3,9,10,11,12,28,33,34,36,39,43],swing:11,swingfeatur:11,swingmod:11,t:[1,4,7,8,10,11,12,13,14,16,17,18,19,25,30,33,40],tabl:[34,37],tag:[20,29,31,37],tagscan:20,take:[1,33,38,41],target:[11,29],targettemperaturefeatur:11,tcp:[1,32,33,42],teh:1,temperatur:[11,12,29],temperatureunit:11,templat:[11,14],term:17,termin:[0,23],test:[28,43],testament:[29,43],text:37,textual:17,than:[23,25],thei:11,them:[34,36],therefor:[36,37],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,26,30,33,34,35,36,37,39,40,41,42],those:34,three:[3,36,37],through:[1,37,42],tick:40,time:[1,3,5,7,10,11,12,13,14,16,17,19,37,41],tofloat:23,toint16:23,toint32:23,toint8:23,topic:[0,1,3,5,7,10,11,12,13,14,15,16,17,19,24,29,39,41,43],topicentrytyp:24,topicp:24,topictyp:24,tostr:23,touint16:23,touint32:23,touint8:23,track:33,tracker:[8,37],trackerst:8,traffic:[1,42],trigger:[5,9,15,29,37],triggersubtyp:9,triggertyp:9,truncat:34,turn:33,turnoff:[10,12,19],turnoffsubtyp:9,turnon:[10,12,19],turnonsubtyp:9,tuya:28,twice:0,two:[3,26,31,38,43],type:[0,1,3,6,7,8,9,10,11,12,13,14,17,22,23,24,25,31,34,36,38,39,40,43],typedef:25,ui:[14,37],uint16_t:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,23,24,25,26,41],uint32_t:[1,11,14,18,23],uint8_t:[1,3,5,6,7,10,11,12,13,14,15,16,18,19,23,24,25,41],unauthor:42,unclear:30,uncom:34,understand:[3,37,39],uniqu:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,24,39,43],uniqueid:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20],unit:[11,14,17,37,43],unitofmeasur:[14,17],unknownact:11,unknownentrytyp:24,unknownfanmod:11,unknownmod:11,unknownpropertyvaluetyp:24,unknownswingmod:11,unlik:17,unlock:[13,34],uno:[28,37,43],unsupport:9,up:37,updat:[4,6,7,8,10,11,12,13,14,16,17,18,19,37],upfront:24,uptim:29,url:[0,36],us:[0,1,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24,25,26,28,29,31,32,33,34,35,37,38,40,41,43],usag:36,user:[20,31,37],usernam:[1,35,40,41,42],util:[16,22,33,37,38,39,42,43],v2:31,vacuum:37,valu:[1,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,23,24,37],valuetyp:24,valv:37,variabl:24,variant:35,verifi:[1,3,9],version:[0,31,36],via:[0,3,11,12,16,29,34],virtual:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,34],voltag:29,vulner:42,wa:[0,1,3,9,16,17,28,43],wai:[0,31,33,43],wait:40,wall:[9,29],want:[1,4,7,8,10,11,12,13,14,16,17,18,19,33,34],wasn:[8,11,13,14],water:37,welcom:30,were:[9,24,25],what:[11,14,17,18,40],when:[0,1,7,10,11,12,13,14,15,16,19,33,37,41],whenev:[1,38],where:[1,23,24,26],whether:[0,1,3,9,24,25,26],which:[3,28,36,37],whose:36,wi:[28,36],wifi:40,wificli:[1,40],window:29,withavail:24,withdevic:24,within:[10,36,37,42],without:[0,4,7,8,10,11,12,13,14,16,18,19,23,33],withuniqueid:24,wl_connect:40,wl_mac_addr_length:40,won:[1,4,7,8,10,11,12,13,14,16,18,19,33],work:[0,28,32,43],worri:40,wrapper:1,write:[1,24],writepayload:1,written:[1,23,24],www:[4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20],you:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,28,30,31,32,33,34,35,36,37,38,39,40,41,42],your:[0,1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,29,31,32,33,35,36,37,38,40,42],zero:23},titles:["HADevice class","HAMqtt class","Core API","HABaseDeviceType class","HABinarySensor class","HAButton class","HACamera class","HACover class","HADeviceTracker class","HADeviceTrigger class","HAFan class","HAHVAC class","HALight class","HALock class","HANumber class","HAScene class","HASelect class","HASensor class","HASensorNumber class","HASwitch class","HATagScanner class","Device types API","API reference","HANumeric class","HASerializer class","HASerializerArray class","HAUtils class","Utils API","Compatible Hardware","Examples","Getting started","Installation","Prerequisites","Availability reporting","Compiler macros","Connection parameters","Device configuration","Device types (entities)","Discovery","Library","Introduction","MQTT advanced features","MQTT security","ArduinoHA documentation"],titleterms:{"1":36,"2":36,"3":36,"byte":36,"char":36,"class":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23,24,25,26],"const":36,advanc:41,api:[2,21,22,27],arduino:[31,40],arduinoha:43,arrai:36,avail:33,boilerpl:40,callback:41,code:34,compat:28,compil:34,configur:36,connect:35,constructor:36,core:2,debug:34,devic:[21,33,36,37],discoveri:38,doc:43,document:43,dure:36,entiti:37,esp32:40,esp8266:40,exampl:29,featur:[41,43],get:30,habasedevicetyp:3,habinarysensor:4,habutton:5,hacamera:6,hacov:7,hadevic:[0,36],hadevicetrack:8,hadevicetrigg:9,hafan:10,hahvac:11,halight:12,halock:13,hamqtt:1,hanumb:14,hanumer:23,hardwar:28,hascen:15,haselect:16,hasensor:17,hasensornumb:18,haseri:24,haserializerarrai:25,haswitch:19,hatagscann:20,hautil:26,id:[31,36,37],identifi:37,instal:31,introduct:40,librari:39,limit:37,lwt:33,macro:34,makeesparduino:31,messag:41,method:36,mode:34,mqtt:[33,41,42],object:37,optim:34,paramet:35,prefix:38,prerequisit:32,properti:36,provid:36,publish:41,refer:22,report:33,s:33,secur:42,setuniqueid:36,setup:36,share:33,start:30,string:36,subscript:41,support:37,topic:38,type:[21,33,37],uniqu:[36,37],us:36,util:27}})
\ No newline at end of file
diff --git a/docsrc/README.md b/docsrc/README.md
index e9c22d9..face38f 100644
--- a/docsrc/README.md
+++ b/docsrc/README.md
@@ -29,11 +29,8 @@ This solution forces `lxml` to be built from the sources.
## Generating the documentation
1. Open terminal in the `docsrc` directory
-2. Run the Doxygen command `doxygen`
-3. Open the Pipenv shell `pipenv shell`
-4. Run the build `make html`
-
-The generated documentation will be available in the `docsrc/build/html` directory.
+2. Open the Pipenv shell `pipenv shell`
+3. Run the build `make github`
## Github pages
diff --git a/docsrc/source/conf.py b/docsrc/source/conf.py
index 65eca24..fe7a7ac 100644
--- a/docsrc/source/conf.py
+++ b/docsrc/source/conf.py
@@ -21,7 +21,7 @@ copyright = '2022, Dawid Chyrzynski'
author = 'Dawid Chyrzynski'
# The full version, including alpha/beta/rc tags
-release = '2.0.0'
+release = '2.1.0'
# -- General configuration ---------------------------------------------------
diff --git a/docsrc/source/documents/getting-started/compatible-hardware.rst b/docsrc/source/documents/getting-started/compatible-hardware.rst
index 91aa60e..bc58995 100644
--- a/docsrc/source/documents/getting-started/compatible-hardware.rst
+++ b/docsrc/source/documents/getting-started/compatible-hardware.rst
@@ -11,6 +11,7 @@ Here is the list of devices on which the library was tested:
- Arduino Nano
- Arduino Pro Mini
- Arduino Nano 33 IoT
+- Arduino Due
- NodeMCU
- Controllino Mega (Pure)
- Controllino Maxi (Pure)
diff --git a/docsrc/source/documents/library/device-configuration.rst b/docsrc/source/documents/library/device-configuration.rst
index 6219fdb..38acb77 100644
--- a/docsrc/source/documents/library/device-configuration.rst
+++ b/docsrc/source/documents/library/device-configuration.rst
@@ -1,12 +1,12 @@
Device configuration
====================
-:doc:`HADevice ` represents the physical device where the library is installed.
-Logically it's a group of types like sensors, switches, lights and so on.
-In the Home Assistant, it's listed with properties that may be configured using the library's API.
+:doc:`HADevice ` represents the physical device on which the library is used.
+Essentially, it's a group of types such as sensors, switches, lights, and more.
+Within Home Assistant, it appears with properties that can be configured using the library's API.
-Each property except the unique ID is optional.
-Setting optional properties increases flash and RAM usage so it's not recommended to set them on lower-spec MCUs.
+Every property, except for the unique ID, is optional.
+Enabling optional properties can lead to increased flash and RAM usage, therefore it is not advisable to set them on lower-spec MCUs.
The supported properties are:
@@ -15,15 +15,17 @@ The supported properties are:
* software version
* manufacturer
* model
+* configuration url
Unique ID
---------
-The ID of a device needs to be unique in a scope of a Home Assistant instance.
-The safest solution is to use the MAC address of an Ethernet or Wi-Fi chip but you can also implement your own solution.
+The unique ID serves as an internal identifier for devices within Home Assistant.
+With this ID, Home Assistant can monitor the device's parameters and the entities it exposes.
+The unique ID must be distinct within the scope of the Home Assistant instance.
+The recommended approach is to use the MAC address of an Ethernet or Wi-Fi chip.
-There are three different ways to set the ID of the device.
-You can pick one depending on your needs.
+There are three distinct methods for setting the device ID, allowing you to choose the one that best suits your requirements.
1) Providing string (const char*) to the :doc:`HADevice ` constructor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -88,7 +90,7 @@ Device properties
-----------------
Each property has its corresponding setter method in the :doc:`HADevice ` class.
-Please note that all these methods accept const char pointer whose **content is not copied**.
+Please note that all of these methods accept a const char pointer whose **content is not copied**.
::
@@ -101,6 +103,7 @@ Please note that all these methods accept const char pointer whose **content is
device.setSoftwareVersion("1.0.0");
device.setManufacturer("Developer Corp.");
device.setModel("ABC-123");
+ device.setConfigurationUrl("http://192.168.1.55:1234");
// ...
}
diff --git a/docsrc/source/documents/library/device-types.rst b/docsrc/source/documents/library/device-types.rst
index fabeafb..5bdbbd6 100644
--- a/docsrc/source/documents/library/device-types.rst
+++ b/docsrc/source/documents/library/device-types.rst
@@ -1,21 +1,124 @@
-Device types
-============
+Device types (entities)
+=======================
-Device type represents a single entity in the Home Assistant panel.
-It can be a sensor, lock, camera or anything that's listed in the table below.
+Device type represents a single entity within the Home Assistant panel, which could be a sensor, lock, camera, or any other item listed in the table below.
-Your physical device (for example ESP-01 board) can have multiple device types assigned.
-They will be displayed as child entities in the HA panel.
+Your physical device, such as an ESP-01 board, can have multiple device types assigned to it.
+These types will then appear as child entities in the Home Assistant panel.
+
+Identifiers
+-----------
+
+Home Assistant utilizes three distinct identifiers, which might initially appear confusing.
+Grasping the purpose of each is crucial for a clear understanding of the library's API.
+
+Entity ID
+^^^^^^^^^
+
+Home Assistant automatically generates an entity ID for each device type registered by your device.
+This ID is primarily utilized by dashboards and automations within Home Assistant.
+
+When the entity is discovered by Home Assistant for the first time, the name field is automatically employed to generate the entity ID.
+Once registered, you can modify it to any desired value using the Home Assistant User Interface.
+
+Home Assistant internally relies on the unique ID, so changing the entity ID or name in the Home Assistant UI does not break the integration between your device and Home Assistant.
+
+Object ID
+^^^^^^^^^
+
+The object ID is an optional identifier that you can assign to the device type.
+Its sole purpose is for generating the entity ID described above.
+
+By default, Home Assistant generates the entity ID based on the entity's name.
+However, when the object ID is provided, Home Assistant uses it to generate the entity ID.
+
+Consequently, you can use the entity's name as a user-friendly label and the object ID as an internal identifier.
+
+Unique ID
+^^^^^^^^^
+
+The unique ID serves as an internal identifier for the entity within the Home Assistant instance.
+Once the entity with a specific unique ID is created, it cannot be altered, as this identifier is not accessible through the user interface.
+
+Home Assistant utilizes this identifier internally to store the parameters of the entity in the database.
+Given that the unique ID must be unique across the entire Home Assistant instance.
+Multiple devices cannot expose entities with the same unique ID.
+
+By default, the library uses the unique ID provided in the device type's constructor.
+However, when you reuse the same codebase on multiple devices, conflicts may arise.
+To address this issue, you can enable the extended unique ID feature in the HADevice instance.
+This feature incorporates the device's unique ID as a prefix for the device type's ID.
+
+.. code-block:: cpp
+ :caption: Default behavior
+
+ #include
+ #include
+
+ byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
+
+ EthernetClient client;
+ HADevice device(mac, sizeof(mac)); // the unique ID of the device will be 0010fa6e384a
+ HAMqtt mqtt(client, device);
+
+ // "myValve" is unique ID of the sensor. You should define your own ID.
+ HASensor valve("myValve");
+
+ void setup() {
+ // ...
+
+ valve.setIcon("mdi:home");
+ valve.setName("Water valve");
+
+ // the unique ID of the valve in HA will be "myValve"
+
+ // ...
+ }
+
+ void loop() {
+ // ...
+ }
+
+.. code-block:: cpp
+ :caption: Extended unique IDs
+
+ #include
+ #include
+
+ byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
+
+ EthernetClient client;
+ HADevice device(mac, sizeof(mac)); // the unique ID of the device will be 0010fa6e384a
+ HAMqtt mqtt(client, device);
+
+ // "myValve" is unique ID of the sensor. You should define your own ID.
+ HASensor valve("myValve");
+
+ void setup() {
+ // ...
+
+ device.enableExtendedUniqueIds(); // <------------ enables extended unique IDs
+ valve.setIcon("mdi:home");
+ valve.setName("Water valve");
+
+ // the unique ID of the valve in HA will be "0010fa6e384a_myValve"
+
+ // ...
+ }
+
+ void loop() {
+ // ...
+ }
Limitations
-----------
-Registering a new device type requires some flash and RAM memory to be utilized.
-On less powerful units like Arduino Uno, you may quickly hit the limit of resources, so keeping the device simple is recommended.
-Hitting the resource limit will result in random reboots of the device.
+Registering a new device type involves utilizing a certain amount of flash and RAM memory.
+On less powerful units, such as the Arduino Uno, you may rapidly reach the resource limit.
+Therefore, it is advisable to keep the device simple to avoid hitting the resource limit, which could lead to random reboots of the device.
-By default, the maximum number of device types is 6.
+By default, devices utilizing ATmega328P or ATmega168 processors are limited to a maximum of 6 device types, while other platforms can support up to 24 device types.
You can increase the limit using the :doc:`HAMqtt ` class constructor as follows:
::
@@ -26,7 +129,7 @@ You can increase the limit using the :doc:`HAMqtt `
byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
EthernetClient client;
HADevice device(mac, sizeof(mac));
- HAMqtt mqtt(client, device, 12); // <------------ 12 is a new limit of device types
+ HAMqtt mqtt(client, device, 40); // <------------ 40 is a new limit of device types
void setup() {
Ethernet.begin(mac);
@@ -54,6 +157,9 @@ Supported device types
* - Device type
- Supported
- Documentation
+ * - Alarm control panel
+ - ❌
+ - --
* - Binary sensor
- ✅
- :doc:`HABinarySensor `
@@ -72,6 +178,9 @@ Supported device types
* - Device trigger
- ✅
- :doc:`HADeviceTrigger `
+ * - Event
+ - ❌
+ - --
* - Fan
- ✅
- :doc:`HAFan `
@@ -81,6 +190,9 @@ Supported device types
* - HVAC
- ✅
- :doc:`HAHVAC `
+ * - Lawn mower
+ - ❌
+ - --
* - Light
- ✅
- :doc:`HALight `
@@ -102,12 +214,27 @@ Supported device types
* - | Sensor (number)
- ✅
- :doc:`HASensorNumber `
+ * - Siren
+ - ❌
+ - --
* - Switch
- ✅
- :doc:`HASwitch `
+ * - Update
+ - ❌
+ - --
* - Tag scanner
- ✅
- :doc:`HATagScanner `
+ * - Text
+ - ❌
+ - --
* - Vacuum
- ❌
- --
+ * - Valve
+ - ❌
+ - --
+ * - Water heater
+ - ❌
+ - --
diff --git a/docsrc/source/documents/library/introduction.rst b/docsrc/source/documents/library/introduction.rst
index 6547c44..bad3356 100644
--- a/docsrc/source/documents/library/introduction.rst
+++ b/docsrc/source/documents/library/introduction.rst
@@ -1,18 +1,16 @@
Introduction
============
-Before implementing the business logic of your application you will need to
-add a few necessary pieces of code to your project.
-Basically, everything comes up to a few basic rules:
+Prior to implementing the business logic of your application, you'll need to incorporate several essential pieces of code into your project.
+Essentially, everything boils down to a few fundamental rules:
1) :doc:`HADevice ` and :doc:`HAMqtt ` instances need to be initialized once globally or as a part of another global object.
-2) :doc:`HAMqtt::begin ` needs to be called at the end of setup logic. It provides MQTT broker credentials that will be used for a connection.
+2) :doc:`HAMqtt::begin ` needs to be called at the end of Arduino's setup logic. It lets you provide the MQTT broker's IP address and credentials.
3) :doc:`HAMqtt::loop ` method needs to be called periodically (it doesn't need to be called on each tick).
4) Device types need to be initialized after :doc:`HAMqtt ` class (it will be described later in the documentation).
-Here are the minimal boilerplates that you can start with.
-Don't worry if you have no idea what's going on here.
-Everything will be covered in the following chapters.
+Here are the minimal boilerplate examples to get you started.
+Don't worry if you have no idea what's happening here; everything will be explained in detail in the following chapters.
Arduino Boilerplate
-------------------
diff --git a/docsrc/source/documents/library/mqtt-advanced.rst b/docsrc/source/documents/library/mqtt-advanced.rst
index a7169d0..02dd48d 100644
--- a/docsrc/source/documents/library/mqtt-advanced.rst
+++ b/docsrc/source/documents/library/mqtt-advanced.rst
@@ -25,11 +25,23 @@ Please take a look at the example below.
// this method will be called when connection to MQTT broker is established
}
+ void onDisconnected() {
+ // this method will be called when connection to MQTT broker is lost
+ }
+
+ void onStateChanged(HAMqtt::ConnectionState state) {
+ // this method will be called each time the state of the MQTT connection changes
+ }
+
void setup() {
Ethernet.begin(mac);
mqtt.onMessage(onMessage);
mqtt.onConnected(onConnected);
+ mqtt.onDisconnected(onDisconnected);
+ mqtt.onStateChanged(onStateChanged);
+ mqtt.setBufferSize(512); // set the buffer size to 512 bytes, default is 256 bytes
+ mqtt.setKeepAlive(60); // set the keep alive interval to 60 seconds, default is 15 seconds
mqtt.begin("192.168.1.50", "username", "password");
}
diff --git a/docsrc/source/documents/library/mqtt-security.rst b/docsrc/source/documents/library/mqtt-security.rst
index a8f9ef8..fa50dcc 100644
--- a/docsrc/source/documents/library/mqtt-security.rst
+++ b/docsrc/source/documents/library/mqtt-security.rst
@@ -1,15 +1,15 @@
MQTT security
=============
-The library allows you to use credentials for acquiring a TCP connection with the MQTT broker.
-By default you can use the same credentials you use for login in the Home Assistant panel but you can also configure custom credentials in the Mosquitto broker.
+The library enables you to utilize credentials to establish a TCP connection with the MQTT broker.
+By default, you can employ the same credentials utilized for logging into the Home Assistant panel.
+However, it's also possible to configure custom credentials within the Mosquitto broker.
.. DANGER::
- This solution is not 100% secure because communication between Arduino and Home Assistant is not encrypted.
- Username and password can be easily discovered by analyzing your local network traffic.
- However, that's fine as long as your local network is secured against unattended access.
- On more powerful devices (like ESP), you should consider using TLS/SSL connection.
+ This solution may not provide comprehensive security as the communication between Arduino and Home Assistant lacks encryption.
+ Consequently, username and password could be vulnerable to discovery through analysis of local network traffic.
+ However, this may not pose a significant risk if your local network is properly secured against unauthorized access.
::
@@ -31,10 +31,3 @@ By default you can use the same credentials you use for login in the Home Assist
void loop() {
// ...
}
-
-
-SSL connection
---------------
-
-On ESP32/ESP8266 you can use ``WiFiClientSecure`` client to establish encrypted connection between your device and Home Assistant.
-Please take a look at :example:`this example `.
diff --git a/docsrc/source/index.rst b/docsrc/source/index.rst
index 2daad2e..5617e40 100644
--- a/docsrc/source/index.rst
+++ b/docsrc/source/index.rst
@@ -24,4 +24,5 @@ Features
documents/getting-started/index
documents/library/index
- documents/api/index
\ No newline at end of file
+ documents/api/index
+ Sponsor
\ No newline at end of file
diff --git a/docsrc/source/static/custom.css b/docsrc/source/static/custom.css
index 6d79a89..fcc262d 100644
--- a/docsrc/source/static/custom.css
+++ b/docsrc/source/static/custom.css
@@ -41,6 +41,10 @@ table.examples-table tbody td + td {
.searchbox .caption-text {
display: none
}
+.code-block-caption {
+ margin-top: 30px;
+ font-weight: bold;
+}
form {
display: flex;
flex-direction: row;
diff --git a/examples/cover/cover.ino b/examples/cover/cover.ino
index 8949a4f..253b952 100644
--- a/examples/cover/cover.ino
+++ b/examples/cover/cover.ino
@@ -12,8 +12,10 @@ HAMqtt mqtt(client, device);
// "myCover" is unique ID of the cover. You should define your own ID.
HACover cover("myCover", HACover::PositionFeature);
-// Cover with the position feature:
-// HACover cover("myCover", HACover::PositionFeature);
+// PositionFeature is optional, however required to be in a "stopped" state other than open or closed.
+// If ommitted, a CommandStop will result in HA treating the cover as either Open or Closed immediately after the command.
+// See https://www.home-assistant.io/integrations/cover.mqtt/
+// Added in https://github.com/dawidchyrzynski/arduino-home-assistant/pull/111
void onCoverCommand(HACover::CoverCommand cmd, HACover* sender) {
if (cmd == HACover::CommandOpen) {
diff --git a/examples/mqtt-advanced/mqtt-advanced.ino b/examples/mqtt-advanced/mqtt-advanced.ino
index 87b3f1b..2f815c0 100644
--- a/examples/mqtt-advanced/mqtt-advanced.ino
+++ b/examples/mqtt-advanced/mqtt-advanced.ino
@@ -29,12 +29,23 @@ void onMqttConnected() {
mqtt.subscribe("myCustomTopic");
}
+void onMqttDisconnected() {
+ Serial.println("Disconnected from the broker!");
+}
+
+void onMqttStateChanged(HAMqtt::ConnectionState state) {
+ Serial.print("MQTT state changed to: ");
+ Serial.println(static_cast(state));
+}
+
void setup() {
Serial.begin(9600);
Ethernet.begin(mac);
mqtt.onMessage(onMqttMessage);
mqtt.onConnected(onMqttConnected);
+ mqtt.onDisconnected(onMqttDisconnected);
+ mqtt.onStateChanged(onMqttStateChanged);
// If you use custom discovery prefix you can change it as following:
// mqtt.setDiscoveryPrefix("customPrefix");
@@ -42,6 +53,9 @@ void setup() {
// If you want to change prefix only for non-discovery prefix:
// mqtt.setDataPrefix("data");
+ // Obtaining state of the MQTT connection:
+ // mqtt.getState();
+
mqtt.begin(BROKER_ADDR);
}
diff --git a/examples/select/select.ino b/examples/select/select.ino
index 1f72968..4dd6408 100644
--- a/examples/select/select.ino
+++ b/examples/select/select.ino
@@ -8,7 +8,7 @@ byte mac[] = {0x00, 0x10, 0xFA, 0x6E, 0x38, 0x4A};
EthernetClient client;
HADevice device(mac, sizeof(mac));
HAMqtt mqtt(client, device);
-HASelect select("mySelect");
+HASelect mySelect("mySelect");
void onSelectCommand(int8_t index, HASelect* sender)
{
@@ -31,6 +31,12 @@ void onSelectCommand(int8_t index, HASelect* sender)
}
sender->setState(index); // report the selected option back to the HA panel
+
+ // it may return null
+ if (sender->getCurrentOption()) {
+ Serial.print("Current option: ");
+ Serial.println(sender->getCurrentOption());
+ }
}
void setup() {
@@ -42,18 +48,18 @@ void setup() {
device.setSoftwareVersion("1.0.0");
// set available options
- select.setOptions("Low;Medium;High"); // use semicolons as separator of options
- select.onCommand(onSelectCommand);
+ mySelect.setOptions("Low;Medium;High"); // use semicolons as separator of options
+ mySelect.onCommand(onSelectCommand);
- select.setIcon("mdi:home"); // optional
- select.setName("My dropdown"); // optional
+ mySelect.setIcon("mdi:home"); // optional
+ mySelect.setName("My dropdown"); // optional
// Optionally you can set retain flag for the HA commands
- // select.setRetain(true);
+ // mySelect.setRetain(true);
// Optionally you can enable optimistic mode for the HASelect.
// In this mode you won't need to report state back to the HA when commands are executed.
- // select.setOptimistic(true);
+ // mySelect.setOptimistic(true);
mqtt.begin(BROKER_ADDR);
}
@@ -64,5 +70,8 @@ void loop() {
// You can also report the state to the HA panel at runtime as shown below.
// The integer corresponds to the option's index.
- // select.setState(1);
+ // mySelect.setState(1);
+
+ // You can also reset the select as follows:
+ // mySelect.setState(-1);
}
\ No newline at end of file
diff --git a/examples/sensor-analog/sensor-analog.ino b/examples/sensor-analog/sensor-analog.ino
index 7b90cde..ca2c40a 100644
--- a/examples/sensor-analog/sensor-analog.ino
+++ b/examples/sensor-analog/sensor-analog.ino
@@ -44,5 +44,8 @@ void loop() {
analogSensor.setValue(voltage);
lastUpdateAt = millis();
+
+ // you can reset the sensor as follows:
+ // analogSensor.setValue(nullptr);
}
}
diff --git a/examples/sensor-integer/sensor-integer.ino b/examples/sensor-integer/sensor-integer.ino
index c357bca..7921061 100644
--- a/examples/sensor-integer/sensor-integer.ino
+++ b/examples/sensor-integer/sensor-integer.ino
@@ -37,5 +37,8 @@ void loop() {
unsigned long uptimeValue = millis() / 1000;
uptimeSensor.setValue(uptimeValue);
lastUpdateAt = millis();
+
+ // you can reset the sensor as follows:
+ // analogSensor.setValue(nullptr);
}
}
diff --git a/library.properties b/library.properties
index b21d8d7..fc504ab 100644
--- a/library.properties
+++ b/library.properties
@@ -1,5 +1,5 @@
name=home-assistant-integration
-version=2.0.0
+version=2.1.0
author=Dawid Chyrzynski
maintainer=Dawid Chyrzynski
sentence=Home Assistant MQTT integration for Arduino
diff --git a/src/ArduinoHADefines.h b/src/ArduinoHADefines.h
index e81a521..a27c741 100644
--- a/src/ArduinoHADefines.h
+++ b/src/ArduinoHADefines.h
@@ -33,5 +33,10 @@
#define ARDUINOHA_DEBUG_PRINT(x)
#endif
+
+#if defined(__SAMD21G18A__) or defined(__SAM3X8E__)
+ #define ARDUINOHA_INT_OVERLOAD
+#endif
+
#define AHATOFSTR(x) reinterpret_cast(x)
#define AHAFROMFSTR(x) reinterpret_cast(x)
diff --git a/src/HADevice.cpp b/src/HADevice.cpp
index b7d1cc7..bdf4776 100644
--- a/src/HADevice.cpp
+++ b/src/HADevice.cpp
@@ -6,10 +6,11 @@
#define HADEVICE_INIT \
_ownsUniqueId(false), \
- _serializer(new HASerializer(nullptr, 5)), \
+ _serializer(new HASerializer(nullptr, 6)), \
_availabilityTopic(nullptr), \
_sharedAvailability(false), \
- _available(true) // device will be available by default
+ _available(true), \
+ _extendedUniqueIds(false)
HADevice::HADevice() :
_uniqueId(nullptr),
@@ -81,6 +82,14 @@ void HADevice::setSoftwareVersion(const char* softwareVersion)
);
}
+void HADevice::setConfigurationUrl(const char* url)
+{
+ _serializer->set(
+ AHATOFSTR(HADeviceConfigurationUrlProperty),
+ url
+ );
+}
+
void HADevice::setAvailability(bool online)
{
_available = online;
diff --git a/src/HADevice.h b/src/HADevice.h
index f51c919..0949982 100644
--- a/src/HADevice.h
+++ b/src/HADevice.h
@@ -60,6 +60,12 @@ public:
inline bool isSharedAvailabilityEnabled() const
{ return _sharedAvailability; }
+ /**
+ * Returns true if the extended unique IDs feature is enabled for the device.
+ */
+ inline bool isExtendedUniqueIdsEnabled() const
+ { return _extendedUniqueIds; }
+
/**
* Returns availability topic generated by the HADevice::enableSharedAvailability method.
* It can be nullptr if the shared availability is not enabled.
@@ -73,6 +79,13 @@ public:
inline bool isAvailable() const
{ return _available; }
+ /**
+ * Enables the use of extended unique IDs for all registered device types.
+ * The unique ID of each device type will be prefixed with the device's ID once enabled.
+ */
+ inline void enableExtendedUniqueIds()
+ { _extendedUniqueIds = true; }
+
/**
* Sets unique ID of the device based on the given byte array.
* Each byte is converted into a hex string representation, so the final length of the unique ID will be twice as given.
@@ -111,6 +124,13 @@ public:
*/
void setSoftwareVersion(const char* softwareVersion);
+ /**
+ * Sets the "configuration URL" property that's going to be used by the Home Assistant.
+ *
+ * @param url Configuration URL to publish.
+ */
+ void setConfigurationUrl(const char* url);
+
/**
* Sets device's availability and publishes MQTT message on the availability topic.
* If the device is not connected to an MQTT broker or the shared availability is not enabled then nothing happens.
@@ -155,6 +175,9 @@ private:
/// Specifies whether the device is available (online / offline).
bool _available;
+
+ /// Specifies whether extended unique IDs feature is enabled.
+ bool _extendedUniqueIds;
};
#endif
diff --git a/src/HAMqtt.cpp b/src/HAMqtt.cpp
index 8c585b2..ed1c15c 100644
--- a/src/HAMqtt.cpp
+++ b/src/HAMqtt.cpp
@@ -12,6 +12,8 @@
_device(device), \
_messageCallback(nullptr), \
_connectedCallback(nullptr), \
+ _disconnectedCallback(nullptr), \
+ _stateChangedCallback(nullptr), \
_initialized(false), \
_discoveryPrefix(DefaultDiscoveryPrefix), \
_dataPrefix(DefaultDataPrefix), \
@@ -23,7 +25,8 @@
_devicesTypes(new HABaseDeviceType*[maxDevicesTypesNb]), \
_lastWillTopic(nullptr), \
_lastWillMessage(nullptr), \
- _lastWillRetain(false)
+ _lastWillRetain(false), \
+ _currentState(StateDisconnected)
static const char* DefaultDiscoveryPrefix = "homeassistant";
static const char* DefaultDataPrefix = "aha";
@@ -173,7 +176,16 @@ bool HAMqtt::disconnect()
void HAMqtt::loop()
{
- if (_initialized && !_mqtt->loop()) {
+ if (!_initialized) {
+ return;
+ }
+
+ bool result = _mqtt->loop();
+ if (_currentState != _mqtt->state()) {
+ setState(static_cast(_mqtt->state()));
+ }
+
+ if (!result) {
connectToServer();
}
}
@@ -183,9 +195,19 @@ bool HAMqtt::isConnected() const
return _mqtt->connected();
}
+void HAMqtt::setKeepAlive(uint16_t keepAlive)
+{
+ _mqtt->setKeepAlive(keepAlive);
+}
+
+bool HAMqtt::setBufferSize(uint16_t size)
+{
+ return _mqtt->setBufferSize(size);
+}
+
void HAMqtt::addDeviceType(HABaseDeviceType* deviceType)
{
- if (_devicesTypesNb + 1 >= _maxDevicesTypesNb) {
+ if (_devicesTypesNb + 1 > _maxDevicesTypesNb) {
return;
}
@@ -274,8 +296,9 @@ void HAMqtt::connectToServer()
}
_lastConnectionAttemptAt = millis();
+ setState(StateConnecting);
- ARDUINOHA_DEBUG_PRINT(F("AHA: connecting, client ID: "))
+ ARDUINOHA_DEBUG_PRINT(F("AHA: MQTT connecting, client ID: "))
ARDUINOHA_DEBUG_PRINTLN(_device.getUniqueId())
_mqtt->connect(
@@ -290,8 +313,7 @@ void HAMqtt::connectToServer()
);
if (isConnected()) {
- ARDUINOHA_DEBUG_PRINTLN(F("AHA: connected"))
- onConnectedLogic();
+ setState(StateConnected);
} else {
ARDUINOHA_DEBUG_PRINTLN(F("AHA: failed to connect"))
}
@@ -309,3 +331,29 @@ void HAMqtt::onConnectedLogic()
_devicesTypes[i]->onMqttConnected();
}
}
+
+void HAMqtt::setState(ConnectionState state)
+{
+ ConnectionState previousState = _currentState;
+ _currentState = state;
+
+ ARDUINOHA_DEBUG_PRINT(F("AHA: MQTT state changed to "))
+ ARDUINOHA_DEBUG_PRINT(_currentState)
+ ARDUINOHA_DEBUG_PRINT(F(", previous state: "))
+ ARDUINOHA_DEBUG_PRINTLN(previousState)
+
+ if (_currentState == StateConnected) {
+ ARDUINOHA_DEBUG_PRINTLN(F("AHA: MQTT connected"))
+ onConnectedLogic();
+ } else if (previousState == StateConnected && _currentState != StateConnected) {
+ ARDUINOHA_DEBUG_PRINTLN(F("AHA: MQTT disconnected"))
+
+ if (_disconnectedCallback) {
+ _disconnectedCallback();
+ }
+ }
+
+ if (_stateChangedCallback) {
+ _stateChangedCallback(_currentState);
+ }
+}
\ No newline at end of file
diff --git a/src/HAMqtt.h b/src/HAMqtt.h
index 250bd74..915d846 100644
--- a/src/HAMqtt.h
+++ b/src/HAMqtt.h
@@ -7,6 +7,7 @@
#include "ArduinoHADefines.h"
#define HAMQTT_CALLBACK(name) void (*name)()
+#define HAMQTT_STATE_CALLBACK(name) void (*name)(ConnectionState state)
#define HAMQTT_MESSAGE_CALLBACK(name) void (*name)(const char* topic, const uint8_t* payload, uint16_t length)
#define HAMQTT_DEFAULT_PORT 1883
@@ -16,6 +17,12 @@ class PubSubClientMock;
class PubSubClient;
#endif
+#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
+#define HAMQTT_DEFAULT_DEVICES_LIMIT 6
+#else
+#define HAMQTT_DEFAULT_DEVICES_LIMIT 24
+#endif
+
class HADevice;
class HABaseDeviceType;
@@ -30,6 +37,20 @@ using namespace arduino;
class HAMqtt
{
public:
+ enum ConnectionState {
+ StateConnecting = -5,
+ StateConnectionTimeout = -4,
+ StateConnectionLost = -3,
+ StateConnectionFailed = -2,
+ StateDisconnected = -1,
+ StateConnected = 0,
+ StateBadProtocol = 1,
+ StateBadClientId = 2,
+ StateUnavailable = 3,
+ StateBadCredentials = 4,
+ StateUnauthorized = 5
+ };
+
/**
* Returns existing instance (singleton) of the HAMqtt class.
* It may be a null pointer if the HAMqtt object was never constructed or it was destroyed.
@@ -41,7 +62,7 @@ public:
explicit HAMqtt(
PubSubClientMock* pubSub,
HADevice& device,
- const uint8_t maxDevicesTypesNb = 6
+ const uint8_t maxDevicesTypesNb = HAMQTT_DEFAULT_DEVICES_LIMIT
);
#else
/**
@@ -55,7 +76,7 @@ public:
explicit HAMqtt(
Client& netClient,
HADevice& device,
- const uint8_t maxDevicesTypesNb = 6
+ const uint8_t maxDevicesTypesNb = HAMQTT_DEFAULT_DEVICES_LIMIT
);
#endif
@@ -123,6 +144,28 @@ public:
inline void onConnected(HAMQTT_CALLBACK(callback))
{ _connectedCallback = callback; }
+ /**
+ * Registers a new callback method that will be called each time the connection to the MQTT broker is lost.
+ *
+ * @param callback Callback method.
+ */
+ inline void onDisconnected(HAMQTT_CALLBACK(callback))
+ { _disconnectedCallback = callback; }
+
+ /**
+ * Registers a new callback method that will be called each time the connection state changes.
+ *
+ * @param callback Callback method.
+ */
+ inline void onStateChanged(HAMQTT_STATE_CALLBACK(callback))
+ { _stateChangedCallback = callback; }
+
+ /**
+ * Returns the current state of the MQTT connection.
+ */
+ inline ConnectionState getState() const
+ { return _currentState; }
+
/**
* Sets parameters of the MQTT connection using the IP address and port.
* The library will try to connect to the broker in first loop cycle.
@@ -203,6 +246,22 @@ public:
*/
bool isConnected() const;
+ /**
+ * Sets keep alive for the MQTT connection.
+ * By default it's 15 seconds.
+ *
+ * @param keepAlive Number of seconds to keep connection alive.
+ */
+ void setKeepAlive(uint16_t keepAlive);
+
+ /**
+ * Sets the buffer size for the MQTT connection.
+ * By default it's 256 bytes.
+ *
+ * @param size Size of the buffer.
+ */
+ bool setBufferSize(uint16_t size);
+
/**
* Adds a new device's type to the MQTT.
* Each time the connection with MQTT broker is acquired, the HAMqtt class
@@ -320,7 +379,7 @@ public:
private:
/// Interval between MQTT reconnects (milliseconds).
- static const uint16_t ReconnectInterval = 5000;
+ static const uint16_t ReconnectInterval = 10000;
/// Living instance of the HAMqtt class. It can be nullptr.
static HAMqtt* _instance;
@@ -336,6 +395,11 @@ private:
*/
void onConnectedLogic();
+ /**
+ * Sets the state of the MQTT connection.
+ */
+ void setState(ConnectionState state);
+
#ifdef ARDUINOHA_TEST
PubSubClientMock* _mqtt;
#else
@@ -352,6 +416,12 @@ private:
/// The callback method that will be called when the MQTT connection is acquired.
HAMQTT_CALLBACK(_connectedCallback);
+ /// The callback method that will be called when the MQTT connection is lost.
+ HAMQTT_CALLBACK(_disconnectedCallback);
+
+ /// The callback method that will be called when the MQTT connection state changes.
+ HAMQTT_STATE_CALLBACK(_stateChangedCallback);
+
/// Specifies whether the HAMqtt::begin method was ever called.
bool _initialized;
@@ -387,6 +457,9 @@ private:
/// The last will retain set by HAMqtt::setLastWill
bool _lastWillRetain;
+
+ /// The last known state of the MQTT connection.
+ ConnectionState _currentState;
};
-#endif
\ No newline at end of file
+#endif
diff --git a/src/device-types/HABaseDeviceType.cpp b/src/device-types/HABaseDeviceType.cpp
index f5b123b..17583e3 100644
--- a/src/device-types/HABaseDeviceType.cpp
+++ b/src/device-types/HABaseDeviceType.cpp
@@ -11,6 +11,7 @@ HABaseDeviceType::HABaseDeviceType(
_componentName(componentName),
_uniqueId(uniqueId),
_name(nullptr),
+ _objectId(nullptr),
_serializer(nullptr),
_availability(AvailabilityDefault)
{
diff --git a/src/device-types/HABaseDeviceType.h b/src/device-types/HABaseDeviceType.h
index 49fa1f1..0d6fa32 100644
--- a/src/device-types/HABaseDeviceType.h
+++ b/src/device-types/HABaseDeviceType.h
@@ -78,6 +78,22 @@ public:
inline const char* getName() const
{ return _name; }
+ /**
+ * Sets object ID that will be used by HA to generate entity ID.
+ * Keep the ID short to save the resources.
+ *
+ * @param objectId The object ID.
+ */
+ inline void setObjectId(const char* objectId)
+ { _objectId = objectId; }
+
+ /**
+ * Returns the object ID that was set by setObjectId method.
+ * It can be nullptr if there is no ID assigned.
+ */
+ inline const char* getObjectId() const
+ { return _objectId; }
+
/**
* Sets availability of the device type.
* Setting the initial availability enables availability reporting for this device type.
@@ -209,6 +225,9 @@ protected:
/// The name that was set using setName method. It can be nullptr.
const char* _name;
+ /// The object ID that was set using setObjectId method. It can be nullptr.
+ const char* _objectId;
+
/// HASerializer that belongs to this device type. It can be nullptr.
HASerializer* _serializer;
diff --git a/src/device-types/HABinarySensor.cpp b/src/device-types/HABinarySensor.cpp
index d83b52f..20ab76f 100644
--- a/src/device-types/HABinarySensor.cpp
+++ b/src/device-types/HABinarySensor.cpp
@@ -27,17 +27,36 @@ bool HABinarySensor::setState(const bool state, const bool force)
return false;
}
+void HABinarySensor::setExpireAfter(uint16_t expireAfter)
+{
+ if (expireAfter > 0) {
+ _expireAfter.setBaseValue(expireAfter);
+ } else {
+ _expireAfter.reset();
+ }
+}
+
void HABinarySensor::buildSerializer()
{
if (_serializer || !uniqueId()) {
return;
}
- _serializer = new HASerializer(this, 7); // 7 - max properties nb
+ _serializer = new HASerializer(this, 9); // 9 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _class);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
+
+ if (_expireAfter.isSet()) {
+ _serializer->set(
+ AHATOFSTR(HAExpireAfterProperty),
+ &_expireAfter,
+ HASerializer::NumberPropertyType
+ );
+ }
+
_serializer->set(HASerializer::WithDevice);
_serializer->set(HASerializer::WithAvailability);
_serializer->topic(AHATOFSTR(HAStateTopic));
diff --git a/src/device-types/HABinarySensor.h b/src/device-types/HABinarySensor.h
index 80cda9d..518e546 100644
--- a/src/device-types/HABinarySensor.h
+++ b/src/device-types/HABinarySensor.h
@@ -2,6 +2,7 @@
#define AHA_HABINARYSENSOR_H
#include "HABaseDeviceType.h"
+#include "../utils/HANumeric.h"
#ifndef EX_ARDUINOHA_BINARY_SENSOR
@@ -30,6 +31,14 @@ public:
*/
bool setState(const bool state, const bool force = false);
+ /**
+ * Sets the number of seconds after the sensor’s state expires, if it’s not updated.
+ * By default the sensors state never expires.
+ *
+ * @param expireAfter The number of seconds.
+ */
+ void setExpireAfter(uint16_t expireAfter);
+
/**
* Sets the current state of the sensor without publishing it to Home Assistant.
* This method may be useful if you want to change the state before the connection with the MQTT broker is acquired.
@@ -82,8 +91,12 @@ private:
/// The icon of the sensor. It can be nullptr.
const char* _icon;
+ /// It defines the number of seconds after the sensor’s state expires, if it’s not updated. By default the sensors state never expires.
+ HANumeric _expireAfter;
+
/// Current state of the sensor. By default it's false.
bool _currentState;
+
};
#endif
diff --git a/src/device-types/HAButton.cpp b/src/device-types/HAButton.cpp
index ee459f6..4a913c6 100644
--- a/src/device-types/HAButton.cpp
+++ b/src/device-types/HAButton.cpp
@@ -20,9 +20,10 @@ void HAButton::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 8); // 8 - max properties nb
+ _serializer = new HASerializer(this, 9); // 9 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _class);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
diff --git a/src/device-types/HACamera.cpp b/src/device-types/HACamera.cpp
index 1e50c34..8a9650d 100644
--- a/src/device-types/HACamera.cpp
+++ b/src/device-types/HACamera.cpp
@@ -27,9 +27,10 @@ void HACamera::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 7); // 7 - max properties nb
+ _serializer = new HASerializer(this, 8); // 8 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
_serializer->set(
AHATOFSTR(HAEncodingProperty),
diff --git a/src/device-types/HACover.cpp b/src/device-types/HACover.cpp
index 11e294a..78cd5cd 100644
--- a/src/device-types/HACover.cpp
+++ b/src/device-types/HACover.cpp
@@ -54,9 +54,10 @@ void HACover::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 11); // 11 - max properties nb
+ _serializer = new HASerializer(this, 12); // 12 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _class);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
diff --git a/src/device-types/HADeviceTracker.cpp b/src/device-types/HADeviceTracker.cpp
index dd60876..81e6a06 100644
--- a/src/device-types/HADeviceTracker.cpp
+++ b/src/device-types/HADeviceTracker.cpp
@@ -33,9 +33,10 @@ void HADeviceTracker::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 7); // 7 - max properties nb
+ _serializer = new HASerializer(this, 8); // 8 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
_serializer->set(
AHATOFSTR(HASourceTypeProperty),
diff --git a/src/device-types/HAFan.cpp b/src/device-types/HAFan.cpp
index 90626e8..ee404a2 100644
--- a/src/device-types/HAFan.cpp
+++ b/src/device-types/HAFan.cpp
@@ -55,9 +55,10 @@ void HAFan::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 13); // 13 - max properties nb
+ _serializer = new HASerializer(this, 14); // 14 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
if (_retain) {
diff --git a/src/device-types/HAHVAC.cpp b/src/device-types/HAHVAC.cpp
index 4b8db71..76eb422 100644
--- a/src/device-types/HAHVAC.cpp
+++ b/src/device-types/HAHVAC.cpp
@@ -183,9 +183,10 @@ void HAHVAC::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 27); // 27 - max properties nb
+ _serializer = new HASerializer(this, 28); // 28 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
if (_retain) {
diff --git a/src/device-types/HAHVAC.h b/src/device-types/HAHVAC.h
index 1c090f9..1957ac6 100644
--- a/src/device-types/HAHVAC.h
+++ b/src/device-types/HAHVAC.h
@@ -140,7 +140,7 @@ public:
_SET_CURRENT_TEMPERATURE_OVERLOAD(uint32_t)
_SET_CURRENT_TEMPERATURE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_CURRENT_TEMPERATURE_OVERLOAD(int)
#endif
@@ -218,7 +218,7 @@ public:
_SET_TARGET_TEMPERATURE_OVERLOAD(uint32_t)
_SET_TARGET_TEMPERATURE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_TARGET_TEMPERATURE_OVERLOAD(int)
#endif
@@ -240,7 +240,7 @@ public:
_SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(uint32_t)
_SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_CURRENT_CURRENT_TEMPERATURE_OVERLOAD(int)
#endif
@@ -378,7 +378,7 @@ public:
_SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(uint32_t)
_SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_CURRENT_TARGET_TEMPERATURE_OVERLOAD(int)
#endif
diff --git a/src/device-types/HALight.cpp b/src/device-types/HALight.cpp
index d8fbc14..03f6dfe 100644
--- a/src/device-types/HALight.cpp
+++ b/src/device-types/HALight.cpp
@@ -128,9 +128,10 @@ void HALight::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 18); // 18 - max properties nb
+ _serializer = new HASerializer(this, 19); // 19 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
if (_retain) {
diff --git a/src/device-types/HALock.cpp b/src/device-types/HALock.cpp
index 41d7082..d107458 100644
--- a/src/device-types/HALock.cpp
+++ b/src/device-types/HALock.cpp
@@ -35,9 +35,10 @@ void HALock::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 9); // 9 - max properties nb
+ _serializer = new HASerializer(this, 10); // 10 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
if (_retain) {
diff --git a/src/device-types/HANumber.cpp b/src/device-types/HANumber.cpp
index e34f3f6..2c41345 100644
--- a/src/device-types/HANumber.cpp
+++ b/src/device-types/HANumber.cpp
@@ -42,10 +42,10 @@ void HANumber::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 15); // 15 - max properties nb
-
+ _serializer = new HASerializer(this, 16); // 16 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _class);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
_serializer->set(AHATOFSTR(HAUnitOfMeasurementProperty), _unitOfMeasurement);
diff --git a/src/device-types/HANumber.h b/src/device-types/HANumber.h
index 441ad67..e20d6fe 100644
--- a/src/device-types/HANumber.h
+++ b/src/device-types/HANumber.h
@@ -64,7 +64,7 @@ public:
_SET_STATE_OVERLOAD(uint32_t)
_SET_STATE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_STATE_OVERLOAD(int)
#endif
@@ -86,7 +86,7 @@ public:
_SET_CURRENT_STATE_OVERLOAD(uint32_t)
_SET_CURRENT_STATE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_CURRENT_STATE_OVERLOAD(int)
#endif
diff --git a/src/device-types/HAScene.cpp b/src/device-types/HAScene.cpp
index 085cecf..c579c68 100644
--- a/src/device-types/HAScene.cpp
+++ b/src/device-types/HAScene.cpp
@@ -19,9 +19,10 @@ void HAScene::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 7); // 7 - max properties nb
+ _serializer = new HASerializer(this, 8); // 8 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
// optional property
diff --git a/src/device-types/HASelect.cpp b/src/device-types/HASelect.cpp
index a389c03..b4bff01 100644
--- a/src/device-types/HASelect.cpp
+++ b/src/device-types/HASelect.cpp
@@ -85,15 +85,21 @@ bool HASelect::setState(const int8_t state, const bool force)
return false;
}
+const char* HASelect::getCurrentOption() const
+{
+ return _options->getItem(getCurrentState());
+}
+
void HASelect::buildSerializer()
{
if (_serializer || !uniqueId() || !_options) {
return;
}
- _serializer = new HASerializer(this, 10); // 10 - max properties nb
+ _serializer = new HASerializer(this, 11); // 11 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
_serializer->set(
AHATOFSTR(HAOptionsProperty),
@@ -164,10 +170,14 @@ void HASelect::onMqttMessage(
bool HASelect::publishState(const int8_t state)
{
- if (state == -1 || !_options || state >= _options->getItemsNb()) {
+ if (!_options || state >= _options->getItemsNb()) {
return false;
}
+ if (state < 0) {
+ return publishOnDataTopic(AHATOFSTR(HAStateTopic), AHATOFSTR(HAStateNone), true);
+ }
+
const char* item = _options->getItems()[state];
if (!item) {
return false;
diff --git a/src/device-types/HASelect.h b/src/device-types/HASelect.h
index 121999c..a6c0f99 100644
--- a/src/device-types/HASelect.h
+++ b/src/device-types/HASelect.h
@@ -41,12 +41,19 @@ public:
* Please note that if a new value is the same as previous one,
* the MQTT message won't be published.
*
- * @param state New state of the select.
+ * @param state New state of the select. You can set `-1` to reset the select.
* @param force Forces to update state without comparing it to previous known state.
* @returns Returns true if MQTT message has been published successfully.
*/
bool setState(const int8_t state, const bool force = false);
+ /**
+ * Returns the selected option based on the most recent state of the select.
+ * You can utilize this method to get the string representation of the option (e.g. for printing).
+ * If no option is selected, null is returned.
+ */
+ const char* getCurrentOption() const;
+
/**
* Sets the current state of the select without publishing it to Home Assistant.
* State represents the index of the option that was set using the setOptions method.
diff --git a/src/device-types/HASensor.cpp b/src/device-types/HASensor.cpp
index ed23e17..0d2efe9 100644
--- a/src/device-types/HASensor.cpp
+++ b/src/device-types/HASensor.cpp
@@ -4,35 +4,57 @@
#include "../HAMqtt.h"
#include "../utils/HASerializer.h"
-HASensor::HASensor(const char* uniqueId) :
+HASensor::HASensor(const char* uniqueId, const uint16_t features) :
HABaseDeviceType(AHATOFSTR(HAComponentSensor), uniqueId),
+ _features(features),
_deviceClass(nullptr),
+ _stateClass(nullptr),
_forceUpdate(false),
_icon(nullptr),
- _unitOfMeasurement(nullptr)
+ _unitOfMeasurement(nullptr),
+ _expireAfter()
{
}
bool HASensor::setValue(const char* value)
{
+ if (!value) {
+ return publishOnDataTopic(AHATOFSTR(HAStateTopic), AHATOFSTR(HAStateNone), true);
+ }
+
return publishOnDataTopic(AHATOFSTR(HAStateTopic), value, true);
}
+bool HASensor::setJsonAttributes(const char* json)
+{
+ return publishOnDataTopic(AHATOFSTR(HAJsonAttributesTopic), json, true);
+}
+
+void HASensor::setExpireAfter(uint16_t expireAfter)
+{
+ if (expireAfter > 0) {
+ _expireAfter.setBaseValue(expireAfter);
+ } else {
+ _expireAfter.reset();
+ }
+}
+
void HASensor::buildSerializer()
{
if (_serializer || !uniqueId()) {
return;
}
- _serializer = new HASerializer(this, 9); // 9 - max properties nb
+ _serializer = new HASerializer(this, 13); // 13 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _deviceClass);
+ _serializer->set(AHATOFSTR(HAStateClassProperty), _stateClass);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
_serializer->set(AHATOFSTR(HAUnitOfMeasurementProperty), _unitOfMeasurement);
- // optional property
if (_forceUpdate) {
_serializer->set(
AHATOFSTR(HAForceUpdateProperty),
@@ -41,6 +63,18 @@ void HASensor::buildSerializer()
);
}
+ if (_expireAfter.isSet()) {
+ _serializer->set(
+ AHATOFSTR(HAExpireAfterProperty),
+ &_expireAfter,
+ HASerializer::NumberPropertyType
+ );
+ }
+
+ if (_features & JsonAttributesFeature) {
+ _serializer->topic(AHATOFSTR(HAJsonAttributesTopic));
+ }
+
_serializer->set(HASerializer::WithDevice);
_serializer->set(HASerializer::WithAvailability);
_serializer->topic(AHATOFSTR(HAStateTopic));
diff --git a/src/device-types/HASensor.h b/src/device-types/HASensor.h
index a48e2c1..6dbd281 100644
--- a/src/device-types/HASensor.h
+++ b/src/device-types/HASensor.h
@@ -2,6 +2,7 @@
#define AHA_HASENSOR_H
#include "HABaseDeviceType.h"
+#include "../utils/HANumeric.h"
#ifndef EX_ARDUINOHA_SENSOR
@@ -17,10 +18,16 @@
class HASensor : public HABaseDeviceType
{
public:
+ enum Features {
+ DefaultFeatures = 0,
+ JsonAttributesFeature = 1
+ };
+
/**
* @param uniqueId The unique ID of the sensor. It needs to be unique in a scope of your device.
+ * @param features Features that should be enabled for the sensor.
*/
- HASensor(const char* uniqueId);
+ HASensor(const char* uniqueId, const uint16_t features = DefaultFeatures);
/**
* Publishes the MQTT message with the given value.
@@ -32,6 +39,22 @@ public:
*/
bool setValue(const char* value);
+ /**
+ * Publishes the given JSON data on the JSON attributes topic.
+ * The `JsonAttributesFeature` has to be enabled prior to setting the value.
+ *
+ * @param json JSON attributes.
+ */
+ bool setJsonAttributes(const char* json);
+
+ /**
+ * Sets the number of seconds after the sensor’s state expires, if it’s not updated.
+ * By default the sensors state never expires.
+ *
+ * @param expireAfter The number of seconds.
+ */
+ void setExpireAfter(uint16_t expireAfter);
+
/**
* Sets class of the device.
* You can find list of available values here: https://www.home-assistant.io/integrations/sensor/#device-class
@@ -41,6 +64,15 @@ public:
inline void setDeviceClass(const char* deviceClass)
{ _deviceClass = deviceClass; }
+ /**
+ * Sets class of the state for the long term stats.
+ * See: https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics
+ *
+ * @param stateClass The class name.
+ */
+ inline void setStateClass(const char* stateClass)
+ { _stateClass = stateClass; }
+
/**
* Forces HA panel to process each incoming value (MQTT message).
* It's useful if you want to have meaningful value graphs in history.
@@ -72,9 +104,15 @@ protected:
virtual void onMqttConnected() override;
private:
+ /// Features enabled for the sensor.
+ const uint16_t _features;
+
/// The device class. It can be nullptr.
const char* _deviceClass;
+ /// The state class for the long term stats. It can be nullptr. See: https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics
+ const char* _stateClass;
+
/// The force update flag for the HA panel.
bool _forceUpdate;
@@ -83,6 +121,9 @@ private:
/// The unit of measurement for the sensor. It can be nullptr.
const char* _unitOfMeasurement;
+
+ /// It defines the number of seconds after the sensor’s state expires, if it’s not updated. By default the sensors state never expires.
+ HANumeric _expireAfter;
};
#endif
diff --git a/src/device-types/HASensorNumber.cpp b/src/device-types/HASensorNumber.cpp
index 834a85b..1f34627 100644
--- a/src/device-types/HASensorNumber.cpp
+++ b/src/device-types/HASensorNumber.cpp
@@ -5,9 +5,10 @@
HASensorNumber::HASensorNumber(
const char* uniqueId,
- const NumberPrecision precision
+ const NumberPrecision precision,
+ const uint16_t features
) :
- HASensor(uniqueId),
+ HASensor(uniqueId, features),
_precision(precision),
_currentValue()
{
diff --git a/src/device-types/HASensorNumber.h b/src/device-types/HASensorNumber.h
index e7343f5..d530737 100644
--- a/src/device-types/HASensorNumber.h
+++ b/src/device-types/HASensorNumber.h
@@ -2,7 +2,6 @@
#define AHA_HASENSORNUMBER_H
#include "HASensor.h"
-#include "../utils/HANumeric.h"
#ifndef EX_ARDUINOHA_SENSOR
@@ -27,10 +26,12 @@ public:
/**
* @param uniqueId The unique ID of the sensor. It needs to be unique in a scope of your device.
* @param precision Precision of the floating point number that will be displayed in the HA panel.
+ * @param features Features that should be enabled for the sensor.
*/
HASensorNumber(
const char* uniqueId,
- const NumberPrecision precision = PrecisionP0
+ const NumberPrecision precision = PrecisionP0,
+ const uint16_t features = DefaultFeatures
);
/**
@@ -51,7 +52,7 @@ public:
_SET_VALUE_OVERLOAD(uint32_t)
_SET_VALUE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_VALUE_OVERLOAD(int)
#endif
@@ -72,7 +73,7 @@ public:
_SET_CURRENT_VALUE_OVERLOAD(uint32_t)
_SET_CURRENT_VALUE_OVERLOAD(float)
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
_SET_CURRENT_VALUE_OVERLOAD(int)
#endif
diff --git a/src/device-types/HASwitch.cpp b/src/device-types/HASwitch.cpp
index fde8f3e..85da4f3 100644
--- a/src/device-types/HASwitch.cpp
+++ b/src/device-types/HASwitch.cpp
@@ -36,9 +36,10 @@ void HASwitch::buildSerializer()
return;
}
- _serializer = new HASerializer(this, 10); // 10 - max properties nb
+ _serializer = new HASerializer(this, 11); // 11 - max properties nb
_serializer->set(AHATOFSTR(HANameProperty), _name);
- _serializer->set(AHATOFSTR(HAUniqueIdProperty), _uniqueId);
+ _serializer->set(AHATOFSTR(HAObjectIdProperty), _objectId);
+ _serializer->set(HASerializer::WithUniqueId);
_serializer->set(AHATOFSTR(HADeviceClassProperty), _class);
_serializer->set(AHATOFSTR(HAIconProperty), _icon);
diff --git a/src/mocks/AUnitHelpers.h b/src/mocks/AUnitHelpers.h
index 6b3844b..9b22424 100644
--- a/src/mocks/AUnitHelpers.h
+++ b/src/mocks/AUnitHelpers.h
@@ -30,7 +30,7 @@
assertEqual(eTopic, publishedMessage->topic); \
assertEqual(messageP, publishedMessage->buffer); \
assertEqual(messageLen, publishedMessage->bufferSize - 1); \
- assertEqual(eRetained, publishedMessage->retained); \
+ assertEqual(static_cast(eRetained), publishedMessage->retained); \
}
#define assertSingleMqttMessage(eTopic, eMessage, eRetained) { \
diff --git a/src/mocks/PubSubClientMock.cpp b/src/mocks/PubSubClientMock.cpp
index 3aa6f21..4562eea 100644
--- a/src/mocks/PubSubClientMock.cpp
+++ b/src/mocks/PubSubClientMock.cpp
@@ -6,6 +6,9 @@
PubSubClientMock::PubSubClientMock() :
_pendingMessage(nullptr),
_flushedMessages(nullptr),
+ _keepAlive(15),
+ _bufferSize(256),
+ _state(-1),
_flushedMessagesNb(0),
_subscriptions(nullptr),
_subscriptionsNb(0),
@@ -119,7 +122,7 @@ bool PubSubClientMock::beginPublish(
}
_pendingMessage = new MqttMessage();
- _pendingMessage->retained = retained;
+ _pendingMessage->retained = retained;
{
size_t size = strlen(topic) + 1;
diff --git a/src/mocks/PubSubClientMock.h b/src/mocks/PubSubClientMock.h
index e44b0ad..0781ff1 100644
--- a/src/mocks/PubSubClientMock.h
+++ b/src/mocks/PubSubClientMock.h
@@ -127,6 +127,24 @@ public:
int endPublish();
bool subscribe(const char* topic);
+ inline void setKeepAlive(uint16_t keepAlive)
+ { _keepAlive = keepAlive; }
+
+ inline uint16_t getKeepAlive() const
+ { return _keepAlive; }
+
+ inline bool setBufferSize(uint16_t bufferSize)
+ { _bufferSize = bufferSize; return true; }
+
+ inline uint16_t getBufferSize() const
+ { return _bufferSize; }
+
+ inline void setState(int16_t state)
+ { _state = state; }
+
+ inline int16_t state() const
+ { return _state; }
+
inline uint8_t getFlushedMessagesNb() const
{ return _flushedMessagesNb; }
@@ -137,7 +155,7 @@ public:
{ return _subscriptionsNb; }
inline MqttSubscription** getSubscriptions() const
- { return _subscriptions; }
+ { return _subscriptions; }
inline const MqttConnection& getConnection() const
{ return _connection; }
@@ -154,6 +172,9 @@ public:
private:
MqttMessage* _pendingMessage;
MqttMessage** _flushedMessages;
+ uint16_t _keepAlive;
+ uint16_t _bufferSize;
+ int16_t _state;
uint8_t _flushedMessagesNb;
MqttSubscription** _subscriptions;
uint8_t _subscriptionsNb;
diff --git a/src/utils/HADictionary.cpp b/src/utils/HADictionary.cpp
index a0328f0..266d21d 100644
--- a/src/utils/HADictionary.cpp
+++ b/src/utils/HADictionary.cpp
@@ -36,10 +36,13 @@ const char HADeviceIdentifiersProperty[] PROGMEM = {"ids"};
const char HADeviceManufacturerProperty[] PROGMEM = {"mf"};
const char HADeviceModelProperty[] PROGMEM = {"mdl"};
const char HADeviceSoftwareVersionProperty[] PROGMEM = {"sw"};
+const char HADeviceConfigurationUrlProperty[] PROGMEM = {"cu"};
const char HANameProperty[] PROGMEM = {"name"};
const char HAUniqueIdProperty[] PROGMEM = {"uniq_id"};
+const char HAObjectIdProperty[] PROGMEM = {"obj_id"};
const char HADeviceProperty[] PROGMEM = {"dev"};
const char HADeviceClassProperty[] PROGMEM = {"dev_cla"};
+const char HAStateClassProperty[] PROGMEM = {"stat_cla"};
const char HAIconProperty[] PROGMEM = {"ic"};
const char HARetainProperty[] PROGMEM = {"ret"};
const char HASourceTypeProperty[] PROGMEM = {"src_type"};
@@ -71,6 +74,7 @@ const char HASwingModesProperty[] PROGMEM = {"swing_modes"};
const char HAModesProperty[] PROGMEM = {"modes"};
const char HATemperatureCommandTemplateProperty[] PROGMEM = {"temp_cmd_tpl"};
const char HAPayloadOnProperty[] PROGMEM = {"pl_on"};
+const char HAExpireAfterProperty[] PROGMEM = {"exp_aft"};
// topics
const char HAConfigTopic[] PROGMEM = {"config"};
@@ -100,6 +104,7 @@ const char HATemperatureCommandTopic[] PROGMEM = {"temp_cmd_t"};
const char HATemperatureStateTopic[] PROGMEM = {"temp_stat_t"};
const char HARGBCommandTopic[] PROGMEM = {"rgb_cmd_t"};
const char HARGBStateTopic[] PROGMEM = {"rgb_stat_t"};
+const char HAJsonAttributesTopic[] PROGMEM = {"json_attr_t"};
// misc
const char HAOnline[] PROGMEM = {"online"};
diff --git a/src/utils/HADictionary.h b/src/utils/HADictionary.h
index a5fc912..609f38d 100644
--- a/src/utils/HADictionary.h
+++ b/src/utils/HADictionary.h
@@ -36,10 +36,13 @@ extern const char HADeviceIdentifiersProperty[];
extern const char HADeviceManufacturerProperty[];
extern const char HADeviceModelProperty[];
extern const char HADeviceSoftwareVersionProperty[];
+extern const char HADeviceConfigurationUrlProperty[];
extern const char HANameProperty[];
extern const char HAUniqueIdProperty[];
+extern const char HAObjectIdProperty[];
extern const char HADeviceProperty[];
extern const char HADeviceClassProperty[];
+extern const char HAStateClassProperty[];
extern const char HAIconProperty[];
extern const char HARetainProperty[];
extern const char HASourceTypeProperty[];
@@ -71,6 +74,7 @@ extern const char HASwingModesProperty[];
extern const char HAModesProperty[];
extern const char HATemperatureCommandTemplateProperty[];
extern const char HAPayloadOnProperty[];
+extern const char HAExpireAfterProperty[];
// topics
extern const char HAConfigTopic[];
@@ -100,6 +104,7 @@ extern const char HATemperatureCommandTopic[];
extern const char HATemperatureStateTopic[];
extern const char HARGBCommandTopic[];
extern const char HARGBStateTopic[];
+extern const char HAJsonAttributesTopic[];
// misc
extern const char HAOnline[];
diff --git a/src/utils/HANumeric.cpp b/src/utils/HANumeric.cpp
index 79bea60..4314663 100644
--- a/src/utils/HANumeric.cpp
+++ b/src/utils/HANumeric.cpp
@@ -96,7 +96,7 @@ HANumeric::HANumeric(const uint32_t value, const uint8_t precision):
_value = value * getPrecisionBase();
}
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
HANumeric::HANumeric(const int value, const uint8_t precision):
_isSet(true),
_precision(precision)
diff --git a/src/utils/HANumeric.h b/src/utils/HANumeric.h
index c8030ee..9debe2b 100644
--- a/src/utils/HANumeric.h
+++ b/src/utils/HANumeric.h
@@ -3,6 +3,7 @@
#define AHA_NUMERIC_H
#include
+#include "../ArduinoHADefines.h"
/**
* This class represents a numeric value that simplifies use of different types of numbers across the library.
@@ -92,7 +93,7 @@ public:
*/
HANumeric(const uint32_t value, const uint8_t precision);
-#ifdef __SAMD21G18A__
+#ifdef ARDUINOHA_INT_OVERLOAD
/**
* Converts the given int into number representation of the given precision.
* If the precision is greater than zero the given value will be converted to float.
@@ -228,8 +229,6 @@ private:
uint8_t _precision;
explicit HANumeric(const int64_t value);
-
- friend class HANumeric;
};
-#endif
\ No newline at end of file
+#endif
diff --git a/src/utils/HASerializer.cpp b/src/utils/HASerializer.cpp
index 18912da..832426d 100644
--- a/src/utils/HASerializer.cpp
+++ b/src/utils/HASerializer.cpp
@@ -189,10 +189,10 @@ void HASerializer::set(
void HASerializer::set(const FlagType flag)
{
- if (flag == WithDevice) {
+ if (flag == WithDevice || flag == WithUniqueId) {
SerializerEntry* entry = addEntry();
entry->type = FlagEntryType;
- entry->subtype = static_cast(WithDevice);
+ entry->subtype = static_cast(flag);
entry->property = nullptr;
entry->value = nullptr;
} else if (flag == WithAvailability) {
@@ -348,6 +348,21 @@ uint16_t HASerializer::calculateFlagSize(const FlagType flag) const
strlen_P(HADeviceProperty) +
strlen_P(HASerializerJsonPropertySuffix) +
deviceLength;
+ } else if (flag == WithUniqueId && _deviceType) {
+ uint16_t uniqueIdLength = strlen(_deviceType->uniqueId());
+
+ if (device->isExtendedUniqueIdsEnabled()) {
+ uniqueIdLength += strlen(device->getUniqueId()) + 1; // with separator
+ }
+
+ return
+ // property name
+ strlen_P(HASerializerJsonPropertyPrefix) +
+ strlen_P(HAUniqueIdProperty) +
+ strlen_P(HASerializerJsonPropertySuffix) +
+ // property value
+ 2 * strlen_P(HASerializerJsonEscapeChar) +
+ uniqueIdLength;
}
return 0;
@@ -515,11 +530,33 @@ bool HASerializer::flushFlag(const SerializerEntry* entry) const
const FlagType flag = static_cast(entry->subtype);
if (flag == WithDevice && device) {
+ // property name
mqtt->writePayload(AHATOFSTR(HASerializerJsonPropertyPrefix));
mqtt->writePayload(AHATOFSTR(HADeviceProperty));
mqtt->writePayload(AHATOFSTR(HASerializerJsonPropertySuffix));
+ // property value
return device->getSerializer()->flush();
+ } else if (flag == WithUniqueId && _deviceType) {
+ // property name
+ mqtt->writePayload(AHATOFSTR(HASerializerJsonPropertyPrefix));
+ mqtt->writePayload(AHATOFSTR(HAUniqueIdProperty));
+ mqtt->writePayload(AHATOFSTR(HASerializerJsonPropertySuffix));
+
+ // value
+ const char* uniqueId = _deviceType->uniqueId();
+ mqtt->writePayload(AHATOFSTR(HASerializerJsonEscapeChar));
+
+ if (device->isExtendedUniqueIdsEnabled()) {
+ const char* deviceUniqueId = device->getUniqueId();
+ mqtt->writePayload(deviceUniqueId, strlen(deviceUniqueId));
+ mqtt->writePayload(AHATOFSTR(HASerializerUnderscore));
+ }
+
+ mqtt->writePayload(uniqueId, strlen(uniqueId));
+ mqtt->writePayload(AHATOFSTR(HASerializerJsonEscapeChar));
+
+ return true;
}
return false;
diff --git a/src/utils/HASerializer.h b/src/utils/HASerializer.h
index fe9cdf1..ea5a85e 100644
--- a/src/utils/HASerializer.h
+++ b/src/utils/HASerializer.h
@@ -29,7 +29,8 @@ public:
/// The type of a flag for a FlagEntryType.
enum FlagType {
WithDevice = 1,
- WithAvailability
+ WithAvailability,
+ WithUniqueId
};
/// Available data types of entries.
diff --git a/src/utils/HASerializerArray.cpp b/src/utils/HASerializerArray.cpp
index d148c22..20446f0 100644
--- a/src/utils/HASerializerArray.cpp
+++ b/src/utils/HASerializerArray.cpp
@@ -28,6 +28,15 @@ bool HASerializerArray::add(ItemType item)
return true;
}
+const char* HASerializerArray::getItem(const uint8_t index) const
+{
+ if (index >= _itemsNb) {
+ return nullptr;
+ }
+
+ return _items[index];
+}
+
uint16_t HASerializerArray::calculateSize() const
{
uint16_t size =
diff --git a/src/utils/HASerializerArray.h b/src/utils/HASerializerArray.h
index a6177a3..b09cde9 100644
--- a/src/utils/HASerializerArray.h
+++ b/src/utils/HASerializerArray.h
@@ -37,12 +37,18 @@ public:
/**
* Adds a new element to the array.
- *
+ *
* @param itemP Item to add (string).
* @returns Returns `true` if item has been added to the array successfully.
*/
bool add(ItemType item);
+ /**
+ * Returns a pointer to the item at the given index.
+ * If the element doesn't exist, null is returned.
+ */
+ const char* getItem(const uint8_t index) const;
+
/**
* Calculates the size of the serialized array (JSON representation).
*/
diff --git a/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino b/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino
index edfee69..d334f40 100644
--- a/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino
+++ b/tests/BaseDeviceTypeTest/BaseDeviceTypeTest.ino
@@ -53,6 +53,13 @@ AHA_TEST(BaseDeviceTypeTest, name_setter) {
assertEqual(name, deviceType.getName());
}
+AHA_TEST(BaseDeviceTypeTest, object_id_setter) {
+ const char* objectId = "testId";
+ DummyDeviceType deviceType(AHATOFSTR(ComponentNameStr), testUniqueId);
+ deviceType.setObjectId(objectId);
+ assertEqual(objectId, deviceType.getObjectId());
+}
+
AHA_TEST(BaseDeviceTypeTest, default_availability) {
DummyDeviceType deviceType(AHATOFSTR(ComponentNameStr), testUniqueId);
assertFalse(deviceType.isAvailabilityConfigured());
diff --git a/tests/BinarySensorTest/BinarySensorTest.ino b/tests/BinarySensorTest/BinarySensorTest.ino
index d7833bc..f6a4823 100644
--- a/tests/BinarySensorTest/BinarySensorTest.ino
+++ b/tests/BinarySensorTest/BinarySensorTest.ino
@@ -36,6 +36,24 @@ AHA_TEST(BinarySensorTest, default_params) {
)
}
+AHA_TEST(BinarySensorTest, extended_unique_id) {
+ initMqttTest(testDeviceId)
+
+ device.enableExtendedUniqueIds();
+ HABinarySensor sensor(testUniqueId);
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(BinarySensorTest, availability) {
initMqttTest(testDeviceId)
@@ -82,6 +100,26 @@ AHA_TEST(BinarySensorTest, name_setter) {
)
}
+AHA_TEST(BinarySensorTest, object_id_setter) {
+ initMqttTest(testDeviceId)
+
+ HABinarySensor sensor(testUniqueId);
+ sensor.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(BinarySensorTest, device_class) {
initMqttTest(testDeviceId)
@@ -122,11 +160,50 @@ AHA_TEST(BinarySensorTest, icon_setter) {
)
}
+AHA_TEST(BinarySensorTest, expire_after_setter) {
+ initMqttTest(testDeviceId)
+
+ HABinarySensor sensor(testUniqueId);
+ sensor.setExpireAfter(60);
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"exp_aft\":60,"
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
+AHA_TEST(BinarySensorTest, expire_after_zero_setter) {
+ initMqttTest(testDeviceId)
+
+ HABinarySensor sensor(testUniqueId);
+ sensor.setExpireAfter(0);
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(BinarySensorTest, default_state_false) {
initMqttTest(testDeviceId)
HABinarySensor sensor(testUniqueId);
- assertEqual(false, sensor.getCurrentState());
+ assertFalse(sensor.getCurrentState());
}
AHA_TEST(BinarySensorTest, default_state_true) {
@@ -134,7 +211,7 @@ AHA_TEST(BinarySensorTest, default_state_true) {
HABinarySensor sensor(testUniqueId);
sensor.setCurrentState(true);
- assertEqual(true, sensor.getCurrentState());
+ assertTrue(sensor.getCurrentState());
}
AHA_TEST(BinarySensorTest, publish_state_on) {
diff --git a/tests/ButtonTest/ButtonTest.ino b/tests/ButtonTest/ButtonTest.ino
index dc720e0..4f49a07 100644
--- a/tests/ButtonTest/ButtonTest.ino
+++ b/tests/ButtonTest/ButtonTest.ino
@@ -65,6 +65,24 @@ AHA_TEST(ButtonTest, default_params) {
)
}
+AHA_TEST(ButtonTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HAButton button(testUniqueId);
+ assertEntityConfig(
+ mock,
+ button,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueButton\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"cmd_t\":\"testData/testDevice/uniqueButton/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(ButtonTest, command_subscription) {
prepareTest
@@ -111,6 +129,26 @@ AHA_TEST(ButtonTest, name_setter) {
)
}
+AHA_TEST(ButtonTest, object_id_setter) {
+ prepareTest
+
+ HAButton button(testUniqueId);
+ button.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ button,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueButton\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"cmd_t\":\"testData/testDevice/uniqueButton/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(ButtonTest, device_class) {
prepareTest
diff --git a/tests/CameraTest/CameraTest.ino b/tests/CameraTest/CameraTest.ino
index acba555..b81017b 100644
--- a/tests/CameraTest/CameraTest.ino
+++ b/tests/CameraTest/CameraTest.ino
@@ -36,6 +36,24 @@ AHA_TEST(CameraTest, default_params) {
)
}
+AHA_TEST(CameraTest, extended_unique_id) {
+ initMqttTest(testDeviceId)
+
+ device.enableExtendedUniqueIds();
+ HACamera camera(testUniqueId);
+ assertEntityConfig(
+ mock,
+ camera,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueCamera\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"t\":\"testData/testDevice/uniqueCamera/t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(CameraTest, availability) {
initMqttTest(testDeviceId)
@@ -52,6 +70,47 @@ AHA_TEST(CameraTest, availability) {
)
}
+AHA_TEST(CameraTest, name_setter) {
+ initMqttTest(testDeviceId)
+
+ HACamera camera(testUniqueId);
+ camera.setName("testName");
+
+ assertEntityConfig(
+ mock,
+ camera,
+ (
+ "{"
+ "\"name\":\"testName\","
+ "\"uniq_id\":\"uniqueCamera\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"t\":\"testData/testDevice/uniqueCamera/t\""
+ "}"
+ )
+ )
+}
+
+AHA_TEST(CameraTest, object_id_setter) {
+ initMqttTest(testDeviceId)
+
+ HACamera camera(testUniqueId);
+ camera.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ camera,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueCamera\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"t\":\"testData/testDevice/uniqueCamera/t\""
+ "}"
+ )
+ )
+}
+
+
AHA_TEST(CameraTest, icon_setter) {
initMqttTest(testDeviceId)
diff --git a/tests/CoverTest/CoverTest.ino b/tests/CoverTest/CoverTest.ino
index caed747..b7b0348 100644
--- a/tests/CoverTest/CoverTest.ino
+++ b/tests/CoverTest/CoverTest.ino
@@ -72,6 +72,26 @@ AHA_TEST(CoverTest, default_params) {
assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
}
+AHA_TEST(CoverTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HACover cover(testUniqueId);
+ assertEntityConfig(
+ mock,
+ cover,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueCover\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueCover/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueCover/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
+}
+
AHA_TEST(CoverTest, default_params_with_position) {
prepareTest
@@ -176,6 +196,27 @@ AHA_TEST(CoverTest, name_setter) {
)
}
+AHA_TEST(CoverTest, object_id_setter) {
+ prepareTest
+
+ HACover cover(testUniqueId);
+ cover.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ cover,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueCover\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueCover/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueCover/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(CoverTest, device_class) {
prepareTest
@@ -295,7 +336,7 @@ AHA_TEST(CoverTest, publish_state_closing) {
mock->connectDummy();
HACover cover(testUniqueId);
-
+
assertTrue(cover.setState(HACover::StateClosing));
assertSingleMqttMessage(AHATOFSTR(StateTopic), "closing", true)
}
diff --git a/tests/DeviceTest/DeviceTest.ino b/tests/DeviceTest/DeviceTest.ino
index 09f5429..adfa0fc 100644
--- a/tests/DeviceTest/DeviceTest.ino
+++ b/tests/DeviceTest/DeviceTest.ino
@@ -260,6 +260,21 @@ AHA_TEST(DeviceTest, availability_publish_online) {
assertSingleMqttMessage(AHATOFSTR(AvailabilityTopic), "online", true)
}
+AHA_TEST(DeviceTest, extended_unique_ids_disabled) {
+ prepareMqttTest
+
+ assertFalse(device.isExtendedUniqueIdsEnabled());
+}
+
+AHA_TEST(DeviceTest, enable_extended_unique_ids) {
+ prepareMqttTest
+
+ device.enableExtendedUniqueIds();
+
+ assertTrue(device.isExtendedUniqueIdsEnabled());
+ assertNoMqttMessage()
+}
+
AHA_TEST(DeviceTest, lwt_disabled) {
prepareMqttTest
@@ -276,16 +291,17 @@ AHA_TEST(DeviceTest, lwt_enabled) {
assertEqual(AHATOFSTR(AvailabilityTopic), mock->getLastWill().topic);
assertEqual("offline", mock->getLastWill().message);
- assertEqual(true, mock->getLastWill().retain);
+ assertTrue(mock->getLastWill().retain);
}
AHA_TEST(DeviceTest, full_serialization) {
initMqttTest("myDeviceId");
-
+
device.setManufacturer("myManufacturer");
device.setModel("myModel");
device.setName("myName");
device.setSoftwareVersion("myVersion");
+ device.setConfigurationUrl("http://1.1.1.1:1234");
const HASerializer* serializer = device.getSerializer();
flushSerializer(mock, serializer)
@@ -296,7 +312,8 @@ AHA_TEST(DeviceTest, full_serialization) {
"\"mf\":\"myManufacturer\","
"\"mdl\":\"myModel\","
"\"name\":\"myName\","
- "\"sw\":\"myVersion\""
+ "\"sw\":\"myVersion\","
+ "\"cu\":\"http://1.1.1.1:1234\""
"}"
)
)
diff --git a/tests/DeviceTrackerTest/DeviceTrackerTest.ino b/tests/DeviceTrackerTest/DeviceTrackerTest.ino
index 3c45eaa..457f42f 100644
--- a/tests/DeviceTrackerTest/DeviceTrackerTest.ino
+++ b/tests/DeviceTrackerTest/DeviceTrackerTest.ino
@@ -38,6 +38,24 @@ AHA_TEST(DeviceTrackerTest, default_params) {
)
}
+AHA_TEST(DeviceTrackerTest, extended_unique_id) {
+ initMqttTest(testDeviceId)
+
+ device.enableExtendedUniqueIds();
+ HADeviceTracker tracker(testUniqueId);
+ assertEntityConfig(
+ mock,
+ tracker,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueTracker\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueTracker/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(DeviceTrackerTest, source_type_gps) {
initMqttTest(testDeviceId)
@@ -160,6 +178,26 @@ AHA_TEST(DeviceTrackerTest, name_setter) {
)
}
+AHA_TEST(DeviceTrackerTest, object_id_setter) {
+ initMqttTest(testDeviceId)
+
+ HADeviceTracker tracker(testUniqueId);
+ tracker.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ tracker,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueTracker\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueTracker/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(DeviceTrackerTest, icon_setter) {
initMqttTest(testDeviceId)
diff --git a/tests/FanTest/FanTest.ino b/tests/FanTest/FanTest.ino
index b0e8270..d9c11b5 100644
--- a/tests/FanTest/FanTest.ino
+++ b/tests/FanTest/FanTest.ino
@@ -8,7 +8,7 @@
#define assertStateCallbackCalled(expectedState, callerPtr) \
assertTrue(lastStateCallbackCall.called); \
- assertEqual(expectedState, lastStateCallbackCall.state); \
+ assertEqual(static_cast(expectedState), lastStateCallbackCall.state); \
assertEqual(callerPtr, lastStateCallbackCall.caller);
#define assertStateCallbackNotCalled() \
@@ -102,6 +102,26 @@ AHA_TEST(FanTest, default_params) {
assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
}
+AHA_TEST(FanTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HAFan fan(testUniqueId);
+ assertEntityConfig(
+ mock,
+ fan,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueFan\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueFan/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueFan/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
+}
+
AHA_TEST(FanTest, default_params_with_speed) {
prepareTest
@@ -220,6 +240,27 @@ AHA_TEST(FanTest, name_setter) {
)
}
+AHA_TEST(FanTest, object_id_setter) {
+ prepareTest
+
+ HAFan fan(testUniqueId);
+ fan.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ fan,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueFan\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueFan/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueFan/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(FanTest, icon_setter) {
prepareTest
@@ -336,7 +377,7 @@ AHA_TEST(FanTest, current_state_setter) {
fan.setCurrentState(true);
assertEqual(0, mock->getFlushedMessagesNb());
- assertEqual(true, fan.getCurrentState());
+ assertTrue(fan.getCurrentState());
}
AHA_TEST(FanTest, current_speed_setter) {
diff --git a/tests/HVACTest/HVACTest.ino b/tests/HVACTest/HVACTest.ino
index 382bb93..b6cb2e7 100644
--- a/tests/HVACTest/HVACTest.ino
+++ b/tests/HVACTest/HVACTest.ino
@@ -12,7 +12,7 @@
#define assertAuxStateCallbackCalled(expectedState, callerPtr) \
assertTrue(lastAuxStateCallbackCall.called); \
- assertEqual(expectedState, lastAuxStateCallbackCall.state); \
+ assertEqual(static_cast(expectedState), lastAuxStateCallbackCall.state); \
assertEqual(callerPtr, lastAuxStateCallbackCall.caller);
#define assertAuxStateCallbackNotCalled() \
@@ -20,7 +20,7 @@
#define assertPowerCallbackCalled(expectedState, callerPtr) \
assertTrue(lastPowerCallbackCall.called); \
- assertEqual(expectedState, lastPowerCallbackCall.state); \
+ assertEqual(static_cast(expectedState), lastPowerCallbackCall.state); \
assertEqual(callerPtr, lastPowerCallbackCall.caller);
#define assertPowerCallbackNotCalled() \
@@ -226,6 +226,25 @@ AHA_TEST(HVACTest, default_params) {
assertEqual(1, mock->getFlushedMessagesNb()); // config
}
+AHA_TEST(HVACTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HAHVAC hvac(testUniqueId);
+ assertEntityConfig(
+ mock,
+ hvac,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueHVAC\","
+ "\"curr_temp_t\":\"testData/testDevice/uniqueHVAC/curr_temp_t\","
+ "\"dev\":{\"ids\":\"testDevice\"}"
+ "}"
+ )
+ )
+ assertEqual(1, mock->getFlushedMessagesNb()); // config
+}
+
AHA_TEST(HVACTest, config_with_action) {
prepareTest
@@ -529,6 +548,26 @@ AHA_TEST(HVACTest, name_setter) {
)
}
+AHA_TEST(HVACTest, object_id_setter) {
+ prepareTest
+
+ HAHVAC hvac(testUniqueId);
+ hvac.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ hvac,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueHVAC\","
+ "\"curr_temp_t\":\"testData/testDevice/uniqueHVAC/curr_temp_t\","
+ "\"dev\":{\"ids\":\"testDevice\"}"
+ "}"
+ )
+ )
+}
+
AHA_TEST(HVACTest, icon_setter) {
prepareTest
diff --git a/tests/LightTest/LightTest.ino b/tests/LightTest/LightTest.ino
index a93b62e..cd2ce1a 100644
--- a/tests/LightTest/LightTest.ino
+++ b/tests/LightTest/LightTest.ino
@@ -10,7 +10,7 @@
#define assertStateCallbackCalled(expectedState, callerPtr) \
assertTrue(lastStateCallbackCall.called); \
- assertEqual(expectedState, lastStateCallbackCall.state); \
+ assertEqual(static_cast(expectedState), lastStateCallbackCall.state); \
assertEqual(callerPtr, lastStateCallbackCall.caller);
#define assertStateCallbackNotCalled() \
@@ -165,6 +165,26 @@ AHA_TEST(LightTest, default_params) {
assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
}
+AHA_TEST(LightTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HALight light(testUniqueId);
+ assertEntityConfig(
+ mock,
+ light,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueLight\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueLight/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueLight/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
+}
+
AHA_TEST(LightTest, default_params_with_brightness) {
prepareTest
@@ -403,6 +423,27 @@ AHA_TEST(LightTest, name_setter) {
)
}
+AHA_TEST(LightTest, object_id_setter) {
+ prepareTest
+
+ HALight light(testUniqueId);
+ light.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ light,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueLight\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueLight/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueLight/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(LightTest, icon_setter) {
prepareTest
@@ -562,7 +603,7 @@ AHA_TEST(LightTest, current_state_setter) {
light.setCurrentState(true);
assertEqual(0, mock->getFlushedMessagesNb());
- assertEqual(true, light.getCurrentState());
+ assertTrue(light.getCurrentState());
}
AHA_TEST(LightTest, current_brightness_setter) {
diff --git a/tests/LockTest/LockTest.ino b/tests/LockTest/LockTest.ino
index 98176ad..90fa180 100644
--- a/tests/LockTest/LockTest.ino
+++ b/tests/LockTest/LockTest.ino
@@ -71,6 +71,26 @@ AHA_TEST(LockTest, default_params) {
assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
}
+AHA_TEST(LockTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HALock lock(testUniqueId);
+ assertEntityConfig(
+ mock,
+ lock,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueLock\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueLock/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueLock/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
+}
+
AHA_TEST(LockTest, command_subscription) {
prepareTest
@@ -140,6 +160,27 @@ AHA_TEST(LockTest, name_setter) {
)
}
+AHA_TEST(LockTest, object_id_setter) {
+ prepareTest
+
+ HALock lock(testUniqueId);
+ lock.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ lock,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueLock\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueLock/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueLock/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(LockTest, icon_setter) {
prepareTest
@@ -220,7 +261,7 @@ AHA_TEST(LockTest, publish_state_locked) {
HALock lock(testUniqueId);
assertTrue(lock.setState(HALock::StateLocked));
- assertSingleMqttMessage(AHATOFSTR(StateTopic), "LOCKED", true)
+ assertSingleMqttMessage(AHATOFSTR(StateTopic), "LOCKED", true)
}
AHA_TEST(LockTest, publish_state_unlocked) {
diff --git a/tests/MqttTest/Makefile b/tests/MqttTest/Makefile
new file mode 100644
index 0000000..329cda8
--- /dev/null
+++ b/tests/MqttTest/Makefile
@@ -0,0 +1,5 @@
+APP_NAME := MqttTest
+ARDUINO_LIBS := AUnit arduino-home-assistant
+EXTRA_CPPFLAGS := "-D ARDUINOHA_TEST"
+EXTRA_CXXFLAGS := -g
+include ../../../EpoxyDuino/EpoxyDuino.mk
\ No newline at end of file
diff --git a/tests/MqttTest/MqttTest.ino b/tests/MqttTest/MqttTest.ino
new file mode 100644
index 0000000..b38dad8
--- /dev/null
+++ b/tests/MqttTest/MqttTest.ino
@@ -0,0 +1,43 @@
+#include
+#include
+
+using aunit::TestRunner;
+
+static const char* testDeviceId = "testDevice";
+static const char* testUniqueId = "uniqueId";
+
+const char ComponentNameStr[] PROGMEM = {"componentName"};
+
+class DummyDeviceType : public HABaseDeviceType
+{
+public:
+ DummyDeviceType(const __FlashStringHelper* componentName, const char* uniqueId) :
+ HABaseDeviceType(componentName, uniqueId) { }
+
+protected:
+ virtual void onMqttConnected() override {
+ publishAvailability();
+ }
+};
+
+AHA_TEST(MqttTest, maximum_number_of_device_types) {
+ HADevice device(testDeviceId);
+ HAMqtt mqtt(nullptr, device, 1);
+ DummyDeviceType deviceType(AHATOFSTR(ComponentNameStr), testUniqueId);
+
+ assertEqual((uint8_t)1, mqtt.getDevicesTypesNb());
+ assertEqual(&deviceType, mqtt.getDevicesTypes()[0]);
+}
+
+void setup()
+{
+ delay(1000);
+ Serial.begin(115200);
+ while (!Serial);
+}
+
+void loop()
+{
+ TestRunner::run();
+ delay(1);
+}
diff --git a/tests/NumberTest/NumberTest.ino b/tests/NumberTest/NumberTest.ino
index 24fec39..b516faf 100644
--- a/tests/NumberTest/NumberTest.ino
+++ b/tests/NumberTest/NumberTest.ino
@@ -71,6 +71,26 @@ AHA_TEST(NumberTest, default_params) {
assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
}
+AHA_TEST(NumberTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HANumber number(testUniqueId);
+ assertEntityConfig(
+ mock,
+ number,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueNumber\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueNumber/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueNumber/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(2, mock->getFlushedMessagesNb()); // config + default state
+}
+
AHA_TEST(NumberTest, command_subscription) {
prepareTest
@@ -315,6 +335,27 @@ AHA_TEST(NumberTest, name_setter) {
)
}
+AHA_TEST(NumberTest, object_id_setter) {
+ prepareTest
+
+ HANumber number(testUniqueId);
+ number.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ number,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueNumber\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueNumber/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueNumber/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(NumberTest, device_class) {
prepareTest
diff --git a/tests/SceneTest/SceneTest.ino b/tests/SceneTest/SceneTest.ino
index 8b084bd..be07cdc 100644
--- a/tests/SceneTest/SceneTest.ino
+++ b/tests/SceneTest/SceneTest.ino
@@ -65,6 +65,24 @@ AHA_TEST(SceneTest, default_params) {
)
}
+AHA_TEST(SceneTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HAScene scene(testUniqueId);
+ assertEntityConfig(
+ mock,
+ scene,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueScene\","
+ "\"pl_on\":\"ON\","
+ "\"cmd_t\":\"testData/testDevice/uniqueScene/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SceneTest, command_subscription) {
prepareTest
@@ -111,6 +129,26 @@ AHA_TEST(SceneTest, name_setter) {
)
}
+AHA_TEST(SceneTest, object_id_setter) {
+ prepareTest
+
+ HAScene scene(testUniqueId);
+ scene.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ scene,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueScene\","
+ "\"pl_on\":\"ON\","
+ "\"cmd_t\":\"testData/testDevice/uniqueScene/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SceneTest, icon_setter) {
prepareTest
diff --git a/tests/SelectTest/SelectTest.ino b/tests/SelectTest/SelectTest.ino
index ff09cdc..d58addf 100644
--- a/tests/SelectTest/SelectTest.ino
+++ b/tests/SelectTest/SelectTest.ino
@@ -87,6 +87,30 @@ AHA_TEST(SelectTest, invalid_options_empty) {
assertTrue(select.getOptions() == nullptr);
}
+AHA_TEST(SelectTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HASelect select(testUniqueId);
+ select.setOptions("Option A");
+
+ assertEqual(1, select.getOptions()->getItemsNb());
+ assertEntityConfig(
+ mock,
+ select,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueSelect\","
+ "\"options\":[\"Option A\"],"
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSelect/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueSelect/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(2, mock->getFlushedMessagesNb());
+}
+
AHA_TEST(SelectTest, single_option) {
prepareTest
@@ -107,7 +131,7 @@ AHA_TEST(SelectTest, single_option) {
"}"
)
)
- assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
+ assertEqual(2, mock->getFlushedMessagesNb());
}
AHA_TEST(SelectTest, multiple_options) {
@@ -130,7 +154,7 @@ AHA_TEST(SelectTest, multiple_options) {
"}"
)
)
- assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
+ assertEqual(2, mock->getFlushedMessagesNb());
}
AHA_TEST(SelectTest, command_subscription) {
@@ -170,6 +194,7 @@ AHA_TEST(SelectTest, publish_last_known_state) {
mqtt.loop();
assertEqual(2, mock->getFlushedMessagesNb());
+ assertEqual("B", select.getCurrentOption());
assertMqttMessage(1, AHATOFSTR(StateTopic), "B", true)
}
@@ -185,6 +210,17 @@ AHA_TEST(SelectTest, publish_nothing_if_retained) {
assertEqual(1, mock->getFlushedMessagesNb()); // only config should be pushed
}
+AHA_TEST(SelectTest, publish_state_none) {
+ prepareTest
+
+ HASelect select(testUniqueId);
+ select.setOptions("Option A;B;C");
+ mqtt.loop();
+
+ assertEqual(2, mock->getFlushedMessagesNb());
+ assertMqttMessage(1, AHATOFSTR(StateTopic), "None", true)
+}
+
AHA_TEST(SelectTest, name_setter) {
prepareTest
@@ -208,6 +244,29 @@ AHA_TEST(SelectTest, name_setter) {
)
}
+AHA_TEST(SelectTest, object_id_setter) {
+ prepareTest
+
+ HASelect select(testUniqueId);
+ select.setOptions("Option A;B;C");
+ select.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ select,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueSelect\","
+ "\"options\":[\"Option A\",\"B\",\"C\"],"
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSelect/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueSelect/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SelectTest, icon_setter) {
prepareTest
@@ -286,6 +345,7 @@ AHA_TEST(SelectTest, current_state_getter) {
assertEqual(0, mock->getFlushedMessagesNb());
assertEqual(1, select.getCurrentState());
+ assertEqual("B", select.getCurrentOption());
}
AHA_TEST(SelectTest, publish_state_first) {
@@ -297,6 +357,7 @@ AHA_TEST(SelectTest, publish_state_first) {
assertTrue(select.setState(0));
assertTrue(select.getOptions() != nullptr);
+ assertEqual("Option A", select.getCurrentOption());
assertEqual(3, select.getOptions()->getItemsNb());
assertSingleMqttMessage(AHATOFSTR(StateTopic), "Option A", true)
}
@@ -310,6 +371,7 @@ AHA_TEST(SelectTest, publish_state_last) {
assertTrue(select.setState(2));
assertTrue(select.getOptions() != nullptr);
+ assertEqual("C", select.getCurrentOption());
assertEqual(3, select.getOptions()->getItemsNb());
assertSingleMqttMessage(AHATOFSTR(StateTopic), "C", true)
}
diff --git a/tests/SensorTest/SensorTest.ino b/tests/SensorTest/SensorTest.ino
index fe606e1..b4592ab 100644
--- a/tests/SensorTest/SensorTest.ino
+++ b/tests/SensorTest/SensorTest.ino
@@ -7,7 +7,7 @@ static const char* testDeviceId = "testDevice";
static const char* testUniqueId = "uniqueSensor";
const char ConfigTopic[] PROGMEM = {"homeassistant/sensor/testDevice/uniqueSensor/config"};
const char StateTopic[] PROGMEM = {"testData/testDevice/uniqueSensor/stat_t"};
-const char DummyTemplateStr[] PROGMEM = {"dummyTemplate"};
+const char JsonAttributesTopic[] PROGMEM = {"testData/testDevice/uniqueSensor/json_attr_t"};
AHA_TEST(SensorTest, invalid_unique_id) {
initMqttTest(testDeviceId)
@@ -36,6 +36,24 @@ AHA_TEST(SensorTest, default_params) {
)
}
+AHA_TEST(SensorTest, extended_unique_id) {
+ initMqttTest(testDeviceId)
+
+ device.enableExtendedUniqueIds();
+ HASensor sensor(testUniqueId);
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SensorTest, availability) {
initMqttTest(testDeviceId)
@@ -72,6 +90,26 @@ AHA_TEST(SensorTest, name_setter) {
)
}
+AHA_TEST(SensorTest, object_id_setter) {
+ initMqttTest(testDeviceId)
+
+ HASensor sensor(testUniqueId);
+ sensor.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SensorTest, device_class_setter) {
initMqttTest(testDeviceId)
@@ -92,6 +130,26 @@ AHA_TEST(SensorTest, device_class_setter) {
)
}
+AHA_TEST(SensorTest, state_class_setter) {
+ initMqttTest(testDeviceId)
+
+ HASensor sensor(testUniqueId);
+ sensor.setStateClass("measurement");
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"stat_cla\":\"measurement\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SensorTest, force_update_setter) {
initMqttTest(testDeviceId)
@@ -152,6 +210,64 @@ AHA_TEST(SensorTest, unit_of_measurement_setter) {
)
}
+AHA_TEST(SensorTest, expire_after_setter) {
+ initMqttTest(testDeviceId)
+
+ HASensor sensor(testUniqueId);
+ sensor.setExpireAfter(60);
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"exp_aft\":60,"
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
+AHA_TEST(SensorTest, expire_after_zero_setter) {
+ initMqttTest(testDeviceId)
+
+ HASensor sensor(testUniqueId);
+ sensor.setExpireAfter(0);
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
+AHA_TEST(SensorTest, json_attributes_topic) {
+ initMqttTest(testDeviceId)
+
+ HASensor sensor(testUniqueId, HASensor::JsonAttributesFeature);
+
+ assertEntityConfig(
+ mock,
+ sensor,
+ (
+ "{"
+ "\"uniq_id\":\"uniqueSensor\","
+ "\"json_attr_t\":\"testData/testDevice/uniqueSensor/json_attr_t\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSensor/stat_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SensorTest, publish_value) {
initMqttTest(testDeviceId)
@@ -162,6 +278,26 @@ AHA_TEST(SensorTest, publish_value) {
assertSingleMqttMessage(AHATOFSTR(StateTopic), "test123", true)
}
+AHA_TEST(SensorTest, publish_null_value) {
+ initMqttTest(testDeviceId)
+
+ mock->connectDummy();
+ HASensor sensor(testUniqueId);
+
+ assertTrue(sensor.setValue(nullptr));
+ assertSingleMqttMessage(AHATOFSTR(StateTopic), "None", true)
+}
+
+AHA_TEST(SensorTest, publish_json_attributes) {
+ initMqttTest(testDeviceId)
+
+ mock->connectDummy();
+ HASensor sensor(testUniqueId, HASensor::JsonAttributesFeature);
+
+ assertTrue(sensor.setJsonAttributes("{\"dummy\": 1}"));
+ assertSingleMqttMessage(AHATOFSTR(JsonAttributesTopic), "{\"dummy\": 1}", true)
+}
+
test(SensorNumberTest, publish_value_on_connect) {
initMqttTest(testDeviceId)
diff --git a/tests/SerializerArrayTest/SerializerArrayTest.ino b/tests/SerializerArrayTest/SerializerArrayTest.ino
index 80ebac2..13447dd 100644
--- a/tests/SerializerArrayTest/SerializerArrayTest.ino
+++ b/tests/SerializerArrayTest/SerializerArrayTest.ino
@@ -50,6 +50,7 @@ AHA_TEST(SerializerArrayTest, size_overflow_progmem) {
assertTrue(array.add(HANameProperty));
assertFalse(array.add(HAUniqueIdProperty));
assertEqual(1, array.getItemsNb());
+
assertEqual((uintptr_t)HANameProperty, (uintptr_t)&(*array.getItems()[0]));
assertJson("[\"name\"]", array);
}
@@ -61,6 +62,8 @@ AHA_TEST(SerializerArrayTest, single_element_ram) {
assertTrue(result);
assertEqual(1, array.getItemsNb());
+
+ assertEqual((uintptr_t)item, (uintptr_t)&(*array.getItem(0)));
assertEqual((uintptr_t)item, (uintptr_t)&(*array.getItems()[0]));
assertJson("[\"test\"]", array);
}
@@ -77,8 +80,17 @@ AHA_TEST(SerializerArrayTest, multiple_elements_ram) {
assertEqual(3, array.getItemsNb());
HASerializerArray::ItemType* items = array.getItems();
+
+ assertEqual((uintptr_t)nullptr, (uintptr_t)&(*array.getItem(-1)));
+ assertEqual((uintptr_t)nullptr, (uintptr_t)&(*array.getItem(3)));
+
+ assertEqual((uintptr_t)item0, (uintptr_t)&(*array.getItem(0)));
assertEqual((uintptr_t)item0, (uintptr_t)&(*items[0]));
+
+ assertEqual((uintptr_t)item1, (uintptr_t)&(*array.getItem(1)));
assertEqual((uintptr_t)item1, (uintptr_t)&(*items[1]));
+
+ assertEqual((uintptr_t)item2, (uintptr_t)&(*array.getItem(2)));
assertEqual((uintptr_t)item2, (uintptr_t)&(*items[2]));
assertJson("[\"item0\",\"item1\",\"item2\"]", array);
}
diff --git a/tests/SwitchTest/SwitchTest.ino b/tests/SwitchTest/SwitchTest.ino
index 96a8c76..7d6b4d6 100644
--- a/tests/SwitchTest/SwitchTest.ino
+++ b/tests/SwitchTest/SwitchTest.ino
@@ -7,7 +7,7 @@
#define assertCommandCallbackCalled(expectedCommand, callerPtr) \
assertTrue(lastCommandCallbackCall.called); \
- assertEqual(expectedCommand, lastCommandCallbackCall.state); \
+ assertEqual(static_cast(expectedCommand), lastCommandCallbackCall.state); \
assertEqual(callerPtr, lastCommandCallbackCall.caller);
#define assertCommandCallbackNotCalled() \
@@ -71,6 +71,26 @@ AHA_TEST(SwitchTest, default_params) {
assertEqual(2, mock->getFlushedMessagesNb());
}
+AHA_TEST(SwitchTest, extended_unique_id) {
+ prepareTest
+
+ device.enableExtendedUniqueIds();
+ HASwitch testSwitch(testUniqueId);
+ assertEntityConfig(
+ mock,
+ testSwitch,
+ (
+ "{"
+ "\"uniq_id\":\"testDevice_uniqueSwitch\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSwitch/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueSwitch/cmd_t\""
+ "}"
+ )
+ )
+ assertEqual(2, mock->getFlushedMessagesNb());
+}
+
AHA_TEST(SwitchTest, command_subscription) {
prepareTest
@@ -140,6 +160,27 @@ AHA_TEST(SwitchTest, name_setter) {
)
}
+AHA_TEST(SwitchTest, object_id_setter) {
+ prepareTest
+
+ HASwitch testSwitch(testUniqueId);
+ testSwitch.setObjectId("testId");
+
+ assertEntityConfig(
+ mock,
+ testSwitch,
+ (
+ "{"
+ "\"obj_id\":\"testId\","
+ "\"uniq_id\":\"uniqueSwitch\","
+ "\"dev\":{\"ids\":\"testDevice\"},"
+ "\"stat_t\":\"testData/testDevice/uniqueSwitch/stat_t\","
+ "\"cmd_t\":\"testData/testDevice/uniqueSwitch/cmd_t\""
+ "}"
+ )
+ )
+}
+
AHA_TEST(SwitchTest, device_class) {
prepareTest
@@ -231,7 +272,7 @@ AHA_TEST(SwitchTest, current_state_setter) {
testSwitch.setCurrentState(true);
assertEqual(0, mock->getFlushedMessagesNb());
- assertEqual(true, testSwitch.getCurrentState());
+ assertTrue(testSwitch.getCurrentState());
}
AHA_TEST(SwitchTest, publish_state_on) {
@@ -241,7 +282,7 @@ AHA_TEST(SwitchTest, publish_state_on) {
HASwitch testSwitch(testUniqueId);
assertTrue(testSwitch.setState(true));
- assertSingleMqttMessage(AHATOFSTR(StateTopic), "ON", true)
+ assertSingleMqttMessage(AHATOFSTR(StateTopic), "ON", true)
}
AHA_TEST(SwitchTest, publish_state_off) {
diff --git a/tests/auniter.ini b/tests/auniter.ini
index 0b8b2a6..e583ea2 100644
--- a/tests/auniter.ini
+++ b/tests/auniter.ini
@@ -6,7 +6,7 @@
mega = arduino:avr:mega:cpu=atmega2560
nodemcuv2 = esp8266:esp8266:nodemcuv2:xtal=80,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600
esp32 = esp32:esp32:esp32da:PartitionScheme=default,EraseFlash=none,FlashMode=qio,FlashFreq=80,FlashSize=4M,LoopCore=1,EventsCore=1,UploadSpeed=921600,DebugLevel=none
- nano_33_iot = arduino:samd:nano_33_iot
+ due = arduino:sam:arduino_due_x_dbg
[env:uno]
board = uno
@@ -24,6 +24,6 @@
board = esp32
preprocessor = -D AUNITER_ESP32 -D ARDUINOHA_TEST
-[env:samd]
- board = nano_33_iot
- preprocessor = -D AUNITER_SAMD -D ARDUINOHA_TEST
+[env:due]
+ board = due
+ preprocessor = -D AUNITER_DUE -D ARDUINOHA_TEST