Compare commits

..
2 Commits
Author SHA1 Message Date
Dawid ChyrzyńskiandDawid Chyrzynski 0fc32a5bad ArduinoHA 2.0.0 🔥 (#81)
* added tests for HADeviceTracker

* added support for progmem property value in the HASerializer

* codebase update

* add support for source type in HADeviceTracker

* added support for HACamera

* added support for HALock

* rename HABinarySensor::getState to getCurrentState

* standardize sender name in all callback headers

* remove duplicate serializer field protection (reduce flash usage)

* optimize HAUtils

* minor improvements

* optimize writing progmem payload

* optimize HAUtils:numberToStr

* remove relloc from HASerializer

* optimize HASerializerArray

* remove includeNullTerminator arg from the topics size generators

* optimize HASerializer

* replace dtostrf with custom implementation

* optimize BaseDeviceType

* removed relloc from the HAMqtt

* removed support for floats

* removed vtable for HADevice, HAMqtt, HASerializer and HASerializerArray

* implemented HASwitch with tests

* implemented basic HADeviceTrigger

* added support for built-in triggers

* finished HADeviceTrigger

* update changelog

* implemented base HASensor

* implemented HASensorInteger

* finished HASensorFloat

* override onMqttConnected in HASensorInteger and HASensorFloat

* add more tests for HASensorInteger and HASensorFloat

* optimize HASensorFloat

* update changelog

* standardize constructor of the HABinarySensor

* update readme

* readme

* readme

* standardize HADeviceTracker API

* standardize HASwitch API

* update docs README

* move Sphinx files to docsrc directory

* type in HASwitch

* test docs

* add .nojekyll to the docs directory

* update makefile of the docs

* wip: docs

* docs: fix html title

* docs: update styling and sidebar

* docs: add "Basics" section

* docs: device configuration

* docs: availability

* docs: MQTT discovery

* docs: MQTT security

* docs: MQTT advanced features

* rename BaseDeviceType to HABaseDeviceType

* update gitignore

* add API reference

* update gitignore

* HADevice doxygen

* doxygen css

* HADevice doxygen typos

* docs: update links

* docs: HAUtils doxygen

* HAMqtt and HADevice doxygen

* docs: device types

* docs: HABaseDeviceType

* reduced flash usage by 190 bytes

* fix tests

* move HAUtils class to the utils directory

* make HADevice const in HAMqtt

* HABinarySensor docs

* doxygen

* HADeviceTrigger doxygen

* HALock doxygen

* HASensor doxygen

* HASensor doxygen

* HASwitch doxygen

* HATagScanner doxygen

* HASerializer doxygen

* fix SAMD compile error

* add HAMqtt::publish method

* update examples

* add HAButton example

* update changelog

* added support for the optimistic property in the HACover

* do not set optimistic property in the HASwitch if it's set to default value

* update examples list

* update HASensor example

* update MQTT docs

* fix device trigger example link

* fix search form style on the search result page

* added support for the optimistic property in the HALock

* update readme

* change readme icon

* added HALock example

* MDNS example

* added HASensorFloat and HASensorInteger examples

* update readme

* update examples

* fix crash in the HABaseDeviceType

* add support for storing RAM elements in the HASerializerArray

* update tests cases in the CoverTest

* finished tests for HASelect

* added support for HASelect

* update README, CHANGELOG and examples list

* DeviceTest typos

* add more tests to SelectTest

* optimize HASelect command's handler

* improve CoverTest

* optimize HACover command's handler

* optimize HALock command's handler

* update SerializerTest

* remove HAMqtt::writePayload_P method

* remove FlagInternalType from the HASerializer

* added support for __FlashStringHelper in the topics related functions

* migrated serializer to use __FlashStringHelper

* add __FlashStringHelper to the HABaseDeviceType::publishOnDataTopic method

* move component name to flash memory

* update docs

* fix debug logs

* fix memory leaks

* monitor memory leaks in all test cases

* optimize tests (RAM)

* fix HALock states

* fix bug in the HASensor (invalid serialization of the value template property)

* fix memory leak in the HASelect

* fix crash in HASelect

* fix memory leak in the HADeviceTrigger

* fix memory leak in the HADevice

* tests: add support for ESP8266 and ESP32 envs

* update docs

* add multi-switch example

* update docs structure

* update MQTT advanced example in the docs

* HADevice: fix _uniqueId memory release

* wip: HANumber

* add HANumber to defines

* refactor HASensor implementation for numbers (again)

* update docs

* wip: HANumber

* wip: add support for number's precision in the HASerializer

* add support for float numbers in the HASerializer

* optimize vtables in the HASensor

* wip: HANumber

* fix crash in the float serialization

* handle another edge case in the float serialization

* replace int32_t with HAUtils::Number type

* HANumber fixes

* tests for HANumber

* change HAUtils::Number type to int64_t

* implemented HAUtils::strToNumber

* finished HANumber command handler

* finished HANumber

* update docs

* add number example

* added support for HAScene

* add scene example, update docs

* update doxygen

* remove memset from the codebase

* micro optimizations

* fix commands handlers

* update HACover code

* codebase cleanup

* finished HAFan implementation

* update docs, added fan example

* make json readable in all tests

* make position configurable in the HACover

* docs

* added support for HALight

* implement default values as static HAFan members

* update docs, added light example

* added support for color temperature in the HALight

* update light example

* update docs

* wip: HVAC

* improve all tests with callbacks

* update logs

* add HVAC to the docs

* optimize HANumber

* add current temperature to the HVAC

* started work on HVAC tests

* added action feature to the HVAC

* add temperature unit to the HVAC

* add more tests to UtilsTest

* fix fake MQTT messages mock - message shouldn't include null terminator

* fix HAUtils::strToNumber

* optimize HAFan, HACover and HALight

* add min/max temp to the HVAC

* added temp step property to the HVAC

* rename HASensorNumber::getCurrentValueAsFloat to getCurrentValueFloat

* update docs

* added support for aux heating in the HVAC

* added power command to the HVAC

* add subscriptions to the HVAC

* added fan mode to the HVAC

* update examples

* update command handlers in all device types

* added swing mode to the HVAC

* finished HVAC

* update docs

* fix memory leak in the HVAC

* added support for the target temperature in the HVAC

* add HVAC example

* update docs

* remove unnecessary checks from some device types

* added support for RGB in the HALight

* update docs

* standardize HAHVAC code

* rename HAButton::onPress method to onCommand

* rename HAScene::onActivate method to onCommand

* fix seg fault in the HAUtils

* HASensorNumber: do not publish default value on connect

* add return uint16_t to the HAUtils::numberToStr method

* simplify logic in the HALight::publishRGBColor

* optimize numbers serialization in the HASerializer

* update README, added LICENSE.md

* rename license file

* added tag-scanner example

* update publishOnDataTopic methods

* added esp32-cam example

* update docs

* add examples to the README.md

* update examples

* update HAMqtt.h for latest SAMD core, update aunier

* update README, fix auniter settings for esp32

* update README

* added documentation link to the README

* final tweaks in the HACover

* fix logic of the speed feature in the HAFan

* fix mdns example

* fix bug in the DeviceTrigger (invalid serialization of the progmem type/subtype)

* implemented HANumeric

* update HASensorNumber

* update HANumber

* update HALight

* update HAHVAC

* update HAFan

* update HACover

* update examples

* update tests

* update docs

* fix HANumeric constructor bug

* update HANumeric for SAMD

* update readme and docs

* add payload_on to the scene config (HA throws an exception if this property is missing)

* update sensor-analog example

* update sensor-integer example

* HVAC fixes

* update docs

Co-authored-by: Dawid Chyrzynski <dawid.chyrzynski@gmail.com>
2022-10-14 19:10:38 +02:00
Dawid Chyrzyński a4e50b7d04 Release 1.3.0 (#36)
* Add support for HVAC (#15)

* remove HASwitch::triggerCallback method

* fix typo in docs

* HASwitch: simplify callback #define

* work in progress: HVAC

* replace local mqtt instances with singleton

* device types optimization

* cleanup

* finished aux heating and away mode

* wip: HVAC

* finished HVAC implementation

* HVAC implementation

* add ifdefs for all HA components

* wip: optimization

* update readme

* update examples

* remove unused constructor from HAMqtt

* update HAUtils

* remove mqtt from constructors, fix compilation warnings

* finished HVAC

* add HVAC example, add changelog

* update changelog, add documentation

* Add support for icons in HASwitch and HASensor (#16)

* add support for icon in HASwitch

* add support for icon in HASensor

* update changelog

* add support for setting retain flag in HASwitch

* Add support for text payload in HASensor (#17)

* refactored HASensor

* update changelog

* fix sensor example

* Add support for fans (HAFan) (#18)

* finished basic implementation of the HAFan

* add retain method to DeviceTypeSerializer

* finished HAFan implementation

* update HAHVAC

* device types cleanup

* add HAFan example

* update changelog

* update readme

* update fan example

* optimization, add support for ActionFeature in HVAC

* Add support for MQTT LWT (#19)

* add support for hostname in HAMqtt

* add support for LWT and shared availability

* minor fixes

* added advanced availability example

* update examples

* update changelog

* cleanup & bug fix

* bump up version

* minor improvements and fixes

* update readme

* add HAMqtt::onMessage method

* Add support for covers (#28)

* add HACovers

* add cover example, update implementation

* disable debug

* update mqtt-events example

* Add support for setting different prefix for non-discovery topics (#29)

* add support for data prefix

* cleanup

* update comments and logs

* update multi-state-button example

* rename rexample from mqtt-events to mqtt-advanced

* update changelog

* update links in changelog

* Home Assistant 2021.4.5 - MQTT upgrade (#33)

* updae HAFan implementation

* change lib version

* update changelog

* fix setSpeed method

* update HAFan example

* Separate uniqueId from name (#34)

* rename name to uniqueId

* remove legacy labels

* update examples

* rename isMyTopic to compareTopics

* update changelog, rename name to uniqueId

* Implement onBeforeStateChanged callback in HASwitch (#35)

* add low latency mode to HASwitch

* add onBeforeStateChanged callback to HASwitch

* update readme

* rename DEPRECATED macro

* update advanced MQTT example
2021-04-17 20:03:32 +02:00
276 changed files with 61138 additions and 4266 deletions
+3
View File
@@ -0,0 +1,3 @@
docsrc/xml
docsrc/build
.DS_Store
+66 -4
View File
@@ -1,13 +1,75 @@
# Changelog
## 2.0.0
**New features:**
* Added support for the `icon` property in the `HABinarySensor` (you can set the icon using `HABinarySensor::setIcon("iconName")`)
* Added support for changing the current state of the `HABinarySensor` using `HABinarySensor::setCurrentState` method
* Added support for forcing `setState` in `HABinarySensor` using a second argument as follows `HABinarySensor::setState(true, true)`
* Added support for the `device_class` property in the `HACover` (you can set the class using `HACover::setDeviceClass("className")`
* Added support for the `icon` property in the `HACover` (you can set the icon using `HACover::setIcon("iconName")`)
* Added pointer of the sender to the `HACover` callback function
* Added support for `optimistic` property in the `HACover` (you can change the mode using `HACover::setOptimistic(true)`)
* Added support for forcing `setPosition` in `HACover` using a second argument as follows `HACover::setPosition(100, true)`
* Added support for the `device_class` property in the `HASwitch` (you can set the class using `HASwitch::setDeviceClass("className")`
* Added support for the `optimistic` property in the `HASwitch` (you can change the mode using `HASwitch::setOptimistic(true)`)
* Added support for the `force_update` property in the `HASensor` (you can set the mode using `HASensor::setForceUpdate(true)`)
* Added support for the `HAButton` device type
* Added support for the `HADeviceTracker` device type
* Added support for the `HACamera` device type
* Added support for the `HALock` device type
* Added support for the `HASelect` device type
* Added support for the `HANumber` device type
* Added support for the `HAScene` device type
* Added support for the `HALight` device type
**Bugs fixes:**
* Last Will Message is now retained (#70)
* Compilation error on SAMD family (#82)
**New examples:**
* [Button](examples/button/button.ino) - adding simple buttons to the Home Assistant panel.
**Breaking changes:**
* Changed structure of all MQTT topics used in the library.
* Changed constructor of the `HABinarySensor` class (removed `deviceClass` and `initialState` arguments)
* Renamed `HABinarySensor::getState()` method to `HABinarySensor::getCurrentState()`
* Replaced `HATriggers` with `HADeviceTrigger` - the new implementation is not backward compatible. Please check the updated example of the `multi-state-button`.
* Renamed `HADevice::isOnline()` method to `HADevice::isAvailable()`
* Renamed `HASwitch::onStateChanged` method to `HASwitch::onCommand`.
* Renamed `HAFan::onStateChanged` method to `HAFan::onStateCommand`.
* Renamed `HAFan::onSpeedChanged` method to `HAFan::onSpeedCommand`.
* Changed logic of the `HASwitch` callback. Please check the `led-switch` example.
* Refactored `HASensor` logic. It's now divided into two different classes: `HASensor` and `HASensorNumber`.
* Removed all legacy constructors with `HAMqtt` argument
* Removed `onConnectionFailed` callback from the `HAMqtt` class
* The position in the `HACover` is now available as configurable feature. It's disabled by default.
* Refactored `HAHVAC` class to support more features of the MQTT discovery. Please check the update example.
## 1.3.0
**New features:**
* Added `onMessage()` method to HAMqtt class
* Added support for HA Covers
* Added support for setting different prefix for non-discovery topics (see [Advanced MQTT example](examples/mqtt-advanced/mqtt-advanced.ino))
* Added `setName` method to HASensor
* Added `setName` method to HASwitch
* Added `onBeforeStateChanged` callback to HASwitch
**Improvements:**
* Removed legacy properties from HAFan (Home Assistant 2021.4.4). Deprecated methods will be removed after a quarter (2021.7)
* Separated `uniqueID` field from `name` in all devices types
## 1.2.0
**Breaking changes:**
* Refactored HASensor implementation. Please take a look at updated example in `examples/sensor/sensor.ino`
* Refactored HASensor implementation. Please take a look at [updated example](examples/sensor/sensor.ino)
**New features:**
* Added support for HVAC
* Added support for excluding devices types from the compilation using defines (see `src/ArduinoHADefines.h`)
* Added support for excluding devices types from the compilation using defines (see [src/ArduinoHADefines.h](src/ArduinoHADefines.h))
* Added support for setting icon in HASwitch and HASensor
* Added support for setting retain flag in HASwitch
* Added support for text (const char*) payload in HASensor
@@ -15,9 +77,9 @@
* Added support for connecting to the MQTT broker using hostname
* Added `onConnected()` method in the HAMqtt
* Added `onConnectionFailed()` method in the HAMqtt
* Added support for MQTT LWT (see `examples/advanced-availability/advanced-availability.ino`)
* Added support for MQTT LWT (see [Advanced Availability example](examples/advanced-availability/advanced-availability.ino))
**Updates:**
**Improvements:**
* Optimized codebase and logic in all devices types
* Updated all examples
* Fixed compilation warnings in all classes
+661
View File
@@ -0,0 +1,661 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
+80 -55
View File
@@ -1,74 +1,99 @@
# Arduino Home Assistant integration
# Arduino Home Assistant integration 🏠
ArduinoHA allows to integrate an Arduino/ESP based device with Home Assistant using MQTT.
The library is designed to use as little resources (RAM/flash) as possible.
Initially it was optimized to work on Arduino Uno with Ethernet Shield,
The library is designed to use as low resources (RAM/flash) as possible.
Initially, it was optimized to work on Arduino Uno with Ethernet Shield,
but I successfully use it on ESP8266/ESP8255 boards in my projects.
[📘 Documentation](https://dawidchyrzynski.github.io/arduino-home-assistant/)
## Features
* Two-way communication (state reporting and command execution)
* MQTT discovery (device is added to the Home Assistant panel automatically)
* MQTT Last Will and Testament
* Support for custom MQTT messages (publishing and subscribing)
* Auto reconnect with MQTT broker
## Examples
* [Binary Sensor](examples/binary-sensor/binary-sensor.ino)
* [Fan](examples/fan/fan.ino)
* [LED switch](examples/led-switch/led-switch.ino)
* [Multi-state button](examples/multi-state-button/multi-state-button.ino)
* [Sensor (temperature, humidity, etc.)](examples/sensor/sensor.ino)
* [HVAC](examples/hvac/hvac.ino)
* [NodeMCU Wi-Fi](examples/nodemcu/nodemcu.ino)
* [Arduino Nano 33 IoT Wi-Fi (SAMD)](examples/nano33iot/nano33iot.ino)
* [Availability feature](examples/availability)
* [Advanced availability (MQTT LWT)](examples/advanced-availability/advanced-availability.ino)
* [MQTT with credentials](examples/mqtt-with-credentials/mqtt-with-credentials.ino)
* [MQTT events](examples/mqtt-events/mqtt-events.ino)
## Tested boards
* Arduino Uno
* Arduino Mega
* Controllino Maxi (standard/pure/automation/power)
* Controllino Mega (standard/pure)
* NodeMCU
* ESP-01
* Generic ESP8266/ESP8255
* Arduino Nano 33 IoT (SAMD)
## Tested Arduino Shields
* Arduino Ethernet Shield (WizNet W5100)
* Reporting availability (online/offline states) of a device
* Doxygen documentation for all classes
* Covered by unit tests (AUnit + EpoxyDuino + AUniter)
## Supported HA types
* Binary sensors
* Fans
* Device triggers
* Switches
* Sensors
* Tag scanner
* HVACs *(side note: HVACs requires more flash size than other HA types. It's not suitable for Arduino Nano/Uno)*
| Home Assistant type | Supported |
| ------------------- | :--------: |
| Binary sensor | ✅ |
| Button | ✅ |
| Camera | ✅ |
| Cover | ✅ |
| Device tracker | ✅ |
| Device trigger | ✅ |
| Fan | ✅ |
| Humidifier | ❌ |
| HVAC | ✅ |
| Light | ✅ |
| Lock | ✅ |
| Number | ✅ |
| Scene | ✅ |
| Select | ✅ |
| Sensor | ✅ |
| Switch | ✅ |
| Tag scanner | ✅ |
| Vacuum | ❌ |
## Roadmap
## Examples
* FAQ + Home Assistant setup instructions
* Documentation of the library
* Unit tests
* Reduce flash memory usage
* Add support for HA covers
* Add support for HA lights
|Example|Description |
|-------|-----------------------------|
|[Binary sensor](examples/binary-sensor/binary-sensor.ino)|Using the binary sensor as a door contact sensor.|
|[Button](examples/button/button.ino)|Adding simple buttons to the Home Assistant panel.|
|[Camera](examples/esp32-cam/esp32-cam.ino)|Publishing the preview from the ESP32-CAM module.|
|[Cover](examples/cover/cover.ino)|Controlling a window cover (open / close / stop).|
|[Device trigger](examples/multi-state-button/multi-state-button.ino)|Implementation of a simple wall switch that reports press and hold states.|
|[Fan](examples/fan/fan.ino)|Controlling a simple fan (state + speed).|
|[HVAC](examples/hvac/hvac.ino)|HVAC controller with multiple modes, power control and target temperature.|
|[Lock](examples/lock/lock.ino)|A simple door lock that's controlled by the Home Assistant.|
|[Light](examples/light/light.ino)|A simple light that allows changing brightness, color temperature and RGB color.|
|[Number](examples/number/number.ino)|Adding an interactive numeric slider in the Home Assistant panel.|
|[Scene](examples/scene/scene.ino)|Adding a custom scene in the Home Assistant panel. |
|[Select](examples/select/select.ino)|A dropdown selector that's displayed in the Home Assistant panel.|
|[Sensor](examples/sensor/sensor.ino)|A simple sensor that reports a state in a string representation (open / opening / close).|
|[Analog sensor](examples/sensor-analog/sensor-analog.ino)|Reporting the analog pin's voltage to the Home Assistant.|
|[Integer sensor](examples/sensor-integer/sensor-integer.ino)|Reporting the device's uptime to the Home Assistant.|
|[Switch](examples/led-switch/led-switch.ino)|The LED that's controlled by the Home Assistant.|
|[Multi-switch](examples/multi-switch/multi-switch.ino)|Multiple switches controlled by the Home Assistant.|
|[Tag scanner](examples/tag-scanner/tag-scanner.ino)|Scanning RFID tags using the MFRC522 module.|
|[Availability](examples/availability/availability.ino)|Reporting entities' availability (online / offline) to the Home Assistant.|
|[Advanced availability](examples/advanced-availability/advanced-availability.ino)|Advanced availability reporting with MQTT LWT (Last Will and Testament).|
|[MQTT advanced](examples/mqtt-advanced/mqtt-advanced.ino)|Subscribing to custom topics and publishing custom messages.|
|[MQTT with credentials](examples/mqtt-with-credentials/mqtt-with-credentials.ino)|Establishing connection with a MQTT broker using the credentials. |
|[NodeMCU (ESP8266)](examples/nodemcu/nodemcu.ino)|Basic example for ESP8266 devices.|
|[Arduino Nano 33 IoT](examples/nano33iot/nano33iot.ino)|Basic example for Arduino Nano 33 IoT (SAMD family).|
|[mDNS discovery](examples/mdns/mdns.ino)|Make your ESP8266 discoverable via the mDNS.|
## Unsupported features
## Compatible hardware
The library doesn't support all features of the MQTT integration.
If you need support for a new feature please open a new issue in the repository.
The library uses the Arduino Ethernet Client API for interacting with the network hardware.
It should work fine as long as the `Client` class is available.
# License
Here is the list of devices on which the library was tested:
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License v3.0 as published by the Free Software Foundation.
* Arduino Uno
* Arduino Mega
* Arduino Nano
* Arduino Pro Mini
* Arduino Nano 33 IoT
* NodeMCU
* Controllino Mega (Pure)
* Controllino Maxi (Pure)
* ESP-01
* ESP32-CAM
* Sonoff Dual R2
* Sonoff Dual R3
* Sonoff Basic
* Sonoff Mini
* Tuya Wi-Fi switch module
* Tuya Wi-Fi curtain module
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/gpl.html
Please note that it's not the complete list of supported devices.
You may try to use the library on any device that uses Arduino core.
+4
View File
@@ -0,0 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 2ec2743465492061aecb7af749506d9c
tags: 645f666f9bcd5a90fca523b33c5a78b7
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

+906
View File
@@ -0,0 +1,906 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
div.section::after {
display: block;
content: '';
clear: left;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox form.search {
overflow: hidden;
}
div.sphinxsidebar #searchbox input[type="text"] {
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}
div.sphinxsidebar #searchbox input[type="submit"] {
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}
img {
border: 0;
max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li p.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}
table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- domain module index --------------------------------------------------- */
table.modindextable td {
padding: 2px;
border-collapse: collapse;
}
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 450px;
max-width: 800px;
}
div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
a.headerlink {
visibility: hidden;
}
a.brackets:before,
span.brackets > a:before{
content: "[";
}
a.brackets:after,
span.brackets > a:after {
content: "]";
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, figure.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, figure.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, figure.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
img.align-default, figure.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-default {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar,
aside.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px;
background-color: #ffe;
width: 40%;
float: right;
clear: right;
overflow-x: auto;
}
p.sidebar-title {
font-weight: bold;
}
div.admonition, div.topic, blockquote {
clear: left;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- content of sidebars/topics/admonitions -------------------------------- */
div.sidebar > :last-child,
aside.sidebar > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}
div.sidebar::after,
aside.sidebar::after,
div.topic::after,
div.admonition::after,
blockquote::after {
display: block;
content: '';
clear: both;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
margin-top: 10px;
margin-bottom: 10px;
border: 0;
border-collapse: collapse;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
table.align-default {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
th > :first-child,
td > :first-child {
margin-top: 0px;
}
th > :last-child,
td > :last-child {
margin-bottom: 0px;
}
/* -- figures --------------------------------------------------------------- */
div.figure, figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption, figcaption {
padding: 0.3em;
}
div.figure p.caption span.caption-number,
figcaption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text,
figcaption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
table.field-list td, table.field-list th {
border: 0 !important;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
/* -- hlist styles ---------------------------------------------------------- */
table.hlist {
margin: 1em 0;
}
table.hlist td {
vertical-align: top;
}
/* -- object description styles --------------------------------------------- */
.sig {
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
}
.sig-name, code.descname {
background-color: transparent;
font-weight: bold;
}
.sig-name {
font-size: 1.1em;
}
code.descname {
font-size: 1.2em;
}
.sig-prename, code.descclassname {
background-color: transparent;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.sig-param.n {
font-style: italic;
}
/* C++ specific styling */
.sig-inline.c-texpr,
.sig-inline.cpp-texpr {
font-family: unset;
}
.sig.c .k, .sig.c .kt,
.sig.cpp .k, .sig.cpp .kt {
color: #0033B3;
}
.sig.c .m,
.sig.cpp .m {
color: #1750EB;
}
.sig.c .s, .sig.c .sc,
.sig.cpp .s, .sig.cpp .sc {
color: #067D17;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
:not(li) > ol > li:first-child > :first-child,
:not(li) > ul > li:first-child > :first-child {
margin-top: 0px;
}
:not(li) > ol > li:last-child > :last-child,
:not(li) > ul > li:last-child > :last-child {
margin-bottom: 0px;
}
ol.simple ol p,
ol.simple ul p,
ul.simple ol p,
ul.simple ul p {
margin-top: 0;
}
ol.simple > li:not(:first-child) > p,
ul.simple > li:not(:first-child) > p {
margin-top: 0;
}
ol.simple p,
ul.simple p {
margin-bottom: 0;
}
dl.footnote > dt,
dl.citation > dt {
float: left;
margin-right: 0.5em;
}
dl.footnote > dd,
dl.citation > dd {
margin-bottom: 0em;
}
dl.footnote > dd:after,
dl.citation > dd:after {
content: "";
clear: both;
}
dl.field-list {
display: grid;
grid-template-columns: fit-content(30%) auto;
}
dl.field-list > dt {
font-weight: bold;
word-break: break-word;
padding-left: 0.5em;
padding-right: 5px;
}
dl.field-list > dt:after {
content: ":";
}
dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
margin-left: 0em;
margin-bottom: 0em;
}
dl {
margin-bottom: 15px;
}
dd > :first-child {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dl > dd:last-child,
dl > dd:last-child > :last-child {
margin-bottom: 0;
}
dt:target, span.highlighted {
background-color: #fbe54e;
}
rect.highlighted {
fill: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
.classifier:before {
font-style: normal;
margin: 0 0.5em;
content: ":";
display: inline-block;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
pre, div[class*="highlight-"] {
clear: both;
}
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
white-space: nowrap;
}
div[class*="highlight-"] {
margin: 1em 0;
}
td.linenos pre {
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
display: block;
}
table.highlighttable tbody {
display: block;
}
table.highlighttable tr {
display: flex;
}
table.highlighttable td {
margin: 0;
padding: 0;
}
table.highlighttable td.linenos {
padding-right: 0.5em;
}
table.highlighttable td.code {
flex: 1;
overflow: hidden;
}
.highlight .hll {
display: block;
}
div.highlight pre,
table.highlighttable pre {
margin: 0;
}
div.code-block-caption + div {
margin-top: 0;
}
div.code-block-caption {
margin-top: 1em;
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
table.highlighttable td.linenos,
span.linenos,
div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
-webkit-user-select: text; /* Safari fallback only */
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
margin: 1em 0;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
span.eqno a.headerlink {
position: absolute;
z-index: 1;
}
div.math:hover a.headerlink {
visibility: visible;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}
+180
View File
@@ -0,0 +1,180 @@
header.navbar {
background: #3eaf7c
}
header.navbar a {
color: #fff
}
header.navbar .nav-item a:hover {
color: #eee
}
header.navbar .site-name {
color: #fff
}
header.navbar .icon {
color: #fff;
position: relative;
top: 2px
}
.body-header ul.page-nav {
margin-right: 1.2em;
padding-right: 0
}
.body-header + hr {
margin-top: 0 !important;
}
table.examples-table tbody td + td {
text-align: left;
}
.sidebar-links li.toctree-l1 > a {
font-weight: 600
}
.sidebar-links > .caption {
display: none
}
.content + div.page-nav {
max-width: 840px;
}
.content + div.page-nav ul.page-nav {
max-width: 100%;
padding: 0 0 0.5em
}
.searchbox .caption-text {
display: none
}
form {
display: flex;
flex-direction: row;
margin-top: 0.5em
}
form.search {
padding-right: 0.5em
}
input[type="text"] {
border: 1px solid #ddd;
border-radius: 2px;
flex: 1;
padding: 8px 15px;
font-size: 15px;
outline: none;
}
input[type="submit"] {
background: #3eaf7c;
border: 1px solid #3eaf7c;
color: #fff;
font-weight: 500;
font-size: 15px;
padding: 8px;
cursor: pointer;
text-transform: capitalize;
transition: background-color .3s
}
input[type="submit"]:hover {
background: #58C996
}
.content p + ul {
margin-top: -10px
}
.content pre {
font-size: 14px
}
.cpp.var,
.cpp.function {
border: 1px solid #eee;
background: #fcfcfc;
margin-bottom: 0.5em;
padding: 15px
}
.cpp > dt {
border-bottom: 1px solid #eee;
margin: 0 0 10px;
padding-bottom: 5px;
}
.cpp.function > dt {
border-bottom: 2px solid #eee;
}
.cpp > dt * {
font-size: 16px;
font-weight: 600
}
.cpp.class > dt * {
font-size: 20px
}
.cpp > dt a * {
color: #3eaf7c
}
.cpp > dt .k::after {
content: " "
}
.cpp > dt .kt + .w::before {
content: " "
}
.cpp > dd {
margin-left: 0;
text-align: justify;
font-size: 15px;
}
.cpp .sig-paren {
margin-left: 0;
margin-right: 3px;
}
.cpp .sig-name {
margin-right: 2px
}
.cpp .p::after,
.cpp .n::after {
content: " "
}
.cpp .k,
.cpp .kt {
color: #2664b9
}
.cpp .n {
color: #2c3e50;
margin: 0
}
.cpp.function .field-list {
display: block;
margin-bottom: 0
}
.cpp.function .field-list dt {
padding-left: 0;
text-transform: uppercase;
font-size: 14px;
font-weight: 600;
border-bottom: 1px solid #eee;
color: #999 !important;
}
.cpp.function .field-list dd {
padding-left: 0
}
.cpp.function .field-list dd > p,
.cpp.function .field-list dd > ul {
margin: 8px 0 0;
list-style-type: none;
padding-left: 0
}
.cpp.function .field-list dd p strong {
margin-left: 0
}
.cpp.function .field-list dd + dt {
margin-top: 15px
}
.cpp .admonition {
padding: 8px 15px
}
.cpp .admonition .admonition-title {
margin-bottom: 5px
}
.breathe-sectiondef-title {
color: #222 !important;
font-size: 20px !important;
text-align: center;
text-decoration: underline;
text-transform: uppercase;
}
.cpp p + ul {
margin-top: 5px
}
p.highlight-link {
margin-bottom: 0
}
+13
View File
@@ -0,0 +1,13 @@
window.addEventListener('load', function() {
document.querySelectorAll('a.reference.external').forEach(function(link) {
link.target = '_blank';
});
document.querySelectorAll('.footer a').forEach(function(link) {
link.target = '_blank';
});
document.querySelectorAll('form input[type="text"]').forEach(function(input) {
input.setAttribute("placeholder", "Search docs");
});
});
+358
View File
@@ -0,0 +1,358 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* make the code below compatible with browsers without
* an installed firebug like debugger
if (!window.console || !console.firebug) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
"profile", "profileEnd"];
window.console = {};
for (var i = 0; i < names.length; ++i)
window.console[names[i]] = function() {};
}
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/**
* Small JavaScript module for the documentation.
*/
var Documentation = {
init : function() {
this.fixFirefoxAnchorBug();
this.highlightSearchWords();
this.initIndexTable();
this.initOnKeyListeners();
},
/**
* i18n support
*/
TRANSLATIONS : {},
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
LOCALE : 'unknown',
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext : function(string) {
var translated = Documentation.TRANSLATIONS[string];
if (typeof translated === 'undefined')
return string;
return (typeof translated === 'string') ? translated : translated[0];
},
ngettext : function(singular, plural, n) {
var translated = Documentation.TRANSLATIONS[singular];
if (typeof translated === 'undefined')
return (n == 1) ? singular : plural;
return translated[Documentation.PLURALEXPR(n)];
},
addTranslations : function(catalog) {
for (var key in catalog.messages)
this.TRANSLATIONS[key] = catalog.messages[key];
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
this.LOCALE = catalog.locale;
},
/**
* add context elements like header anchor links
*/
addContextElements : function() {
$('div[id] > :header:first').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this headline')).
appendTo(this);
});
$('dt[id]').each(function() {
$('<a class="headerlink">\u00B6</a>').
attr('href', '#' + this.id).
attr('title', _('Permalink to this definition')).
appendTo(this);
});
},
/**
* workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/
fixFirefoxAnchorBug : function() {
if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() {
document.location.href += '';
}, 10);
},
/**
* highlight the search words provided in the url in the text
*/
highlightSearchWords : function() {
var params = $.getQueryParameters();
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
if (terms.length) {
var body = $('div.body');
if (!body.length) {
body = $('body');
}
window.setTimeout(function() {
$.each(terms, function() {
body.highlightText(this.toLowerCase(), 'highlighted');
});
}, 10);
$('<p class="highlight-link"><a href="javascript:Documentation.' +
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
.appendTo($('#searchbox'));
}
},
/**
* init the domain index toggle buttons
*/
initIndexTable : function() {
var togglers = $('img.toggler').click(function() {
var src = $(this).attr('src');
var idnum = $(this).attr('id').substr(7);
$('tr.cg-' + idnum).toggle();
if (src.substr(-9) === 'minus.png')
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
else
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
}).css('display', '');
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
togglers.click();
}
},
/**
* helper function to hide the search marks again
*/
hideSearchWords : function() {
$('#searchbox .highlight-link').fadeOut(300);
$('span.highlighted').removeClass('highlighted');
var url = new URL(window.location);
url.searchParams.delete('highlight');
window.history.replaceState({}, '', url);
},
/**
* helper function to focus on search bar
*/
focusSearchBar : function() {
$('input[name=q]').first().focus();
},
/**
* make the url absolute
*/
makeURL : function(relativeURL) {
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
},
/**
* get the current relative url
*/
getCurrentURL : function() {
var path = document.location.pathname;
var parts = path.split(/\//);
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
if (this === '..')
parts.pop();
});
var url = parts.join('/');
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
},
initOnKeyListeners: function() {
// only install a listener if it is really needed
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
return;
$(document).keydown(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box, textarea, dropdown or button
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
&& activeElementType !== 'BUTTON') {
if (event.altKey || event.ctrlKey || event.metaKey)
return;
if (!event.shiftKey) {
switch (event.key) {
case 'ArrowLeft':
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS)
break;
var prevHref = $('link[rel="prev"]').prop('href');
if (prevHref) {
window.location.href = prevHref;
return false;
}
break;
case 'ArrowRight':
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS)
break;
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
}
break;
case 'Escape':
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
break;
Documentation.hideSearchWords();
return false;
}
}
// some keyboard layouts may need Shift to get /
switch (event.key) {
case '/':
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
break;
Documentation.focusSearchBar();
return false;
}
}
});
}
};
// quick alias for translations
_ = Documentation.gettext;
$(document).ready(function() {
Documentation.init();
});
+14
View File
@@ -0,0 +1,14 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '2.0.0',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
HAS_SOURCE: false,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true,
};
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

+10872
View File
File diff suppressed because it is too large Load Diff
+2
View File
File diff suppressed because one or more lines are too long
+297
View File
@@ -0,0 +1,297 @@
/*
* language_data.js
* ~~~~~~~~~~~~~~~~
*
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
/* Non-minified version is copied as a separate JS file, is available */
/**
* Porter Stemmer
*/
var Stemmer = function() {
var step2list = {
ational: 'ate',
tional: 'tion',
enci: 'ence',
anci: 'ance',
izer: 'ize',
bli: 'ble',
alli: 'al',
entli: 'ent',
eli: 'e',
ousli: 'ous',
ization: 'ize',
ation: 'ate',
ator: 'ate',
alism: 'al',
iveness: 'ive',
fulness: 'ful',
ousness: 'ous',
aliti: 'al',
iviti: 'ive',
biliti: 'ble',
logi: 'log'
};
var step3list = {
icate: 'ic',
ative: '',
alize: 'al',
iciti: 'ic',
ical: 'ic',
ful: '',
ness: ''
};
var c = "[^aeiou]"; // consonant
var v = "[aeiouy]"; // vowel
var C = c + "[^aeiouy]*"; // consonant sequence
var V = v + "[aeiou]*"; // vowel sequence
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
var s_v = "^(" + C + ")?" + v; // vowel in stem
this.stemWord = function (w) {
var stem;
var suffix;
var firstch;
var origword = w;
if (w.length < 3)
return w;
var re;
var re2;
var re3;
var re4;
firstch = w.substr(0,1);
if (firstch == "y")
w = firstch.toUpperCase() + w.substr(1);
// Step 1a
re = /^(.+?)(ss|i)es$/;
re2 = /^(.+?)([^s])s$/;
if (re.test(w))
w = w.replace(re,"$1$2");
else if (re2.test(w))
w = w.replace(re2,"$1$2");
// Step 1b
re = /^(.+?)eed$/;
re2 = /^(.+?)(ed|ing)$/;
if (re.test(w)) {
var fp = re.exec(w);
re = new RegExp(mgr0);
if (re.test(fp[1])) {
re = /.$/;
w = w.replace(re,"");
}
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1];
re2 = new RegExp(s_v);
if (re2.test(stem)) {
w = stem;
re2 = /(at|bl|iz)$/;
re3 = new RegExp("([^aeiouylsz])\\1$");
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re2.test(w))
w = w + "e";
else if (re3.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
else if (re4.test(w))
w = w + "e";
}
}
// Step 1c
re = /^(.+?)y$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(s_v);
if (re.test(stem))
w = stem + "i";
}
// Step 2
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step2list[suffix];
}
// Step 3
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
suffix = fp[2];
re = new RegExp(mgr0);
if (re.test(stem))
w = stem + step3list[suffix];
}
// Step 4
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
re2 = /^(.+?)(s|t)(ion)$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
if (re.test(stem))
w = stem;
}
else if (re2.test(w)) {
var fp = re2.exec(w);
stem = fp[1] + fp[2];
re2 = new RegExp(mgr1);
if (re2.test(stem))
w = stem;
}
// Step 5
re = /^(.+?)e$/;
if (re.test(w)) {
var fp = re.exec(w);
stem = fp[1];
re = new RegExp(mgr1);
re2 = new RegExp(meq1);
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
w = stem;
}
re = /ll$/;
re2 = new RegExp(mgr1);
if (re.test(w) && re2.test(w)) {
re = /.$/;
w = w.replace(re,"");
}
// and turn initial Y back to y
if (firstch == "y")
w = firstch.toLowerCase() + w.substr(1);
return w;
}
}
var splitChars = (function() {
var result = {};
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
var i, j, start, end;
for (i = 0; i < singles.length; i++) {
result[singles[i]] = true;
}
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
for (i = 0; i < ranges.length; i++) {
start = ranges[i][0];
end = ranges[i][1];
for (j = start; j <= end; j++) {
result[j] = true;
}
}
return result;
})();
function splitQuery(query) {
var result = [];
var start = -1;
for (var i = 0; i < query.length; i++) {
if (splitChars[query.charCodeAt(i)]) {
if (start !== -1) {
result.push(query.slice(start, i));
start = -1;
}
} else if (start === -1) {
start = i;
}
}
if (start !== -1) {
result.push(query.slice(start));
}
return result;
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

+77
View File
@@ -0,0 +1,77 @@
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #4f424c }
.highlight { background: #2f1e2e; color: #e7e9db }
.highlight .c { color: #776e71 } /* Comment */
.highlight .err { color: #ef6155 } /* Error */
.highlight .k { color: #815ba4 } /* Keyword */
.highlight .l { color: #f99b15 } /* Literal */
.highlight .n { color: #e7e9db } /* Name */
.highlight .o { color: #5bc4bf } /* Operator */
.highlight .p { color: #e7e9db } /* Punctuation */
.highlight .ch { color: #776e71 } /* Comment.Hashbang */
.highlight .cm { color: #776e71 } /* Comment.Multiline */
.highlight .cp { color: #776e71 } /* Comment.Preproc */
.highlight .cpf { color: #776e71 } /* Comment.PreprocFile */
.highlight .c1 { color: #776e71 } /* Comment.Single */
.highlight .cs { color: #776e71 } /* Comment.Special */
.highlight .gd { color: #ef6155 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #48b685 } /* Generic.Inserted */
.highlight .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */
.highlight .kc { color: #815ba4 } /* Keyword.Constant */
.highlight .kd { color: #815ba4 } /* Keyword.Declaration */
.highlight .kn { color: #5bc4bf } /* Keyword.Namespace */
.highlight .kp { color: #815ba4 } /* Keyword.Pseudo */
.highlight .kr { color: #815ba4 } /* Keyword.Reserved */
.highlight .kt { color: #fec418 } /* Keyword.Type */
.highlight .ld { color: #48b685 } /* Literal.Date */
.highlight .m { color: #f99b15 } /* Literal.Number */
.highlight .s { color: #48b685 } /* Literal.String */
.highlight .na { color: #06b6ef } /* Name.Attribute */
.highlight .nb { color: #e7e9db } /* Name.Builtin */
.highlight .nc { color: #fec418 } /* Name.Class */
.highlight .no { color: #ef6155 } /* Name.Constant */
.highlight .nd { color: #5bc4bf } /* Name.Decorator */
.highlight .ni { color: #e7e9db } /* Name.Entity */
.highlight .ne { color: #ef6155 } /* Name.Exception */
.highlight .nf { color: #06b6ef } /* Name.Function */
.highlight .nl { color: #e7e9db } /* Name.Label */
.highlight .nn { color: #fec418 } /* Name.Namespace */
.highlight .nx { color: #06b6ef } /* Name.Other */
.highlight .py { color: #e7e9db } /* Name.Property */
.highlight .nt { color: #5bc4bf } /* Name.Tag */
.highlight .nv { color: #ef6155 } /* Name.Variable */
.highlight .ow { color: #5bc4bf } /* Operator.Word */
.highlight .w { color: #e7e9db } /* Text.Whitespace */
.highlight .mb { color: #f99b15 } /* Literal.Number.Bin */
.highlight .mf { color: #f99b15 } /* Literal.Number.Float */
.highlight .mh { color: #f99b15 } /* Literal.Number.Hex */
.highlight .mi { color: #f99b15 } /* Literal.Number.Integer */
.highlight .mo { color: #f99b15 } /* Literal.Number.Oct */
.highlight .sa { color: #48b685 } /* Literal.String.Affix */
.highlight .sb { color: #48b685 } /* Literal.String.Backtick */
.highlight .sc { color: #e7e9db } /* Literal.String.Char */
.highlight .dl { color: #48b685 } /* Literal.String.Delimiter */
.highlight .sd { color: #776e71 } /* Literal.String.Doc */
.highlight .s2 { color: #48b685 } /* Literal.String.Double */
.highlight .se { color: #f99b15 } /* Literal.String.Escape */
.highlight .sh { color: #48b685 } /* Literal.String.Heredoc */
.highlight .si { color: #f99b15 } /* Literal.String.Interpol */
.highlight .sx { color: #48b685 } /* Literal.String.Other */
.highlight .sr { color: #48b685 } /* Literal.String.Regex */
.highlight .s1 { color: #48b685 } /* Literal.String.Single */
.highlight .ss { color: #48b685 } /* Literal.String.Symbol */
.highlight .bp { color: #e7e9db } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06b6ef } /* Name.Function.Magic */
.highlight .vc { color: #ef6155 } /* Name.Variable.Class */
.highlight .vg { color: #ef6155 } /* Name.Variable.Global */
.highlight .vi { color: #ef6155 } /* Name.Variable.Instance */
.highlight .vm { color: #ef6155 } /* Name.Variable.Magic */
.highlight .il { color: #f99b15 } /* Literal.Number.Integer.Long */
+525
View File
@@ -0,0 +1,525 @@
/*
* searchtools.js
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
if (!Scorer) {
/**
* Simple result scoring code.
*/
var Scorer = {
// Implement the following function to further tweak the score for each result
// The function takes a result array [filename, title, anchor, descr, score]
// and returns the new score.
/*
score: function(result) {
return result[4];
},
*/
// query matches the full name of an object
objNameMatch: 11,
// or matches in the last dotted part of the object name
objPartialMatch: 6,
// Additive scores depending on the priority of the object
objPrio: {0: 15, // used to be importantResults
1: 5, // used to be objectResults
2: -5}, // used to be unimportantResults
// Used when the priority is not in the mapping.
objPrioDefault: 0,
// query found in title
title: 15,
partialTitle: 7,
// query found in terms
term: 5,
partialTerm: 2
};
}
if (!splitQuery) {
function splitQuery(query) {
return query.split(/\s+/);
}
}
/**
* Search Module
*/
var Search = {
_index : null,
_queued_query : null,
_pulse_status : -1,
htmlToText : function(htmlString) {
var virtualDocument = document.implementation.createHTMLDocument('virtual');
var htmlElement = $(htmlString, virtualDocument);
htmlElement.find('.headerlink').remove();
docContent = htmlElement.find('[role=main]')[0];
if(docContent === undefined) {
console.warn("Content block not found. Sphinx search tries to obtain it " +
"via '[role=main]'. Could you check your theme or template.");
return "";
}
return docContent.textContent || docContent.innerText;
},
init : function() {
var params = $.getQueryParameters();
if (params.q) {
var query = params.q[0];
$('input[name="q"]')[0].value = query;
this.performSearch(query);
}
},
loadIndex : function(url) {
$.ajax({type: "GET", url: url, data: null,
dataType: "script", cache: true,
complete: function(jqxhr, textstatus) {
if (textstatus != "success") {
document.getElementById("searchindexloader").src = url;
}
}});
},
setIndex : function(index) {
var q;
this._index = index;
if ((q = this._queued_query) !== null) {
this._queued_query = null;
Search.query(q);
}
},
hasIndex : function() {
return this._index !== null;
},
deferQuery : function(query) {
this._queued_query = query;
},
stopPulse : function() {
this._pulse_status = 0;
},
startPulse : function() {
if (this._pulse_status >= 0)
return;
function pulse() {
var i;
Search._pulse_status = (Search._pulse_status + 1) % 4;
var dotString = '';
for (i = 0; i < Search._pulse_status; i++)
dotString += '.';
Search.dots.text(dotString);
if (Search._pulse_status > -1)
window.setTimeout(pulse, 500);
}
pulse();
},
/**
* perform a search for something (or wait until index is loaded)
*/
performSearch : function(query) {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
this.startPulse();
// index already loaded, the browser was quick!
if (this.hasIndex())
this.query(query);
else
this.deferQuery(query);
},
/**
* execute search (requires search index to be loaded)
*/
query : function(query) {
var i;
// stem the searchterms and add them to the correct list
var stemmer = new Stemmer();
var searchterms = [];
var excluded = [];
var hlterms = [];
var tmp = splitQuery(query);
var objectterms = [];
for (i = 0; i < tmp.length; i++) {
if (tmp[i] !== "") {
objectterms.push(tmp[i].toLowerCase());
}
if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
// skip this "word"
continue;
}
// stem the word
var word = stemmer.stemWord(tmp[i].toLowerCase());
var toAppend;
// select the correct list
if (word[0] == '-') {
toAppend = excluded;
word = word.substr(1);
}
else {
toAppend = searchterms;
hlterms.push(tmp[i].toLowerCase());
}
// only add if not already in the list
if (!$u.contains(toAppend, word))
toAppend.push(word);
}
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
// console.debug('SEARCH: searching for:');
// console.info('required: ', searchterms);
// console.info('excluded: ', excluded);
// prepare search
var terms = this._index.terms;
var titleterms = this._index.titleterms;
// array of [filename, title, anchor, descr, score]
var results = [];
$('#search-progress').empty();
// lookup as object
for (i = 0; i < objectterms.length; i++) {
var others = [].concat(objectterms.slice(0, i),
objectterms.slice(i+1, objectterms.length));
results = results.concat(this.performObjectSearch(objectterms[i], others));
}
// lookup as search terms in fulltext
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
// let the scorer override scores with a custom scoring function
if (Scorer.score) {
for (i = 0; i < results.length; i++)
results[i][4] = Scorer.score(results[i]);
}
// now sort the results by score (in opposite order of appearance, since the
// display function below uses pop() to retrieve items) and then
// alphabetically
results.sort(function(a, b) {
var left = a[4];
var right = b[4];
if (left > right) {
return 1;
} else if (left < right) {
return -1;
} else {
// same score: sort alphabetically
left = a[1].toLowerCase();
right = b[1].toLowerCase();
return (left > right) ? -1 : ((left < right) ? 1 : 0);
}
});
// for debugging
//Search.lastresults = results.slice(); // a copy
//console.info('search results:', Search.lastresults);
// print the results
var resultCount = results.length;
function displayNextItem() {
// results left, load the summary and display it
if (results.length) {
var item = results.pop();
var listItem = $('<li></li>');
var requestUrl = "";
var linkUrl = "";
if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
// dirhtml builder
var dirname = item[0] + '/';
if (dirname.match(/\/index\/$/)) {
dirname = dirname.substring(0, dirname.length-6);
} else if (dirname == 'index/') {
dirname = '';
}
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
linkUrl = requestUrl;
} else {
// normal html builders
requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
}
listItem.append($('<a/>').attr('href',
linkUrl +
highlightstring + item[2]).html(item[1]));
if (item[3]) {
listItem.append($('<span> (' + item[3] + ')</span>'));
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
} else if (DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY) {
$.ajax({url: requestUrl,
dataType: "text",
complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText;
if (data !== '' && data !== undefined) {
var summary = Search.makeSearchSummary(data, searchterms, hlterms);
if (summary) {
listItem.append(summary);
}
}
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
}});
} else {
// just display title
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
}
}
// search finished, update title and status message
else {
Search.stopPulse();
Search.title.text(_('Search Results'));
if (!resultCount)
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
else
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
Search.status.fadeIn(500);
}
}
displayNextItem();
},
/**
* search for object names
*/
performObjectSearch : function(object, otherterms) {
var filenames = this._index.filenames;
var docnames = this._index.docnames;
var objects = this._index.objects;
var objnames = this._index.objnames;
var titles = this._index.titles;
var i;
var results = [];
for (var prefix in objects) {
for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
var match = objects[prefix][iMatch];
var name = match[4];
var fullname = (prefix ? prefix + '.' : '') + name;
var fullnameLower = fullname.toLowerCase()
if (fullnameLower.indexOf(object) > -1) {
var score = 0;
var parts = fullnameLower.split('.');
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullnameLower == object || parts[parts.length - 1] == object) {
score += Scorer.objNameMatch;
// matches in last name
} else if (parts[parts.length - 1].indexOf(object) > -1) {
score += Scorer.objPartialMatch;
}
var objname = objnames[match[1]][2];
var title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
if (otherterms.length > 0) {
var haystack = (prefix + ' ' + name + ' ' +
objname + ' ' + title).toLowerCase();
var allfound = true;
for (i = 0; i < otherterms.length; i++) {
if (haystack.indexOf(otherterms[i]) == -1) {
allfound = false;
break;
}
}
if (!allfound) {
continue;
}
}
var descr = objname + _(', in ') + title;
var anchor = match[3];
if (anchor === '')
anchor = fullname;
else if (anchor == '-')
anchor = objnames[match[1]][1] + '-' + fullname;
// add custom score for some objects according to scorer
if (Scorer.objPrio.hasOwnProperty(match[2])) {
score += Scorer.objPrio[match[2]];
} else {
score += Scorer.objPrioDefault;
}
results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
}
}
}
return results;
},
/**
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
*/
escapeRegExp : function(string) {
return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
},
/**
* search for full-text terms in the index
*/
performTermsSearch : function(searchterms, excluded, terms, titleterms) {
var docnames = this._index.docnames;
var filenames = this._index.filenames;
var titles = this._index.titles;
var i, j, file;
var fileMap = {};
var scoreMap = {};
var results = [];
// perform the search on the required terms
for (i = 0; i < searchterms.length; i++) {
var word = searchterms[i];
var files = [];
var _o = [
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
];
// add support for partial matches
if (word.length > 2) {
var word_regex = this.escapeRegExp(word);
for (var w in terms) {
if (w.match(word_regex) && !terms[word]) {
_o.push({files: terms[w], score: Scorer.partialTerm})
}
}
for (var w in titleterms) {
if (w.match(word_regex) && !titleterms[word]) {
_o.push({files: titleterms[w], score: Scorer.partialTitle})
}
}
}
// no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) {
break;
}
// found search word in contents
$u.each(_o, function(o) {
var _files = o.files;
if (_files === undefined)
return
if (_files.length === undefined)
_files = [_files];
files = files.concat(_files);
// set score for the word in each file to Scorer.term
for (j = 0; j < _files.length; j++) {
file = _files[j];
if (!(file in scoreMap))
scoreMap[file] = {};
scoreMap[file][word] = o.score;
}
});
// create the mapping
for (j = 0; j < files.length; j++) {
file = files[j];
if (file in fileMap && fileMap[file].indexOf(word) === -1)
fileMap[file].push(word);
else
fileMap[file] = [word];
}
}
// now check if the files don't contain excluded terms
for (file in fileMap) {
var valid = true;
// check if all requirements are matched
var filteredTermCount = // as search terms with length < 3 are discarded: ignore
searchterms.filter(function(term){return term.length > 2}).length
if (
fileMap[file].length != searchterms.length &&
fileMap[file].length != filteredTermCount
) continue;
// ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file ||
titleterms[excluded[i]] == file ||
$u.contains(terms[excluded[i]] || [], file) ||
$u.contains(titleterms[excluded[i]] || [], file)) {
valid = false;
break;
}
}
// if we have still a valid result we can add it to the result list
if (valid) {
// select one (max) score for the file.
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
}
}
return results;
},
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words, hlwords is the list of normal, unstemmed
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
*/
makeSearchSummary : function(htmlText, keywords, hlwords) {
var text = Search.htmlToText(htmlText);
if (text == "") {
return null;
}
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
var i = textLower.indexOf(this.toLowerCase());
if (i > -1)
start = i;
});
start = Math.max(start - 120, 0);
var excerpt = ((start > 0) ? '...' : '') +
$.trim(text.substr(start, 240)) +
((start + 240 - text.length) ? '...' : '');
var rv = $('<p class="context"></p>').text(excerpt);
$.each(hlwords, function() {
rv = rv.highlightText(this, 'highlighted');
});
return rv;
}
};
$(document).ready(function() {
Search.init();
});
+116
View File
@@ -0,0 +1,116 @@
/*
*
* Defines default styles specific to Sphinx Press,
* on top of VuePress styles
*
*/
/* FONTS FOR THE CODE - will fall back to monospace if unavailable */
@import url('https://fontlibrary.org/face/roboto-mono');
@import url('https://fontlibrary.org/face/inconsolata');
/* MAKES MAIN TEXT SECTION LARGER */
.content:not(.custom) {
max-width: 840px;
}
/* THE SECTION BELOW DEFINES THE APPEARANCE OF AUTODOC-GENERATED DOCS */
.sig-name.descname {
font-size: 1.2em;
font-weight: bold;
padding: 0 0 3px; /* creates a perfect grey rectangle*/
}
.sig-param {
font-family: 'RobotoMonoRegular', 'Roboto Mono', 'Inconsolata', monospace;
margin-left: 0.3em;
}
.sig-paren {
margin-left: 0.3em;
}
dt {
line-height: 1.5em;
margin-bottom: 1em;
}
dt.field-odd, dt.field-even, p.rubric {
font-size: 1.2em;
font-weight: bold;
color: #4d6a86
}
dd {
margin-inline-start: 10px;
}
dd.field-odd p strong {
margin-left: 1em;
}
dl.method, dl.function {
margin-top: 2em;
margin-bottom: 3em;
}
.viewcode-link {
margin-left: 1em;
color: #9ad8bc;
}
/* THE SECTION BELOW DEFINES THE APPEARANCE OF TABLE-OF-CONTENTS */
/* color fixes for table of contents */
.toc-backref {
/* TOCS cause all your section titles to go green. Pouah! */
color: inherit;
}
.contents.topic p.topic-title {
/* Hide all TOC titles */
display: none;
}
.contents.topic {
margin-bottom: 3em;
}
/* THE SECTION BELOW CHANGES CODE FONTS FOR BETTER 80-CHARS READABILITY */
/* Code will be displayed as Roboto, or Inconsolata if screen is small */
code, pre {
font-family: 'RobotoMonoRegular', 'Roboto Mono', 'Inconsolata', monospace;
}
@media (max-width: 1200px) {
code, pre {
font-family: 'InconsolataRegular', 'Inconsolata', 'RobotoMonoRegular', 'Roboto Mono', monospace;
}
pre {
font-size: 0.95em;
}
}
blockquote {
font-size: inherit;
}
blockquote h2 {
margin-left: 1em;
}
/* THE SECTION BELOW FIXES A SPHINX-MERMAID OPACITY PROBLEM */
.content .section {
opacity: 1.0 !important;
}
.section {
opacity: 1.0 !important;
}
/* MAKES SPHINX SYNTAX figure:: :align:center WORK AGAIN */
.figure.align-center {
text-align: center
}
+1
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+2042
View File
File diff suppressed because it is too large Load Diff
+6
View File
File diff suppressed because one or more lines are too long
+389
View File
@@ -0,0 +1,389 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HADevice class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAMqtt class" href="ha-mqtt.html" />
<link rel="prev" title="Core API" href="index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Core API</a> &raquo;</li>
<li>HADevice class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Core API</a>
</li>
<li class="next">
<a href="ha-mqtt.html"
title="next chapter">HAMqtt class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hadevice-class">
<h1>HADevice class<a class="headerlink" href="#hadevice-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HADevice">
<span id="_CPPv38HADevice"></span><span id="_CPPv28HADevice"></span><span id="HADevice"></span><span class="target" id="class_h_a_device"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HADevice</span></span></span><a class="headerlink" href="#_CPPv48HADevice" title="Permalink to this definition"></a><br /></dt>
<dd><p>This class represents your device that’s going to be registered in the Home Assistant devices registry. Each entity (<a class="reference internal" href="../device-types/ha-binary-sensor.html#class_h_a_binary_sensor"><span class="std std-ref">HABinarySensor</span></a>, <a class="reference internal" href="../device-types/ha-sensor.html#class_h_a_sensor"><span class="std std-ref">HASensor</span></a>, etc.) that you use will be owned by this device. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice8HADeviceEv">
<span id="_CPPv3N8HADevice8HADeviceEv"></span><span id="_CPPv2N8HADevice8HADeviceEv"></span><span id="HADevice::HADevice"></span><span class="target" id="class_h_a_device_1a6921f99bb21a59aef8e4a8288b8ee599"></span><span class="sig-name descname"><span class="n"><span class="pre">HADevice</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice8HADeviceEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Constructs <a class="reference internal" href="#class_h_a_device"><span class="std std-ref">HADevice</span></a> without the unique ID.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You will need to set the ID using <a class="reference internal" href="#class_h_a_device_1a8d10a57aa14007643ccdecd7c1a372a5"><span class="std std-ref">HADevice::setUniqueId</span></a> method. Otherwise none of the entities will work. </p>
</div>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice8HADeviceEPKc">
<span id="_CPPv3N8HADevice8HADeviceEPKc"></span><span id="_CPPv2N8HADevice8HADeviceEPKc"></span><span id="HADevice::HADevice__cCP"></span><span class="target" id="class_h_a_device_1a74583bbf58825f6110332a2b30365ad5"></span><span class="sig-name descname"><span class="n"><span class="pre">HADevice</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice8HADeviceEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Constructs <a class="reference internal" href="#class_h_a_device"><span class="std std-ref">HADevice</span></a> with the given unique ID (string). Keep the unique ID short to save the memory.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – String with the null terminator. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t">
<span id="_CPPv3N8HADevice8HADeviceEPK4byteK8uint16_t"></span><span id="_CPPv2N8HADevice8HADeviceEPK4byteK8uint16_t"></span><span id="HADevice::HADevice__byteCP.uint16_tC"></span><span class="target" id="class_h_a_device_1a9b6c1f247492c3398a0709a579571f71"></span><span class="sig-name descname"><span class="n"><span class="pre">HADevice</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">byte</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice8HADeviceEPK4byteK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Constructs <a class="reference internal" href="#class_h_a_device"><span class="std std-ref">HADevice</span></a> using the given byte array as the unique ID. It works in the same way as <a class="reference internal" href="#class_h_a_device_1a8d10a57aa14007643ccdecd7c1a372a5"><span class="std std-ref">HADevice::setUniqueId</span></a> method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – Bytes array that’s going to be converted into the string. </p></li>
<li><p><strong>length</strong> – Number of bytes in the array. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADeviceD0Ev">
<span id="_CPPv3N8HADeviceD0Ev"></span><span id="_CPPv2N8HADeviceD0Ev"></span><span id="HADevice::~HADevice"></span><span class="target" id="class_h_a_device_1a8b2977b5a5f38a4451af6141003e85d6"></span><span class="sig-name descname"><span class="n"><span class="pre">~HADevice</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADeviceD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd><p>Deletes <a class="reference internal" href="../utils/ha-serializer.html#class_h_a_serializer"><span class="std std-ref">HASerializer</span></a> and the availability topic if the shared availability was enabled. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice11getUniqueIdEv">
<span id="_CPPv3NK8HADevice11getUniqueIdEv"></span><span id="_CPPv2NK8HADevice11getUniqueIdEv"></span><span id="HADevice::getUniqueIdC"></span><span class="target" id="class_h_a_device_1af48f9fb916963e1883facb0c5b27bab7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getUniqueId</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice11getUniqueIdEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns pointer to the unique ID. It can be nullptr if the device has no ID assigned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice13getSerializerEv">
<span id="_CPPv3NK8HADevice13getSerializerEv"></span><span id="_CPPv2NK8HADevice13getSerializerEv"></span><span id="HADevice::getSerializerC"></span><span class="target" id="class_h_a_device_1afec11cd2585283d90778ec5c28ebe11c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-serializer.html#_CPPv412HASerializer" title="HASerializer"><span class="n"><span class="pre">HASerializer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice13getSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the instance of the <a class="reference internal" href="../utils/ha-serializer.html#class_h_a_serializer"><span class="std std-ref">HASerializer</span></a> used by the device. This method is used by all entities to serialize device’s representation. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice27isSharedAvailabilityEnabledEv">
<span id="_CPPv3NK8HADevice27isSharedAvailabilityEnabledEv"></span><span id="_CPPv2NK8HADevice27isSharedAvailabilityEnabledEv"></span><span id="HADevice::isSharedAvailabilityEnabledC"></span><span class="target" id="class_h_a_device_1abccb58cd260e89069c0e640b27111680"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isSharedAvailabilityEnabled</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice27isSharedAvailabilityEnabledEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns true if the shared availability is enabled for the device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice20getAvailabilityTopicEv">
<span id="_CPPv3NK8HADevice20getAvailabilityTopicEv"></span><span id="_CPPv2NK8HADevice20getAvailabilityTopicEv"></span><span id="HADevice::getAvailabilityTopicC"></span><span class="target" id="class_h_a_device_1ab508af42eb1fc0573a89afa3b92645fe"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getAvailabilityTopic</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice20getAvailabilityTopicEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns availability topic generated by the <a class="reference internal" href="#class_h_a_device_1a24e9d95ec7ca2397945c4d1b8d3be3f2"><span class="std std-ref">HADevice::enableSharedAvailability</span></a> method. It can be nullptr if the shared availability is not enabled. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice11isAvailableEv">
<span id="_CPPv3NK8HADevice11isAvailableEv"></span><span id="_CPPv2NK8HADevice11isAvailableEv"></span><span id="HADevice::isAvailableC"></span><span class="target" id="class_h_a_device_1afda59cc1d82dc5fa98cde5b1f4b9af0b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isAvailable</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice11isAvailableEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns online/offline state of the device. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t">
<span id="_CPPv3N8HADevice11setUniqueIdEPK4byteK8uint16_t"></span><span id="_CPPv2N8HADevice11setUniqueIdEPK4byteK8uint16_t"></span><span id="HADevice::setUniqueId__byteCP.uint16_tC"></span><span class="target" id="class_h_a_device_1a8d10a57aa14007643ccdecd7c1a372a5"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setUniqueId</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">byte</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice11setUniqueIdEPK4byteK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>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.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The unique ID can be set only once (via constructor or using this method). </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – Bytes array that’s going to be converted into the string. </p></li>
<li><p><strong>length</strong> – Number of bytes in the array. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice15setManufacturerEPKc">
<span id="_CPPv3N8HADevice15setManufacturerEPKc"></span><span id="_CPPv2N8HADevice15setManufacturerEPKc"></span><span id="HADevice::setManufacturer__cCP"></span><span class="target" id="class_h_a_device_1aac0e57509fafeaa1fc4edaabfd1f8c00"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setManufacturer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">manufacturer</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice15setManufacturerEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the “manufacturer” property that’s going to be displayed in the Home Assistant.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>manufacturer</strong> – Any string. Keep it short to save the memory. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice8setModelEPKc">
<span id="_CPPv3N8HADevice8setModelEPKc"></span><span id="_CPPv2N8HADevice8setModelEPKc"></span><span id="HADevice::setModel__cCP"></span><span class="target" id="class_h_a_device_1ace75ab3fe59304ce44a956bff0f4145b"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setModel</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">model</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice8setModelEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the “model” property that’s going to be displayed in the Home Assistant.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>model</strong> – Any string. Keep it short to save the memory. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice7setNameEPKc">
<span id="_CPPv3N8HADevice7setNameEPKc"></span><span id="_CPPv2N8HADevice7setNameEPKc"></span><span id="HADevice::setName__cCP"></span><span class="target" id="class_h_a_device_1a439227a1e73175bb9f2177e39f0ac7ac"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setName</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice7setNameEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the “name” property that’s going to be displayed in the Home Assistant.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> – Any string. Keep it short to save the memory. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice18setSoftwareVersionEPKc">
<span id="_CPPv3N8HADevice18setSoftwareVersionEPKc"></span><span id="_CPPv2N8HADevice18setSoftwareVersionEPKc"></span><span id="HADevice::setSoftwareVersion__cCP"></span><span class="target" id="class_h_a_device_1a935e9d844b8727e54873cd38b56d04ef"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setSoftwareVersion</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">softwareVersion</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice18setSoftwareVersionEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the “software version” property that’s going to be displayed in the Home Assistant.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>softwareVersion</strong> – Any string. Keep it short to save the memory. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice15setAvailabilityEb">
<span id="_CPPv3N8HADevice15setAvailabilityEb"></span><span id="_CPPv2N8HADevice15setAvailabilityEb"></span><span id="HADevice::setAvailability__b"></span><span class="target" id="class_h_a_device_1a3eac570f51a76789f0564714166c674a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setAvailability</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">online</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice15setAvailabilityEb" title="Permalink to this definition"></a><br /></dt>
<dd><p>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.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>online</strong> – Set to true if the device should be displayed as available in the HA panel. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice24enableSharedAvailabilityEv">
<span id="_CPPv3N8HADevice24enableSharedAvailabilityEv"></span><span id="_CPPv2N8HADevice24enableSharedAvailabilityEv"></span><span id="HADevice::enableSharedAvailability"></span><span class="target" id="class_h_a_device_1a24e9d95ec7ca2397945c4d1b8d3be3f2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">enableSharedAvailability</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice24enableSharedAvailabilityEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Enables the shared availability feature. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice14enableLastWillEv">
<span id="_CPPv3N8HADevice14enableLastWillEv"></span><span id="_CPPv2N8HADevice14enableLastWillEv"></span><span id="HADevice::enableLastWill"></span><span class="target" id="class_h_a_device_1a0a76aeef43b5f868b009ff85737ff070"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">enableLastWill</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HADevice14enableLastWillEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Enables MQTT LWT feature. Please note that the shared availability needs to be enabled first. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HADevice19publishAvailabilityEv">
<span id="_CPPv3NK8HADevice19publishAvailabilityEv"></span><span id="_CPPv2NK8HADevice19publishAvailabilityEv"></span><span id="HADevice::publishAvailabilityC"></span><span class="target" id="class_h_a_device_1a802ca77511d46ffb7f1f1b7f3cea2113"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishAvailability</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HADevice19publishAvailabilityEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes current availability of the device on the availability topic. If the device is not connected to an MQTT broker or the shared availability is not enabled then nothing happens. This method is called by the <a class="reference internal" href="ha-mqtt.html#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> when the connection to an MQTT broker is acquired. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice9_uniqueIdE">
<span id="_CPPv3N8HADevice9_uniqueIdE"></span><span id="_CPPv2N8HADevice9_uniqueIdE"></span><span id="HADevice::_uniqueId__cCP"></span><span class="target" id="class_h_a_device_1a216ecf832d93f5f17f0f38696abe6826"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_uniqueId</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice9_uniqueIdE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The unique ID of the device. It can be a memory allocated by <a class="reference internal" href="#class_h_a_device_1a8d10a57aa14007643ccdecd7c1a372a5"><span class="std std-ref">HADevice::setUniqueId</span></a> method. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice13_ownsUniqueIdE">
<span id="_CPPv3N8HADevice13_ownsUniqueIdE"></span><span id="_CPPv2N8HADevice13_ownsUniqueIdE"></span><span id="HADevice::_ownsUniqueId__b"></span><span class="target" id="class_h_a_device_1a11ad6382b7677eccf237a3bb5909b337"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_ownsUniqueId</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice13_ownsUniqueIdE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether <a class="reference internal" href="#class_h_a_device"><span class="std std-ref">HADevice</span></a> class owns the _uniqueId pointer. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice11_serializerE">
<span id="_CPPv3N8HADevice11_serializerE"></span><span id="_CPPv2N8HADevice11_serializerE"></span><span id="HADevice::_serializer__HASerializerP"></span><span class="target" id="class_h_a_device_1a765b60fc68b47dbdc7a5c9b2d6c8d336"></span><a class="reference internal" href="../utils/ha-serializer.html#_CPPv412HASerializer" title="HASerializer"><span class="n"><span class="pre">HASerializer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_serializer</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice11_serializerE" title="Permalink to this definition"></a><br /></dt>
<dd><p>JSON serializer of the <a class="reference internal" href="#class_h_a_device"><span class="std std-ref">HADevice</span></a> class. It’s allocated in the constructor. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice18_availabilityTopicE">
<span id="_CPPv3N8HADevice18_availabilityTopicE"></span><span id="_CPPv2N8HADevice18_availabilityTopicE"></span><span id="HADevice::_availabilityTopic__cP"></span><span class="target" id="class_h_a_device_1ad7001e265f4ed32a1bf353f3a9112177"></span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_availabilityTopic</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice18_availabilityTopicE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The availability topic allocated by <a class="reference internal" href="#class_h_a_device_1a24e9d95ec7ca2397945c4d1b8d3be3f2"><span class="std std-ref">HADevice::enableSharedAvailability</span></a> method. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice19_sharedAvailabilityE">
<span id="_CPPv3N8HADevice19_sharedAvailabilityE"></span><span id="_CPPv2N8HADevice19_sharedAvailabilityE"></span><span id="HADevice::_sharedAvailability__b"></span><span class="target" id="class_h_a_device_1a6bf1a602142a683299cb395f7c0039a9"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_sharedAvailability</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice19_sharedAvailabilityE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether the shared availability is enabled. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HADevice10_availableE">
<span id="_CPPv3N8HADevice10_availableE"></span><span id="_CPPv2N8HADevice10_availableE"></span><span id="HADevice::_available__b"></span><span class="target" id="class_h_a_device_1ae5e8765277a6474a30b1d061fd881d43"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_available</span></span></span><a class="headerlink" href="#_CPPv4N8HADevice10_availableE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether the device is available (online / offline). </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Core API</a>
</li>
<li class="next">
<a href="ha-mqtt.html"
title="next chapter">HAMqtt class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+625
View File
@@ -0,0 +1,625 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HAMqtt class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Device types API" href="../device-types/index.html" />
<link rel="prev" title="HADevice class" href="ha-device.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Core API</a> &raquo;</li>
<li>HAMqtt class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-device.html"
title="previous chapter">← HADevice class</a>
</li>
<li class="next">
<a href="../device-types/index.html"
title="next chapter">Device types API →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hamqtt-class">
<h1>HAMqtt class<a class="headerlink" href="#hamqtt-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv46HAMqtt">
<span id="_CPPv36HAMqtt"></span><span id="_CPPv26HAMqtt"></span><span id="HAMqtt"></span><span class="target" id="class_h_a_mqtt"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAMqtt</span></span></span><a class="headerlink" href="#_CPPv46HAMqtt" title="Permalink to this definition"></a><br /></dt>
<dd><p>This class is a wrapper for the PubSub API. It’s a central point of the library where instances of all device types are stored. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t">
<span id="_CPPv3N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t"></span><span id="_CPPv2N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t"></span><span id="HAMqtt::HAMqtt__ClientR.HADeviceR.uint8_tC"></span><span class="target" id="class_h_a_mqtt_1a336b9511591544e2642451aae3c174fd"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAMqtt</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">Client</span></span><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">netClient</span></span>, <a class="reference internal" href="ha-device.html#_CPPv48HADevice" title="HADevice"><span class="n"><span class="pre">HADevice</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">device</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">maxDevicesTypesNb</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">6</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt6HAMqttER6ClientR8HADeviceK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates a new instance of the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. Please note that only one instance of the class can be initialized at the same time.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>netClient</strong> – The EthernetClient or WiFiClient that’s going to be used for the network communication. </p></li>
<li><p><strong>device</strong> – An instance of the <a class="reference internal" href="ha-device.html#class_h_a_device"><span class="std std-ref">HADevice</span></a> class representing your device. </p></li>
<li><p><strong>maxDevicesTypesNb</strong> – The maximum number of device types (sensors, switches, etc.) that you’re going to implement. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqttD0Ev">
<span id="_CPPv3N6HAMqttD0Ev"></span><span id="_CPPv2N6HAMqttD0Ev"></span><span id="HAMqtt::~HAMqtt"></span><span class="target" id="class_h_a_mqtt_1a0fe962c9910705eceec4c6140af5ab34"></span><span class="sig-name descname"><span class="n"><span class="pre">~HAMqtt</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqttD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd><p>Removes singleton of the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc">
<span id="_CPPv3N6HAMqtt18setDiscoveryPrefixEPKc"></span><span id="_CPPv2N6HAMqtt18setDiscoveryPrefixEPKc"></span><span id="HAMqtt::setDiscoveryPrefix__cCP"></span><span class="target" id="class_h_a_mqtt_1ac2fdb3809d982943d93fa25b1e52f602"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDiscoveryPrefix</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">prefix</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt18setDiscoveryPrefixEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the prefix of the Home Assistant discovery topics. It needs to match the prefix set in the HA admin panel. The default prefix is “homeassistant”.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>prefix</strong> – The discovery topics’ prefix. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK6HAMqtt18getDiscoveryPrefixEv">
<span id="_CPPv3NK6HAMqtt18getDiscoveryPrefixEv"></span><span id="_CPPv2NK6HAMqtt18getDiscoveryPrefixEv"></span><span id="HAMqtt::getDiscoveryPrefixC"></span><span class="target" id="class_h_a_mqtt_1aa9dd119e662c89ff5280402bca56a2e3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getDiscoveryPrefix</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK6HAMqtt18getDiscoveryPrefixEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the discovery topics’ prefix. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt13setDataPrefixEPKc">
<span id="_CPPv3N6HAMqtt13setDataPrefixEPKc"></span><span id="_CPPv2N6HAMqtt13setDataPrefixEPKc"></span><span id="HAMqtt::setDataPrefix__cCP"></span><span class="target" id="class_h_a_mqtt_1a4748e8afb6d7f76828a7a6921db96fa8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDataPrefix</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">prefix</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt13setDataPrefixEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets prefix of the data topics. It may be useful if you want to pass MQTT traffic through a bridge. The default prefix is “aha”.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>prefix</strong> – The data topics’ prefix. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK6HAMqtt13getDataPrefixEv">
<span id="_CPPv3NK6HAMqtt13getDataPrefixEv"></span><span id="_CPPv2NK6HAMqtt13getDataPrefixEv"></span><span id="HAMqtt::getDataPrefixC"></span><span class="target" id="class_h_a_mqtt_1a05d9e73b772974a8bbb1b794308b21af"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getDataPrefix</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK6HAMqtt13getDataPrefixEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the data topics’ prefix. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK6HAMqtt9getDeviceEv">
<span id="_CPPv3NK6HAMqtt9getDeviceEv"></span><span id="_CPPv2NK6HAMqtt9getDeviceEv"></span><span id="HAMqtt::getDeviceC"></span><span class="target" id="class_h_a_mqtt_1afbb64f2068f00dfd5450f46bbda43092"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="ha-device.html#_CPPv48HADevice" title="HADevice"><span class="n"><span class="pre">HADevice</span></span></a><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getDevice</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK6HAMqtt9getDeviceEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns instance of the device assigned to the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. It’s the same object (pointer) that was passed to the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> constructor. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE">
<span id="_CPPv3N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE"></span><span id="_CPPv2N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE"></span><span class="target" id="class_h_a_mqtt_1a292b419488b88088d6c383650082387b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMessage</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">topic</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">payload</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">length</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt9onMessageEPFvPKcPK7uint8_t8uint16_tE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers a new callback method that will be called when the device receives an MQTT message. Please note that the callback is also fired by internal MQTT messages used by the library. You should always verify the topic of the received message.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – Callback method. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt11onConnectedEPFvvE">
<span id="_CPPv3N6HAMqtt11onConnectedEPFvvE"></span><span id="_CPPv2N6HAMqtt11onConnectedEPFvvE"></span><span class="target" id="class_h_a_mqtt_1a2f1500869d7afc5979b0d0b4f9c6214e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onConnected</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt11onConnectedEPFvvE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers a new callback method that will be called each time a connection to the MQTT broker is acquired. The callback is also fired after reconnecting to the broker. You can use this method to register topics’ subscriptions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – Callback method. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc">
<span id="_CPPv3N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc"></span><span id="_CPPv2N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc"></span><span id="HAMqtt::begin__IPAddressC.uint16_tC.cCP.cCP"></span><span class="target" id="class_h_a_mqtt_1ae4e2ebb17afaeef26d98c69d6a9e5cbb"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">begin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IPAddress</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">serverIp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">serverPort</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1883</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">username</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">nullptr</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">password</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">nullptr</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt5beginEK9IPAddressK8uint16_tPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>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. Please note that the library automatically reconnects to the broker if connection is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverIp</strong> – IP address of the MQTT broker. </p></li>
<li><p><strong>serverPort</strong> – Port of the MQTT broker. </p></li>
<li><p><strong>username</strong> – Username for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
<li><p><strong>password</strong> – Password for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc">
<span id="_CPPv3N6HAMqtt5beginEK9IPAddressPKcPKc"></span><span id="_CPPv2N6HAMqtt5beginEK9IPAddressPKcPKc"></span><span id="HAMqtt::begin__IPAddressC.cCP.cCP"></span><span class="target" id="class_h_a_mqtt_1ab65462ce00b7ffe5f7a89546cfcf6e0a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">begin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">IPAddress</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">serverIp</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">username</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">password</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt5beginEK9IPAddressPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets parameters of the MQTT connection using the IP address and the default port (1883). The library will try to connect to the broker in first loop cycle. Please note that the library automatically reconnects to the broker if connection is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverIp</strong> – IP address of the MQTT broker. </p></li>
<li><p><strong>username</strong> – Username for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
<li><p><strong>password</strong> – Password for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc">
<span id="_CPPv3N6HAMqtt5beginEPKcK8uint16_tPKcPKc"></span><span id="_CPPv2N6HAMqtt5beginEPKcK8uint16_tPKcPKc"></span><span id="HAMqtt::begin__cCP.uint16_tC.cCP.cCP"></span><span class="target" id="class_h_a_mqtt_1aba23dd28916d4fbb992ae7093996ed31"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">begin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">serverHostname</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">serverPort</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">1883</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">username</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">nullptr</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">password</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">nullptr</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt5beginEPKcK8uint16_tPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets parameters of the MQTT connection using the hostname and port. The library will try to connect to the broker in first loop cycle. Please note that the library automatically reconnects to the broker if connection is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverHostname</strong> – Hostname of the MQTT broker. </p></li>
<li><p><strong>serverPort</strong> – Port of the MQTT broker. </p></li>
<li><p><strong>username</strong> – Username for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
<li><p><strong>password</strong> – Password for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt5beginEPKcPKcPKc">
<span id="_CPPv3N6HAMqtt5beginEPKcPKcPKc"></span><span id="_CPPv2N6HAMqtt5beginEPKcPKcPKc"></span><span id="HAMqtt::begin__cCP.cCP.cCP"></span><span class="target" id="class_h_a_mqtt_1a71a3994483d5f5dee93e6017aea1737c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">begin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">serverHostname</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">username</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">password</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt5beginEPKcPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets parameters of the MQTT connection using the hostname and the default port (1883). The library will try to connect to the broker in first loop cycle. Please note that the library automatically reconnects to the broker if connection is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>serverHostname</strong> – Hostname of the MQTT broker. </p></li>
<li><p><strong>username</strong> – Username for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
<li><p><strong>password</strong> – Password for authentication. It can be nullptr if the anonymous connection needs to be performed. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt10disconnectEv">
<span id="_CPPv3N6HAMqtt10disconnectEv"></span><span id="_CPPv2N6HAMqtt10disconnectEv"></span><span id="HAMqtt::disconnect"></span><span class="target" id="class_h_a_mqtt_1a02e55450818a9a59334bdd9fa0c491e9"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">disconnect</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt10disconnectEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Closes the MQTT connection. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt4loopEv">
<span id="_CPPv3N6HAMqtt4loopEv"></span><span id="_CPPv2N6HAMqtt4loopEv"></span><span id="HAMqtt::loop"></span><span class="target" id="class_h_a_mqtt_1a401a1de191b0dff10d8d80b4d15d92a1"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">loop</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt4loopEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>This method should be called periodically inside the main loop of the firmware. It’s safe to call this method in some interval (like 5ms). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK6HAMqtt11isConnectedEv">
<span id="_CPPv3NK6HAMqtt11isConnectedEv"></span><span id="_CPPv2NK6HAMqtt11isConnectedEv"></span><span id="HAMqtt::isConnectedC"></span><span class="target" id="class_h_a_mqtt_1adef13bd12ec58ab542ca99a74456e65b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK6HAMqtt11isConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns true if connection to the MQTT broker is established. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType">
<span id="_CPPv3N6HAMqtt13addDeviceTypeEP16HABaseDeviceType"></span><span id="_CPPv2N6HAMqtt13addDeviceTypeEP16HABaseDeviceType"></span><span id="HAMqtt::addDeviceType__HABaseDeviceTypeP"></span><span class="target" id="class_h_a_mqtt_1a4f732ac5fd2f5cfc0e6256853adc08f9"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">addDeviceType</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="../device-types/ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceType</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt13addDeviceTypeEP16HABaseDeviceType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Adds a new device’s type to the MQTT. Each time the connection with MQTT broker is acquired, the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class calls “onMqttConnected” method in all devices’ types instances.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class doesn’t take ownership of the given pointer. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceType</strong> – Instance of the device’s type (<a class="reference internal" href="../device-types/ha-switch.html#class_h_a_switch"><span class="std std-ref">HASwitch</span></a>, <a class="reference internal" href="../device-types/ha-binary-sensor.html#class_h_a_binary_sensor"><span class="std std-ref">HABinarySensor</span></a>, etc.). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt7publishEPKcPKcb">
<span id="_CPPv3N6HAMqtt7publishEPKcPKcb"></span><span id="_CPPv2N6HAMqtt7publishEPKcPKcb"></span><span id="HAMqtt::publish__cCP.cCP.b"></span><span class="target" id="class_h_a_mqtt_1ad9284e4d99ac26d7fd212690aacd6b71"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publish</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retained</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt7publishEPKcPKcb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with given topic and payload. Message won’t be published if the connection with the MQTT broker is not established. In this case method returns false.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – The topic to publish. </p></li>
<li><p><strong>payload</strong> – The payload to publish (it may be empty const char). </p></li>
<li><p><strong>retained</strong> – Specifies whether message should be retained. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb">
<span id="_CPPv3N6HAMqtt12beginPublishEPKc8uint16_tb"></span><span id="_CPPv2N6HAMqtt12beginPublishEPKc8uint16_tb"></span><span id="HAMqtt::beginPublish__cCP.uint16_t.b"></span><span class="target" id="class_h_a_mqtt_1a2652787f2c681505d473cb6ed20f0261"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">beginPublish</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">payloadLength</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retained</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt12beginPublishEPKc8uint16_tb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Begins publishing of a message with the given properties. When this method returns true the payload can be written using <a class="reference internal" href="#class_h_a_mqtt_1a811d6b2325ede9e865b6ed9eddb38fcb"><span class="std std-ref">HAMqtt::writePayload</span></a> method.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – Topic of the published message. </p></li>
<li><p><strong>payloadLength</strong> – Length of the payload (bytes) that’s going to be published. </p></li>
<li><p><strong>retained</strong> – Specifies whether the published message should be retained. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t">
<span id="_CPPv3N6HAMqtt12writePayloadEPKcK8uint16_t"></span><span id="_CPPv2N6HAMqtt12writePayloadEPKcK8uint16_t"></span><span id="HAMqtt::writePayload__cCP.uint16_tC"></span><span class="target" id="class_h_a_mqtt_1a811d6b2325ede9e865b6ed9eddb38fcb"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">writePayload</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt12writePayloadEPKcK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Writes given string to the TCP stream. Please note that before writing any data the <a class="reference internal" href="#class_h_a_mqtt_1a2652787f2c681505d473cb6ed20f0261"><span class="std std-ref">HAMqtt::beginPublish</span></a> method needs to be called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> – The string to publish. </p></li>
<li><p><strong>length</strong> – Length of the data (bytes). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t">
<span id="_CPPv3N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t"></span><span id="HAMqtt::writePayload__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_mqtt_1a52bff8cfb82f418cb6cc345beb19c763"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">writePayload</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt12writePayloadEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Writes given data to the TCP stream. Please note that before writing any data the <a class="reference internal" href="#class_h_a_mqtt_1a2652787f2c681505d473cb6ed20f0261"><span class="std std-ref">HAMqtt::beginPublish</span></a> method needs to be called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> – The data to publish. </p></li>
<li><p><strong>length</strong> – Length of the data (bytes). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper">
<span id="_CPPv3N6HAMqtt12writePayloadEPK19__FlashStringHelper"></span><span id="_CPPv2N6HAMqtt12writePayloadEPK19__FlashStringHelper"></span><span id="HAMqtt::writePayload____FlashStringHelperCP"></span><span class="target" id="class_h_a_mqtt_1aa0643709c95e23be39283a5430526ae1"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">writePayload</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt12writePayloadEPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Writes given progmem data to the TCP stream. Please note that before writing any data the <a class="reference internal" href="#class_h_a_mqtt_1a2652787f2c681505d473cb6ed20f0261"><span class="std std-ref">HAMqtt::beginPublish</span></a> method needs to be called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>data</strong> – Progmem data to publish. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt10endPublishEv">
<span id="_CPPv3N6HAMqtt10endPublishEv"></span><span id="_CPPv2N6HAMqtt10endPublishEv"></span><span id="HAMqtt::endPublish"></span><span class="target" id="class_h_a_mqtt_1aae5c2ccb16731730962f3519f5612d1f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">endPublish</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt10endPublishEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Finishes publishing of a message. After calling this method the message will be processed by the broker. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt9subscribeEPKc">
<span id="_CPPv3N6HAMqtt9subscribeEPKc"></span><span id="_CPPv2N6HAMqtt9subscribeEPKc"></span><span id="HAMqtt::subscribe__cCP"></span><span class="target" id="class_h_a_mqtt_1aa7bd61b1dc02b3117bc60496fe40e252"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">subscribe</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt9subscribeEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Subscribes to the given topic. Whenever a new message is received the onMqttMessage callback in all devices types is called.</p>
<p>Please note that you need to subscribe topic each time the connection with the broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>topic</strong> – Topic to subscribe. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt11setLastWillEPKcPKcb">
<span id="_CPPv3N6HAMqtt11setLastWillEPKcPKcb"></span><span id="_CPPv2N6HAMqtt11setLastWillEPKcPKcb"></span><span id="HAMqtt::setLastWill__cCP.cCP.b"></span><span class="target" id="class_h_a_mqtt_1a87c9c08db323a22e065bfa6762a94732"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setLastWill</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lastWillTopic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">lastWillMessage</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">lastWillRetain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt11setLastWillEPKcPKcb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Enables the last will message that will be produced when the device disconnects from the broker. If you want to change availability of the device in Home Assistant panel please use enableLastWill() method from the <a class="reference internal" href="ha-device.html#class_h_a_device"><span class="std std-ref">HADevice</span></a> class instead.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>lastWillTopic</strong> – The topic to publish. </p></li>
<li><p><strong>lastWillMessage</strong> – The message (payload) to publish. </p></li>
<li><p><strong>lastWillRetain</strong> – Specifies whether the published message should be retained. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t">
<span id="_CPPv3N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t"></span><span id="_CPPv2N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t"></span><span id="HAMqtt::processMessage__cCP.uint8_tCP.uint16_t"></span><span class="target" id="class_h_a_mqtt_1a0d5d7ee57697e2d40773e45237f5d8a8"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">processMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt14processMessageEPKcPK7uint8_t8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Processes MQTT message received from the broker (subscription).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Do not use this method on your own. It’s only for the internal purpose. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – Topic of the message. </p></li>
<li><p><strong>payload</strong> – Content of the message. </p></li>
<li><p><strong>length</strong> – Length of the message. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt8instanceEv">
<span id="_CPPv3N6HAMqtt8instanceEv"></span><span id="_CPPv2N6HAMqtt8instanceEv"></span><span id="HAMqtt::instance"></span><span class="target" id="class_h_a_mqtt_1ac87ae19dad989427104e17fd231d873b"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv46HAMqtt" title="HAMqtt"><span class="n"><span class="pre">HAMqtt</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">instance</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt8instanceEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns existing instance (singleton) of the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. It may be a null pointer if the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> object was never constructed or it was destroyed. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt15connectToServerEv">
<span id="_CPPv3N6HAMqtt15connectToServerEv"></span><span id="_CPPv2N6HAMqtt15connectToServerEv"></span><span id="HAMqtt::connectToServer"></span><span class="target" id="class_h_a_mqtt_1af9120dc0b0d01da62e27f8c06443d9ee"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">connectToServer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt15connectToServerEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Attempts to connect to the MQTT broker. The method uses properties passed to the “begin” method. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt16onConnectedLogicEv">
<span id="_CPPv3N6HAMqtt16onConnectedLogicEv"></span><span id="_CPPv2N6HAMqtt16onConnectedLogicEv"></span><span id="HAMqtt::onConnectedLogic"></span><span class="target" id="class_h_a_mqtt_1a1807092f4e3e7d0e5d67665a9df6b50e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onConnectedLogic</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HAMqtt16onConnectedLogicEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>This method is called each time the connection with MQTT broker is acquired. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt5_mqttE">
<span id="_CPPv3N6HAMqtt5_mqttE"></span><span id="_CPPv2N6HAMqtt5_mqttE"></span><span id="HAMqtt::_mqtt__PubSubClientP"></span><span class="target" id="class_h_a_mqtt_1a57b7cb6bf250d94891cc983ce15724ba"></span><span class="n"><span class="pre">PubSubClient</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_mqtt</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt5_mqttE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Instance of the PubSubClient class. It’s initialized in the constructor. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt7_deviceE">
<span id="_CPPv3N6HAMqtt7_deviceE"></span><span id="_CPPv2N6HAMqtt7_deviceE"></span><span id="HAMqtt::_device__HADeviceCR"></span><span class="target" id="class_h_a_mqtt_1a6e56d8bb0fa5f7f54695a02058241a03"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="ha-device.html#_CPPv48HADevice" title="HADevice"><span class="n"><span class="pre">HADevice</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">_device</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt7_deviceE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Instance of the <a class="reference internal" href="ha-device.html#class_h_a_device"><span class="std std-ref">HADevice</span></a> passed to the constructor. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt16_messageCallbackE">
<span id="_CPPv3N6HAMqtt16_messageCallbackE"></span><span id="_CPPv2N6HAMqtt16_messageCallbackE"></span><span class="target" id="class_h_a_mqtt_1a5d6560a89db3dbbb8779d5620c1625b1"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_messageCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">topic</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">payload</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">length</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N6HAMqtt16_messageCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback method that will be called when an MQTT message is received. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt18_connectedCallbackE">
<span id="_CPPv3N6HAMqtt18_connectedCallbackE"></span><span id="_CPPv2N6HAMqtt18_connectedCallbackE"></span><span class="target" id="class_h_a_mqtt_1a1d995685821259e8826a38c9dd613624"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_connectedCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N6HAMqtt18_connectedCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback method that will be called when the MQTT connection is acquired. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt12_initializedE">
<span id="_CPPv3N6HAMqtt12_initializedE"></span><span id="_CPPv2N6HAMqtt12_initializedE"></span><span id="HAMqtt::_initialized__b"></span><span class="target" id="class_h_a_mqtt_1ab5342ef2fc66956a2de96f1b8ad9453b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_initialized</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt12_initializedE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether the <a class="reference internal" href="#class_h_a_mqtt_1ae4e2ebb17afaeef26d98c69d6a9e5cbb"><span class="std std-ref">HAMqtt::begin</span></a> method was ever called. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt16_discoveryPrefixE">
<span id="_CPPv3N6HAMqtt16_discoveryPrefixE"></span><span id="_CPPv2N6HAMqtt16_discoveryPrefixE"></span><span id="HAMqtt::_discoveryPrefix__cCP"></span><span class="target" id="class_h_a_mqtt_1a6b5634934dd7f869827e0e9787cc923b"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_discoveryPrefix</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt16_discoveryPrefixE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Teh discovery prefix that’s used for the configuration messages. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt11_dataPrefixE">
<span id="_CPPv3N6HAMqtt11_dataPrefixE"></span><span id="_CPPv2N6HAMqtt11_dataPrefixE"></span><span id="HAMqtt::_dataPrefix__cCP"></span><span class="target" id="class_h_a_mqtt_1a0eaa407bc053ce60dc9e3538b5eda33d"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_dataPrefix</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt11_dataPrefixE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The data prefix that’s used for publishing data messages. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt9_usernameE">
<span id="_CPPv3N6HAMqtt9_usernameE"></span><span id="_CPPv2N6HAMqtt9_usernameE"></span><span id="HAMqtt::_username__cCP"></span><span class="target" id="class_h_a_mqtt_1a63cf9998617bb105ae1b8f1d5c7f9b83"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_username</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt9_usernameE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The username used for the authentication. It’s set in the <a class="reference internal" href="#class_h_a_mqtt_1ae4e2ebb17afaeef26d98c69d6a9e5cbb"><span class="std std-ref">HAMqtt::begin</span></a> method. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt9_passwordE">
<span id="_CPPv3N6HAMqtt9_passwordE"></span><span id="_CPPv2N6HAMqtt9_passwordE"></span><span id="HAMqtt::_password__cCP"></span><span class="target" id="class_h_a_mqtt_1addbd5b92bf3e8221a371da17c9dd84b6"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_password</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt9_passwordE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The password used for the authentication. It’s set in the <a class="reference internal" href="#class_h_a_mqtt_1ae4e2ebb17afaeef26d98c69d6a9e5cbb"><span class="std std-ref">HAMqtt::begin</span></a> method. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt24_lastConnectionAttemptAtE">
<span id="_CPPv3N6HAMqtt24_lastConnectionAttemptAtE"></span><span id="_CPPv2N6HAMqtt24_lastConnectionAttemptAtE"></span><span id="HAMqtt::_lastConnectionAttemptAt__uint32_t"></span><span class="target" id="class_h_a_mqtt_1a952b96a82c83dba619fa58da2fea8d30"></span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_lastConnectionAttemptAt</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt24_lastConnectionAttemptAtE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Time of the last connection attemps (milliseconds since boot). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt15_devicesTypesNbE">
<span id="_CPPv3N6HAMqtt15_devicesTypesNbE"></span><span id="_CPPv2N6HAMqtt15_devicesTypesNbE"></span><span id="HAMqtt::_devicesTypesNb__uint8_t"></span><span class="target" id="class_h_a_mqtt_1a23c7fde803bbd366bcef3598c6bc0922"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_devicesTypesNb</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt15_devicesTypesNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The amount of registered devices types. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt18_maxDevicesTypesNbE">
<span id="_CPPv3N6HAMqtt18_maxDevicesTypesNbE"></span><span id="_CPPv2N6HAMqtt18_maxDevicesTypesNbE"></span><span id="HAMqtt::_maxDevicesTypesNb__uint8_t"></span><span class="target" id="class_h_a_mqtt_1ae55901464b8c51d6049e7a188f62db85"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_maxDevicesTypesNb</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt18_maxDevicesTypesNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum amount of devices types that can be registered. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt13_devicesTypesE">
<span id="_CPPv3N6HAMqtt13_devicesTypesE"></span><span id="_CPPv2N6HAMqtt13_devicesTypesE"></span><span id="HAMqtt::_devicesTypes__HABaseDeviceTypePP"></span><span class="target" id="class_h_a_mqtt_1afcb7e525178a8a333bacdc7a43809f5a"></span><a class="reference internal" href="../device-types/ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_devicesTypes</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt13_devicesTypesE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointers of all registered devices types (array of pointers). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt14_lastWillTopicE">
<span id="_CPPv3N6HAMqtt14_lastWillTopicE"></span><span id="_CPPv2N6HAMqtt14_lastWillTopicE"></span><span id="HAMqtt::_lastWillTopic__cCP"></span><span class="target" id="class_h_a_mqtt_1aeff807955fe75f78ef248bea4c6ca247"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_lastWillTopic</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt14_lastWillTopicE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The last will topic set by <a class="reference internal" href="#class_h_a_mqtt_1a87c9c08db323a22e065bfa6762a94732"><span class="std std-ref">HAMqtt::setLastWill</span></a>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt16_lastWillMessageE">
<span id="_CPPv3N6HAMqtt16_lastWillMessageE"></span><span id="_CPPv2N6HAMqtt16_lastWillMessageE"></span><span id="HAMqtt::_lastWillMessage__cCP"></span><span class="target" id="class_h_a_mqtt_1a5a167ab97688be446b70e3b16795423d"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_lastWillMessage</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt16_lastWillMessageE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The last will message set by <a class="reference internal" href="#class_h_a_mqtt_1a87c9c08db323a22e065bfa6762a94732"><span class="std std-ref">HAMqtt::setLastWill</span></a>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt15_lastWillRetainE">
<span id="_CPPv3N6HAMqtt15_lastWillRetainE"></span><span id="_CPPv2N6HAMqtt15_lastWillRetainE"></span><span id="HAMqtt::_lastWillRetain__b"></span><span class="target" id="class_h_a_mqtt_1a582a6cdd3ffde06aaf6c8e7de774f32c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_lastWillRetain</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt15_lastWillRetainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The last will retain set by <a class="reference internal" href="#class_h_a_mqtt_1a87c9c08db323a22e065bfa6762a94732"><span class="std std-ref">HAMqtt::setLastWill</span></a>. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-static-attributes">Private Static Attributes</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt17ReconnectIntervalE">
<span id="_CPPv3N6HAMqtt17ReconnectIntervalE"></span><span id="_CPPv2N6HAMqtt17ReconnectIntervalE"></span><span id="HAMqtt::ReconnectInterval__uint16_tC"></span><span class="target" id="class_h_a_mqtt_1a68a6a0d104024dcee5cf2534b419a035"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ReconnectInterval</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">5000</span></span><a class="headerlink" href="#_CPPv4N6HAMqtt17ReconnectIntervalE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Interval between MQTT reconnects (milliseconds). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HAMqtt9_instanceE">
<span id="_CPPv3N6HAMqtt9_instanceE"></span><span id="_CPPv2N6HAMqtt9_instanceE"></span><span id="HAMqtt::_instance__HAMqttP"></span><span class="target" id="class_h_a_mqtt_1af113d10f6167d4ab1f8baf908b774276"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv46HAMqtt" title="HAMqtt"><span class="n"><span class="pre">HAMqtt</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_instance</span></span></span><a class="headerlink" href="#_CPPv4N6HAMqtt9_instanceE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Living instance of the <a class="reference internal" href="#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. It can be nullptr. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-device.html"
title="previous chapter">← HADevice class</a>
</li>
<li class="next">
<a href="../device-types/index.html"
title="next chapter">Device types API →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+183
View File
@@ -0,0 +1,183 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Core API - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HADevice class" href="ha-device.html" />
<link rel="prev" title="API reference" href="../index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li>Core API</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../index.html"
title="previous chapter">← API reference</a>
</li>
<li class="next">
<a href="ha-device.html"
title="next chapter">HADevice class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="core-api">
<h1>Core API<a class="headerlink" href="#core-api" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="ha-device.html">HADevice class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-mqtt.html">HAMqtt class</a></li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../index.html"
title="previous chapter">← API reference</a>
</li>
<li class="next">
<a href="ha-device.html"
title="next chapter">HADevice class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,473 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HABaseDeviceType class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HABinarySensor class" href="ha-binary-sensor.html" />
<link rel="prev" title="Device types API" href="index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HABaseDeviceType class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Device types API</a>
</li>
<li class="next">
<a href="ha-binary-sensor.html"
title="next chapter">HABinarySensor class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="habasedevicetype-class">
<h1>HABaseDeviceType class<a class="headerlink" href="#habasedevicetype-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv416HABaseDeviceType">
<span id="_CPPv316HABaseDeviceType"></span><span id="_CPPv216HABaseDeviceType"></span><span id="HABaseDeviceType"></span><span class="target" id="class_h_a_base_device_type"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HABaseDeviceType</span></span></span><a class="headerlink" href="#_CPPv416HABaseDeviceType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Subclassed by <a class="reference internal" href="ha-binary-sensor.html#class_h_a_binary_sensor"><span class="std std-ref">HABinarySensor</span></a>, <a class="reference internal" href="ha-button.html#class_h_a_button"><span class="std std-ref">HAButton</span></a>, <a class="reference internal" href="ha-camera.html#class_h_a_camera"><span class="std std-ref">HACamera</span></a>, <a class="reference internal" href="ha-cover.html#class_h_a_cover"><span class="std std-ref">HACover</span></a>, <a class="reference internal" href="ha-device-tracker.html#class_h_a_device_tracker"><span class="std std-ref">HADeviceTracker</span></a>, <a class="reference internal" href="ha-device-trigger.html#class_h_a_device_trigger"><span class="std std-ref">HADeviceTrigger</span></a>, <a class="reference internal" href="ha-fan.html#class_h_a_fan"><span class="std std-ref">HAFan</span></a>, <a class="reference internal" href="ha-hvac.html#class_h_a_h_v_a_c"><span class="std std-ref">HAHVAC</span></a>, <a class="reference internal" href="ha-light.html#class_h_a_light"><span class="std std-ref">HALight</span></a>, <a class="reference internal" href="ha-lock.html#class_h_a_lock"><span class="std std-ref">HALock</span></a>, <a class="reference internal" href="ha-number.html#class_h_a_number"><span class="std std-ref">HANumber</span></a>, <a class="reference internal" href="ha-scene.html#class_h_a_scene"><span class="std std-ref">HAScene</span></a>, <a class="reference internal" href="ha-select.html#class_h_a_select"><span class="std std-ref">HASelect</span></a>, <a class="reference internal" href="ha-sensor.html#class_h_a_sensor"><span class="std std-ref">HASensor</span></a>, <a class="reference internal" href="ha-switch.html#class_h_a_switch"><span class="std std-ref">HASwitch</span></a>, <a class="reference internal" href="ha-tag-scanner.html#class_h_a_tag_scanner"><span class="std std-ref">HATagScanner</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15NumberPrecisionE">
<span id="_CPPv3N16HABaseDeviceType15NumberPrecisionE"></span><span id="_CPPv2N16HABaseDeviceType15NumberPrecisionE"></span><span class="target" id="class_h_a_base_device_type_1ad553122566c5cb5a2bd9e7cd5f44e202"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">NumberPrecision</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15NumberPrecisionE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E">
<span id="_CPPv3N16HABaseDeviceType15NumberPrecision11PrecisionP0E"></span><span id="_CPPv2N16HABaseDeviceType15NumberPrecision11PrecisionP0E"></span><span class="target" id="class_h_a_base_device_type_1ad553122566c5cb5a2bd9e7cd5f44e202a759e6eed5f6e29cf93ac5c183d619c76"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PrecisionP0</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP0E" title="Permalink to this definition"></a><br /></dt>
<dd><p>No digits after the decimal point. </p>
</dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E">
<span id="_CPPv3N16HABaseDeviceType15NumberPrecision11PrecisionP1E"></span><span id="_CPPv2N16HABaseDeviceType15NumberPrecision11PrecisionP1E"></span><span class="target" id="class_h_a_base_device_type_1ad553122566c5cb5a2bd9e7cd5f44e202a90e8e8375ba7812cc435f7b43a5d77af"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PrecisionP1</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP1E" title="Permalink to this definition"></a><br /></dt>
<dd><p>One digit after the decimal point. </p>
</dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E">
<span id="_CPPv3N16HABaseDeviceType15NumberPrecision11PrecisionP2E"></span><span id="_CPPv2N16HABaseDeviceType15NumberPrecision11PrecisionP2E"></span><span class="target" id="class_h_a_base_device_type_1ad553122566c5cb5a2bd9e7cd5f44e202a4d39e28a48e44e342e974d5e888e1f2a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PrecisionP2</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP2E" title="Permalink to this definition"></a><br /></dt>
<dd><p>Two digits after the decimal point. </p>
</dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E">
<span id="_CPPv3N16HABaseDeviceType15NumberPrecision11PrecisionP3E"></span><span id="_CPPv2N16HABaseDeviceType15NumberPrecision11PrecisionP3E"></span><span class="target" id="class_h_a_base_device_type_1ad553122566c5cb5a2bd9e7cd5f44e202a8f6e51a3897a75599fbbf04d960810db"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PrecisionP3</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15NumberPrecision11PrecisionP3E" title="Permalink to this definition"></a><br /></dt>
<dd><p>Three digits after the decimal point. </p>
</dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc">
<span id="_CPPv3N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc"></span><span id="_CPPv2N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc"></span><span id="HABaseDeviceType::HABaseDeviceType____FlashStringHelperCP.cCP"></span><span class="target" id="class_h_a_base_device_type_1afce9574903581e604657705b29476ec0"></span><span class="sig-name descname"><span class="n"><span class="pre">HABaseDeviceType</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">componentName</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType16HABaseDeviceTypeEPK19__FlashStringHelperPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates a new device type instance and registers it in the <a class="reference internal" href="../core/ha-mqtt.html#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>componentName</strong> – The name of the Home Assistant component (e.g. <code class="docutils literal notranslate"><span class="pre">binary_sensor</span></code>). You can find all available component names in the Home Assistant documentation. The component name needs to be stored in the flash memory. </p></li>
<li><p><strong>uniqueId</strong> – The unique ID of the device type. It needs to be unique in a scope of the <a class="reference internal" href="../core/ha-device.html#class_h_a_device"><span class="std std-ref">HADevice</span></a>. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK16HABaseDeviceType8uniqueIdEv">
<span id="_CPPv3NK16HABaseDeviceType8uniqueIdEv"></span><span id="_CPPv2NK16HABaseDeviceType8uniqueIdEv"></span><span id="HABaseDeviceType::uniqueIdC"></span><span class="target" id="class_h_a_base_device_type_1a70ebb55af7cfbdaff2a46ec2bff4464b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">uniqueId</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK16HABaseDeviceType8uniqueIdEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns unique ID of the device type. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK16HABaseDeviceType13componentNameEv">
<span id="_CPPv3NK16HABaseDeviceType13componentNameEv"></span><span id="_CPPv2NK16HABaseDeviceType13componentNameEv"></span><span id="HABaseDeviceType::componentNameC"></span><span class="target" id="class_h_a_base_device_type_1a96d9c3478ebd685a6de4b95de64b9f2d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">componentName</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK16HABaseDeviceType13componentNameEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns component name defined by the device type. It’s used for the MQTT discovery topic. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK16HABaseDeviceType24isAvailabilityConfiguredEv">
<span id="_CPPv3NK16HABaseDeviceType24isAvailabilityConfiguredEv"></span><span id="_CPPv2NK16HABaseDeviceType24isAvailabilityConfiguredEv"></span><span id="HABaseDeviceType::isAvailabilityConfiguredC"></span><span class="target" id="class_h_a_base_device_type_1a225b15caa59634344101fa795a0e76c5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isAvailabilityConfigured</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK16HABaseDeviceType24isAvailabilityConfiguredEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the availability was configured for this device type. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK16HABaseDeviceType8isOnlineEv">
<span id="_CPPv3NK16HABaseDeviceType8isOnlineEv"></span><span id="_CPPv2NK16HABaseDeviceType8isOnlineEv"></span><span id="HABaseDeviceType::isOnlineC"></span><span class="target" id="class_h_a_base_device_type_1a766d6175fb17bc26467ccc93c7e5d1b6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isOnline</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK16HABaseDeviceType8isOnlineEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns online state of the device type. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType7setNameEPKc">
<span id="_CPPv3N16HABaseDeviceType7setNameEPKc"></span><span id="_CPPv2N16HABaseDeviceType7setNameEPKc"></span><span id="HABaseDeviceType::setName__cCP"></span><span class="target" id="class_h_a_base_device_type_1a3035423ffd99c5c3fb79fd74bbf61a97"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setName</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">name</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType7setNameEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets name of the device type that will be used as a label in the HA panel. Keep the name short to save the resources.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>name</strong> – The device type name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK16HABaseDeviceType7getNameEv">
<span id="_CPPv3NK16HABaseDeviceType7getNameEv"></span><span id="_CPPv2NK16HABaseDeviceType7getNameEv"></span><span id="HABaseDeviceType::getNameC"></span><span class="target" id="class_h_a_base_device_type_1a7a69e32a0d46c5416389c498b3b600d7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getName</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK16HABaseDeviceType7getNameEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns name of the deviced type that was assigned via setName method. It can be nullptr if there is no name assigned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15setAvailabilityEb">
<span id="_CPPv3N16HABaseDeviceType15setAvailabilityEb"></span><span id="_CPPv2N16HABaseDeviceType15setAvailabilityEb"></span><span id="HABaseDeviceType::setAvailability__b"></span><span class="target" id="class_h_a_base_device_type_1a7552355c7806c24cb839b068a2b8694e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setAvailability</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">online</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15setAvailabilityEb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets availability of the device type. Setting the initial availability enables availability reporting for this device type. Please note that not all device types support this feature. Follow HA documentation of a specific device type to get more information.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>online</strong> – Specifies whether the device type is online. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15buildSerializerEv">
<span id="_CPPv3N16HABaseDeviceType15buildSerializerEv"></span><span id="_CPPv2N16HABaseDeviceType15buildSerializerEv"></span><span id="HABaseDeviceType::buildSerializer"></span><span class="target" id="class_h_a_base_device_type_1ac77d78a55b801bda524a184bee5b790a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>This method should build serializer that will be used for publishing the configuration. The serializer is built each time the MQTT connection is acquired. Follow implementation of the existing device types to get better understanding of the logic. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType15onMqttConnectedEv">
<span id="_CPPv3N16HABaseDeviceType15onMqttConnectedEv"></span><span id="_CPPv2N16HABaseDeviceType15onMqttConnectedEv"></span><span id="HABaseDeviceType::onMqttConnected"></span><span class="target" id="class_h_a_base_device_type_1a816350135a33c2f0e6bf3458e3252145"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>This method is called each time the MQTT connection is acquired. Each device type should publish its configuration and availability. It can be also used for subscribing to MQTT topics. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HABaseDeviceType::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_base_device_type_1ae7b0762368d3267671d24e0ca1bb4c26"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This method is called each time the device receives a MQTT message. It can be any MQTT message so the method should always verify the topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – The topic on which the message was produced. </p></li>
<li><p><strong>payload</strong> – The payload of the message. It can be nullptr. </p></li>
<li><p><strong>length</strong> – The length of the payload. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType17destroySerializerEv">
<span id="_CPPv3N16HABaseDeviceType17destroySerializerEv"></span><span id="_CPPv2N16HABaseDeviceType17destroySerializerEv"></span><span id="HABaseDeviceType::destroySerializer"></span><span class="target" id="class_h_a_base_device_type_1a64b52e444f27c1366e3518f4efcfc3e2"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">destroySerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType17destroySerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Destroys the existing serializer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType13publishConfigEv">
<span id="_CPPv3N16HABaseDeviceType13publishConfigEv"></span><span id="_CPPv2N16HABaseDeviceType13publishConfigEv"></span><span id="HABaseDeviceType::publishConfig"></span><span class="target" id="class_h_a_base_device_type_1a24cd9f841c7e083eccec39ef6c157a56"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishConfig</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType13publishConfigEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes configuration of this device type on the HA discovery topic. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType19publishAvailabilityEv">
<span id="_CPPv3N16HABaseDeviceType19publishAvailabilityEv"></span><span id="_CPPv2N16HABaseDeviceType19publishAvailabilityEv"></span><span id="HABaseDeviceType::publishAvailability"></span><span class="target" id="class_h_a_base_device_type_1a721e6bea7abd3e0d721f46e588c8bd09"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishAvailability</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType19publishAvailabilityEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes current availability of the device type. The message is only produced if the availability is configured for this device type. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb">
<span id="_CPPv3N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb"></span><span id="_CPPv2N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb"></span><span id="HABaseDeviceType::publishOnDataTopic____FlashStringHelperCP.__FlashStringHelperCP.b"></span><span class="target" id="class_h_a_base_device_type_1a9e435cbe130a4af10950b917d0f788b0"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishOnDataTopic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retained</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK19__FlashStringHelperb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the given flash string on the data topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – The topic to publish on (progmem string). </p></li>
<li><p><strong>payload</strong> – The message’s payload (progmem string). </p></li>
<li><p><strong>retained</strong> – Specifies whether the message should be retained. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb">
<span id="_CPPv3N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb"></span><span id="_CPPv2N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb"></span><span id="HABaseDeviceType::publishOnDataTopic____FlashStringHelperCP.cCP.b"></span><span class="target" id="class_h_a_base_device_type_1a48448bbea2f96cf0dac53fc1908ccf8e"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishOnDataTopic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retained</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPKcb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the given string on the data topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – The topic to publish on (progmem string). </p></li>
<li><p><strong>payload</strong> – The message’s payload. </p></li>
<li><p><strong>retained</strong> – Specifies whether the message should be retained. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb">
<span id="_CPPv3N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb"></span><span id="_CPPv2N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb"></span><span id="HABaseDeviceType::publishOnDataTopic____FlashStringHelperCP.uint8_tCP.uint16_tC.b.b"></span><span class="target" id="class_h_a_base_device_type_1a83c6f2cb90bafc63b982c7bfc5f71136"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishOnDataTopic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retained</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span>, <span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">isProgmemData</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType18publishOnDataTopicEPK19__FlashStringHelperPK7uint8_tK8uint16_tbb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the given data on the data topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>topic</strong> – The topic to publish on (progmem string). </p></li>
<li><p><strong>payload</strong> – The message’s payload. </p></li>
<li><p><strong>length</strong> – The length of the payload. </p></li>
<li><p><strong>retained</strong> – Specifies whether the message should be retained. </p></li>
<li><p><strong>isProgmemData</strong> – Specifies whether the given data is stored in the flash memory. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-attributes">Protected Attributes</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType14_componentNameE">
<span id="_CPPv3N16HABaseDeviceType14_componentNameE"></span><span id="_CPPv2N16HABaseDeviceType14_componentNameE"></span><span id="HABaseDeviceType::_componentName____FlashStringHelperCPC"></span><span class="target" id="class_h_a_base_device_type_1a00b0a4b7e71bf40ebd6402d18edf11ec"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_componentName</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType14_componentNameE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The component name that was assigned via the constructor. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType9_uniqueIdE">
<span id="_CPPv3N16HABaseDeviceType9_uniqueIdE"></span><span id="_CPPv2N16HABaseDeviceType9_uniqueIdE"></span><span id="HABaseDeviceType::_uniqueId__cCP"></span><span class="target" id="class_h_a_base_device_type_1a152861451a37aea0723dadabe063c6b2"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_uniqueId</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType9_uniqueIdE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The unique ID that was assigned via the constructor. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType5_nameE">
<span id="_CPPv3N16HABaseDeviceType5_nameE"></span><span id="_CPPv2N16HABaseDeviceType5_nameE"></span><span id="HABaseDeviceType::_name__cCP"></span><span class="target" id="class_h_a_base_device_type_1adae2a1ba7a7b5ad55b383e62fee1476d"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_name</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType5_nameE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The name that was set using setName method. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType11_serializerE">
<span id="_CPPv3N16HABaseDeviceType11_serializerE"></span><span id="_CPPv2N16HABaseDeviceType11_serializerE"></span><span id="HABaseDeviceType::_serializer__HASerializerP"></span><span class="target" id="class_h_a_base_device_type_1a2183f616ed3662b9d954ee65df896079"></span><a class="reference internal" href="../utils/ha-serializer.html#_CPPv412HASerializer" title="HASerializer"><span class="n"><span class="pre">HASerializer</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_serializer</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType11_serializerE" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="../utils/ha-serializer.html#class_h_a_serializer"><span class="std std-ref">HASerializer</span></a> that belongs to this device type. It can be nullptr. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-static-functions">Protected Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType4mqttEv">
<span id="_CPPv3N16HABaseDeviceType4mqttEv"></span><span id="_CPPv2N16HABaseDeviceType4mqttEv"></span><span id="HABaseDeviceType::mqtt"></span><span class="target" id="class_h_a_base_device_type_1aefcd1bbb12c5ca2de2e70be2f61f56aa"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="../core/ha-mqtt.html#_CPPv46HAMqtt" title="HAMqtt"><span class="n"><span class="pre">HAMqtt</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">mqtt</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType4mqttEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns instance of the <a class="reference internal" href="../core/ha-mqtt.html#class_h_a_mqtt"><span class="std std-ref">HAMqtt</span></a> class. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper">
<span id="_CPPv3N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper"></span><span id="_CPPv2N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper"></span><span id="HABaseDeviceType::subscribeTopic__cCP.__FlashStringHelperCP"></span><span class="target" id="class_h_a_base_device_type_1a25704866db32489fefb0d77a44676eaf"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">subscribeTopic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType14subscribeTopicEPKcPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Subscribes to the given data topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – THe unique ID of the device type assigned via the constructor. </p></li>
<li><p><strong>topic</strong> – Topic to subscribe (progmem string). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-types">Private Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType12AvailabilityE">
<span id="_CPPv3N16HABaseDeviceType12AvailabilityE"></span><span id="_CPPv2N16HABaseDeviceType12AvailabilityE"></span><span class="target" id="class_h_a_base_device_type_1a1a551260968943d53b531b41671c02e8"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Availability</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType12AvailabilityE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE">
<span id="_CPPv3N16HABaseDeviceType12Availability19AvailabilityDefaultE"></span><span id="_CPPv2N16HABaseDeviceType12Availability19AvailabilityDefaultE"></span><span class="target" id="class_h_a_base_device_type_1a1a551260968943d53b531b41671c02e8a9648e8ece222d59ff8fe7a1beff4ac4b"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AvailabilityDefault</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType12Availability19AvailabilityDefaultE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE">
<span id="_CPPv3N16HABaseDeviceType12Availability18AvailabilityOnlineE"></span><span id="_CPPv2N16HABaseDeviceType12Availability18AvailabilityOnlineE"></span><span class="target" id="class_h_a_base_device_type_1a1a551260968943d53b531b41671c02e8a9f8b3df0ac2216584d837f25d8687d64"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AvailabilityOnline</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType12Availability18AvailabilityOnlineE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE">
<span id="_CPPv3N16HABaseDeviceType12Availability19AvailabilityOfflineE"></span><span id="_CPPv2N16HABaseDeviceType12Availability19AvailabilityOfflineE"></span><span class="target" id="class_h_a_base_device_type_1a1a551260968943d53b531b41671c02e8af4b02f5523b7779143355c3c3de9de42"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">AvailabilityOffline</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType12Availability19AvailabilityOfflineE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N16HABaseDeviceType13_availabilityE">
<span id="_CPPv3N16HABaseDeviceType13_availabilityE"></span><span id="_CPPv2N16HABaseDeviceType13_availabilityE"></span><span id="HABaseDeviceType::_availability__Availability"></span><span class="target" id="class_h_a_base_device_type_1afe6c4c8f5a27f8fd1fe1945bb7089b7b"></span><a class="reference internal" href="#_CPPv4N16HABaseDeviceType12AvailabilityE" title="HABaseDeviceType::Availability"><span class="n"><span class="pre">Availability</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_availability</span></span></span><a class="headerlink" href="#_CPPv4N16HABaseDeviceType13_availabilityE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current availability of this device type. AvailabilityDefault means that the initial availability was never set. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-friends">Friends</p>
<dl>
<dt class="sig sig-object cpp">
<em class="property"><span class="pre">friend</span> <span class="pre">class</span></em> <span class="pre">HAMqtt</span></dt>
</dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Device types API</a>
</li>
<li class="next">
<a href="ha-binary-sensor.html"
title="next chapter">HABinarySensor class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,309 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HABinarySensor class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAButton class" href="ha-button.html" />
<link rel="prev" title="HABaseDeviceType class" href="ha-base-device-type.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HABinarySensor class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-base-device-type.html"
title="previous chapter">← HABaseDeviceType class</a>
</li>
<li class="next">
<a href="ha-button.html"
title="next chapter">HAButton class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="habinarysensor-class">
<h1>HABinarySensor class<a class="headerlink" href="#habinarysensor-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv414HABinarySensor">
<span id="_CPPv314HABinarySensor"></span><span id="_CPPv214HABinarySensor"></span><span id="HABinarySensor"></span><span class="target" id="class_h_a_binary_sensor"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HABinarySensor</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv414HABinarySensor" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_binary_sensor"><span class="std std-ref">HABinarySensor</span></a> represents a binary sensor that allows publishing on/off state to the Home Assistant panel.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/binary_sensor.mqtt/">https://www.home-assistant.io/integrations/binary_sensor.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor14HABinarySensorEPKc">
<span id="_CPPv3N14HABinarySensor14HABinarySensorEPKc"></span><span id="_CPPv2N14HABinarySensor14HABinarySensorEPKc"></span><span id="HABinarySensor::HABinarySensor__cCP"></span><span class="target" id="class_h_a_binary_sensor_1a52b939597d19f117515ae4c515b6be5a"></span><span class="sig-name descname"><span class="n"><span class="pre">HABinarySensor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor14HABinarySensorEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the button. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor8setStateEKbKb">
<span id="_CPPv3N14HABinarySensor8setStateEKbKb"></span><span id="_CPPv2N14HABinarySensor8setStateEKbKb"></span><span id="HABinarySensor::setState__bC.bC"></span><span class="target" id="class_h_a_binary_sensor_1a137016ed9a25100de2503160e2c285c3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor8setStateEKbKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the sensor and publish MQTT message. Please note that if a new value is the same as the previous one the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the sensor (<code class="docutils literal notranslate"><span class="pre">true</span></code> - on, <code class="docutils literal notranslate"><span class="pre">false</span></code> - off). </p></li>
<li><p><strong>force</strong> – Forces to update the state without comparing it to a previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor15setCurrentStateEKb">
<span id="_CPPv3N14HABinarySensor15setCurrentStateEKb"></span><span id="_CPPv2N14HABinarySensor15setCurrentStateEKb"></span><span id="HABinarySensor::setCurrentState__bC"></span><span class="target" id="class_h_a_binary_sensor_1a04aa233b543a5d08559de0b772331ced"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor15setCurrentStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>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.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the sensor. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK14HABinarySensor15getCurrentStateEv">
<span id="_CPPv3NK14HABinarySensor15getCurrentStateEv"></span><span id="_CPPv2NK14HABinarySensor15getCurrentStateEv"></span><span id="HABinarySensor::getCurrentStateC"></span><span class="target" id="class_h_a_binary_sensor_1a01ce95f5ffe68b9baeb4b31383ef3efc"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK14HABinarySensor15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known state of the sensor. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor14setDeviceClassEPKc">
<span id="_CPPv3N14HABinarySensor14setDeviceClassEPKc"></span><span id="_CPPv2N14HABinarySensor14setDeviceClassEPKc"></span><span id="HABinarySensor::setDeviceClass__cCP"></span><span class="target" id="class_h_a_binary_sensor_1afe64445b11b3f30ab6c140ee876e472d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/binary_sensor/#device-class">https://www.home-assistant.io/integrations/binary_sensor/#device-class</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor7setIconEPKc">
<span id="_CPPv3N14HABinarySensor7setIconEPKc"></span><span id="_CPPv2N14HABinarySensor7setIconEPKc"></span><span id="HABinarySensor::setIcon__cCP"></span><span class="target" id="class_h_a_binary_sensor_1ab21b355dd9b19f9f594f12fdf26b4f05"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the sensor. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor15buildSerializerEv">
<span id="_CPPv3N14HABinarySensor15buildSerializerEv"></span><span id="_CPPv2N14HABinarySensor15buildSerializerEv"></span><span id="HABinarySensor::buildSerializer"></span><span class="target" id="class_h_a_binary_sensor_1ab153632bd88a4650549ca24ae7cdc655"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N14HABinarySensor15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor15onMqttConnectedEv">
<span id="_CPPv3N14HABinarySensor15onMqttConnectedEv"></span><span id="_CPPv2N14HABinarySensor15onMqttConnectedEv"></span><span id="HABinarySensor::onMqttConnected"></span><span class="target" id="class_h_a_binary_sensor_1a0db4269ce7239d86eb472b7b87e7f620"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N14HABinarySensor15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor12publishStateEb">
<span id="_CPPv3N14HABinarySensor12publishStateEb"></span><span id="_CPPv2N14HABinarySensor12publishStateEb"></span><span id="HABinarySensor::publishState__b"></span><span class="target" id="class_h_a_binary_sensor_1a96ca417b9001501b876a60e477dce953"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HABinarySensor12publishStateEb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor6_classE">
<span id="_CPPv3N14HABinarySensor6_classE"></span><span id="_CPPv2N14HABinarySensor6_classE"></span><span id="HABinarySensor::_class__cCP"></span><span class="target" id="class_h_a_binary_sensor_1af670394be65514a99f94f7ad689f0ac8"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_class</span></span></span><a class="headerlink" href="#_CPPv4N14HABinarySensor6_classE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor5_iconE">
<span id="_CPPv3N14HABinarySensor5_iconE"></span><span id="_CPPv2N14HABinarySensor5_iconE"></span><span id="HABinarySensor::_icon__cCP"></span><span class="target" id="class_h_a_binary_sensor_1ab828fefdcca4e68c951fad0b49177398"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N14HABinarySensor5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the sensor. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N14HABinarySensor13_currentStateE">
<span id="_CPPv3N14HABinarySensor13_currentStateE"></span><span id="_CPPv2N14HABinarySensor13_currentStateE"></span><span id="HABinarySensor::_currentState__b"></span><span class="target" id="class_h_a_binary_sensor_1a107a5872cf1d9788fe35895278dad79e"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N14HABinarySensor13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Current state of the sensor. By default it’s false. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-base-device-type.html"
title="previous chapter">← HABaseDeviceType class</a>
</li>
<li class="next">
<a href="ha-button.html"
title="next chapter">HAButton class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,291 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HAButton class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HACamera class" href="ha-camera.html" />
<link rel="prev" title="HABinarySensor class" href="ha-binary-sensor.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HAButton class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-binary-sensor.html"
title="previous chapter">← HABinarySensor class</a>
</li>
<li class="next">
<a href="ha-camera.html"
title="next chapter">HACamera class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="habutton-class">
<h1>HAButton class<a class="headerlink" href="#habutton-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HAButton">
<span id="_CPPv38HAButton"></span><span id="_CPPv28HAButton"></span><span id="HAButton"></span><span class="target" id="class_h_a_button"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAButton</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HAButton" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_button"><span class="std std-ref">HAButton</span></a> represents a button that’s displayed in the Home Assistant panel and triggers some logic on your Arduino/ESP device once clicked.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/button.mqtt/">https://www.home-assistant.io/integrations/button.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton8HAButtonEPKc">
<span id="_CPPv3N8HAButton8HAButtonEPKc"></span><span id="_CPPv2N8HAButton8HAButtonEPKc"></span><span id="HAButton::HAButton__cCP"></span><span class="target" id="class_h_a_button_1a9ef3a2c0445e45b0a0d4c32dfe4abe66"></span><span class="sig-name descname"><span class="n"><span class="pre">HAButton</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HAButton8HAButtonEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the button. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton14setDeviceClassEPKc">
<span id="_CPPv3N8HAButton14setDeviceClassEPKc"></span><span id="_CPPv2N8HAButton14setDeviceClassEPKc"></span><span id="HAButton::setDeviceClass__cCP"></span><span class="target" id="class_h_a_button_1a0d898b35e8b81a3071c7b18c2f8e8447"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HAButton14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/button/#device-class">https://www.home-assistant.io/integrations/button/#device-class</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton7setIconEPKc">
<span id="_CPPv3N8HAButton7setIconEPKc"></span><span id="_CPPv2N8HAButton7setIconEPKc"></span><span id="HAButton::setIcon__cCP"></span><span class="target" id="class_h_a_button_1a23593271777ec5a5f905853470f13294"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HAButton7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the button. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton9setRetainEKb">
<span id="_CPPv3N8HAButton9setRetainEKb"></span><span id="_CPPv2N8HAButton9setRetainEKb"></span><span id="HAButton::setRetain__bC"></span><span class="target" id="class_h_a_button_1a0d20026ca8212f41fc36056995624f01"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HAButton9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the button’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton9onCommandEPFvP8HAButtonE">
<span id="_CPPv3N8HAButton9onCommandEPFvP8HAButtonE"></span><span id="_CPPv2N8HAButton9onCommandEPFvP8HAButtonE"></span><span class="target" id="class_h_a_button_1a5d81f6179db100b63b8b97433416b3fb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv48HAButton" title="HAButton"><span class="n"><span class="pre">HAButton</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HAButton9onCommandEPFvP8HAButtonE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the press command from HA is received. Please note that it’s not possible to register multiple callbacks for the same button.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton15buildSerializerEv">
<span id="_CPPv3N8HAButton15buildSerializerEv"></span><span id="_CPPv2N8HAButton15buildSerializerEv"></span><span id="HAButton::buildSerializer"></span><span class="target" id="class_h_a_button_1a009ae671939f154fbd624fafd30d6556"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HAButton15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton15onMqttConnectedEv">
<span id="_CPPv3N8HAButton15onMqttConnectedEv"></span><span id="_CPPv2N8HAButton15onMqttConnectedEv"></span><span id="HAButton::onMqttConnected"></span><span class="target" id="class_h_a_button_1afc35e767cbd52907fe5282c0598119f5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HAButton15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HAButton::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_button_1a13bc55638f22b2193665e0f32fb4cc42"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HAButton13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton6_classE">
<span id="_CPPv3N8HAButton6_classE"></span><span id="_CPPv2N8HAButton6_classE"></span><span id="HAButton::_class__cCP"></span><span class="target" id="class_h_a_button_1a872f6b959ec4bc9e7044256fbb44366b"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_class</span></span></span><a class="headerlink" href="#_CPPv4N8HAButton6_classE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton5_iconE">
<span id="_CPPv3N8HAButton5_iconE"></span><span id="_CPPv2N8HAButton5_iconE"></span><span id="HAButton::_icon__cCP"></span><span class="target" id="class_h_a_button_1a17873a37496c6ca8ad22f9c964cf2f21"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HAButton5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the button. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton7_retainE">
<span id="_CPPv3N8HAButton7_retainE"></span><span id="_CPPv2N8HAButton7_retainE"></span><span id="HAButton::_retain__b"></span><span class="target" id="class_h_a_button_1a68d6edf1e376a380501f2de0c73c6954"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N8HAButton7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HAButton16_commandCallbackE">
<span id="_CPPv3N8HAButton16_commandCallbackE"></span><span id="_CPPv2N8HAButton16_commandCallbackE"></span><span class="target" id="class_h_a_button_1a5d15c00c7aa6562f3f272e647530ef48"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv48HAButton" title="HAButton"><span class="n"><span class="pre">HAButton</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N8HAButton16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The command callback that will be called once clicking the button in HA panel. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-binary-sensor.html"
title="previous chapter">← HABinarySensor class</a>
</li>
<li class="next">
<a href="ha-camera.html"
title="next chapter">HACamera class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,297 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HACamera class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HACover class" href="ha-cover.html" />
<link rel="prev" title="HAButton class" href="ha-button.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HACamera class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-button.html"
title="previous chapter">← HAButton class</a>
</li>
<li class="next">
<a href="ha-cover.html"
title="next chapter">HACover class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hacamera-class">
<h1>HACamera class<a class="headerlink" href="#hacamera-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HACamera">
<span id="_CPPv38HACamera"></span><span id="_CPPv28HACamera"></span><span id="HACamera"></span><span class="target" id="class_h_a_camera"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HACamera</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HACamera" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_camera"><span class="std std-ref">HACamera</span></a> allows to display an image in the Home Assistant panel. It can be used for publishing an image from the ESP32-Cam module or any other module that’s equipped with a camera.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/camera.mqtt/">https://www.home-assistant.io/integrations/camera.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera13ImageEncodingE">
<span id="_CPPv3N8HACamera13ImageEncodingE"></span><span id="_CPPv2N8HACamera13ImageEncodingE"></span><span class="target" id="class_h_a_camera_1aa97980e8c7c58bc793372c0e967ca77f"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ImageEncoding</span></span></span><a class="headerlink" href="#_CPPv4N8HACamera13ImageEncodingE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE">
<span id="_CPPv3N8HACamera13ImageEncoding14EncodingBinaryE"></span><span id="_CPPv2N8HACamera13ImageEncoding14EncodingBinaryE"></span><span class="target" id="class_h_a_camera_1aa97980e8c7c58bc793372c0e967ca77fa249f4595196842b039756ea6e67fd6aa"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">EncodingBinary</span></span></span><a class="headerlink" href="#_CPPv4N8HACamera13ImageEncoding14EncodingBinaryE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera13ImageEncoding14EncodingBase64E">
<span id="_CPPv3N8HACamera13ImageEncoding14EncodingBase64E"></span><span id="_CPPv2N8HACamera13ImageEncoding14EncodingBase64E"></span><span class="target" id="class_h_a_camera_1aa97980e8c7c58bc793372c0e967ca77fa242cb14da5b63cd1ae60338a0c2bc224"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">EncodingBase64</span></span></span><a class="headerlink" href="#_CPPv4N8HACamera13ImageEncoding14EncodingBase64E" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera8HACameraEPKc">
<span id="_CPPv3N8HACamera8HACameraEPKc"></span><span id="_CPPv2N8HACamera8HACameraEPKc"></span><span id="HACamera::HACamera__cCP"></span><span class="target" id="class_h_a_camera_1aa38966e052322145b050c9389d7b6a55"></span><span class="sig-name descname"><span class="n"><span class="pre">HACamera</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HACamera8HACameraEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the camera. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HACamera12publishImageEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HACamera12publishImageEPK7uint8_tK8uint16_t"></span><span id="HACamera::publishImage__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_camera_1a9db4f30666dafa721376c3560393aa07"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishImage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HACamera12publishImageEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes MQTT message with the given image data as a message content. It updates image displayed in the Home Assistant panel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> – Image data (raw binary data or base64) </p></li>
<li><p><strong>length</strong> – The length of the data. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera11setEncodingEK13ImageEncoding">
<span id="_CPPv3N8HACamera11setEncodingEK13ImageEncoding"></span><span id="_CPPv2N8HACamera11setEncodingEK13ImageEncoding"></span><span id="HACamera::setEncoding__ImageEncodingC"></span><span class="target" id="class_h_a_camera_1af1d39be8c23e1441575d93406694acbd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setEncoding</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N8HACamera13ImageEncodingE" title="HACamera::ImageEncoding"><span class="n"><span class="pre">ImageEncoding</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">encoding</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HACamera11setEncodingEK13ImageEncoding" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets encoding of the image content. Bu default Home Assistant expects raw binary data (e.g. JPEG binary data).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>encoding</strong> – The image’s data encoding. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera7setIconEPKc">
<span id="_CPPv3N8HACamera7setIconEPKc"></span><span id="_CPPv2N8HACamera7setIconEPKc"></span><span id="HACamera::setIcon__cCP"></span><span class="target" id="class_h_a_camera_1a42698c253030dece18acb009f930b00b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HACamera7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the camera. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera15buildSerializerEv">
<span id="_CPPv3N8HACamera15buildSerializerEv"></span><span id="_CPPv2N8HACamera15buildSerializerEv"></span><span id="HACamera::buildSerializer"></span><span class="target" id="class_h_a_camera_1a6f9ed71fe8ac4ed144d403448cb09262"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HACamera15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera15onMqttConnectedEv">
<span id="_CPPv3N8HACamera15onMqttConnectedEv"></span><span id="_CPPv2N8HACamera15onMqttConnectedEv"></span><span id="HACamera::onMqttConnected"></span><span class="target" id="class_h_a_camera_1ad75031a072f19dcc1471668fb1bd2e0b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HACamera15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HACamera19getEncodingPropertyEv">
<span id="_CPPv3NK8HACamera19getEncodingPropertyEv"></span><span id="_CPPv2NK8HACamera19getEncodingPropertyEv"></span><span id="HACamera::getEncodingPropertyC"></span><span class="target" id="class_h_a_camera_1aa52d37da30dcfb14adf822ebb5cda6cd"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getEncodingProperty</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HACamera19getEncodingPropertyEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns progmem string representing the encoding property. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera9_encodingE">
<span id="_CPPv3N8HACamera9_encodingE"></span><span id="_CPPv2N8HACamera9_encodingE"></span><span id="HACamera::_encoding__ImageEncoding"></span><span class="target" id="class_h_a_camera_1a5be9c51a0cec48b78e2d0170d44ef455"></span><a class="reference internal" href="#_CPPv4N8HACamera13ImageEncodingE" title="HACamera::ImageEncoding"><span class="n"><span class="pre">ImageEncoding</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_encoding</span></span></span><a class="headerlink" href="#_CPPv4N8HACamera9_encodingE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The encoding of the image’s data. By default it’s <code class="docutils literal notranslate"><span class="pre">HACamera::EncodingBinary</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HACamera5_iconE">
<span id="_CPPv3N8HACamera5_iconE"></span><span id="_CPPv2N8HACamera5_iconE"></span><span id="HACamera::_icon__cCP"></span><span class="target" id="class_h_a_camera_1a37517f7bc5e66c22c107e4cb7c83c2b8"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HACamera5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the camera. It can be nullptr. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-button.html"
title="previous chapter">← HAButton class</a>
</li>
<li class="next">
<a href="ha-cover.html"
title="next chapter">HACover class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,526 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HACover class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HADeviceTracker class" href="ha-device-tracker.html" />
<link rel="prev" title="HACamera class" href="ha-camera.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HACover class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-camera.html"
title="previous chapter">← HACamera class</a>
</li>
<li class="next">
<a href="ha-device-tracker.html"
title="next chapter">HADeviceTracker class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hacover-class">
<h1>HACover class<a class="headerlink" href="#hacover-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv47HACover">
<span id="_CPPv37HACover"></span><span id="_CPPv27HACover"></span><span id="HACover"></span><span class="target" id="class_h_a_cover"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HACover</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv47HACover" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_cover"><span class="std std-ref">HACover</span></a> allows to control a cover (such as blinds, a roller shutter or a garage door).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/cover.mqtt/">https://www.home-assistant.io/integrations/cover.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverStateE">
<span id="_CPPv3N7HACover10CoverStateE"></span><span id="_CPPv2N7HACover10CoverStateE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CoverState</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState12StateUnknownE">
<span id="_CPPv3N7HACover10CoverState12StateUnknownE"></span><span id="_CPPv2N7HACover10CoverState12StateUnknownE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3a0bb2002080264aef2eb0eeb90f2a4342"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateUnknown</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState12StateUnknownE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState11StateClosedE">
<span id="_CPPv3N7HACover10CoverState11StateClosedE"></span><span id="_CPPv2N7HACover10CoverState11StateClosedE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3acc2f1726d4034308b43cd2fe82f1fc11"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateClosed</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState11StateClosedE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState12StateClosingE">
<span id="_CPPv3N7HACover10CoverState12StateClosingE"></span><span id="_CPPv2N7HACover10CoverState12StateClosingE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3a8efcc3f5000d7c4133cbb8b9af8625fe"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateClosing</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState12StateClosingE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState9StateOpenE">
<span id="_CPPv3N7HACover10CoverState9StateOpenE"></span><span id="_CPPv2N7HACover10CoverState9StateOpenE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3a54c11f902fc670938b5259f4a068f1c2"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateOpen</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState9StateOpenE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState12StateOpeningE">
<span id="_CPPv3N7HACover10CoverState12StateOpeningE"></span><span id="_CPPv2N7HACover10CoverState12StateOpeningE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3ace9c0422c7667d39acb8ea99069ddb79"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateOpening</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState12StateOpeningE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover10CoverState12StateStoppedE">
<span id="_CPPv3N7HACover10CoverState12StateStoppedE"></span><span id="_CPPv2N7HACover10CoverState12StateStoppedE"></span><span class="target" id="class_h_a_cover_1ad229c0964c1d47f91d1306234f5b5cf3aee74d67d0123d0ffe2d20c5f70de1884"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateStopped</span></span></span><a class="headerlink" href="#_CPPv4N7HACover10CoverState12StateStoppedE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover12CoverCommandE">
<span id="_CPPv3N7HACover12CoverCommandE"></span><span id="_CPPv2N7HACover12CoverCommandE"></span><span class="target" id="class_h_a_cover_1a72c09efa117126e78797eb2a3c5bb153"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CoverCommand</span></span></span><a class="headerlink" href="#_CPPv4N7HACover12CoverCommandE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover12CoverCommand11CommandOpenE">
<span id="_CPPv3N7HACover12CoverCommand11CommandOpenE"></span><span id="_CPPv2N7HACover12CoverCommand11CommandOpenE"></span><span class="target" id="class_h_a_cover_1a72c09efa117126e78797eb2a3c5bb153a63e10091905d1aaf92962438e2ddc03f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandOpen</span></span></span><a class="headerlink" href="#_CPPv4N7HACover12CoverCommand11CommandOpenE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover12CoverCommand12CommandCloseE">
<span id="_CPPv3N7HACover12CoverCommand12CommandCloseE"></span><span id="_CPPv2N7HACover12CoverCommand12CommandCloseE"></span><span class="target" id="class_h_a_cover_1a72c09efa117126e78797eb2a3c5bb153a97325817f0f938904b759bad9df6c196"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandClose</span></span></span><a class="headerlink" href="#_CPPv4N7HACover12CoverCommand12CommandCloseE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover12CoverCommand11CommandStopE">
<span id="_CPPv3N7HACover12CoverCommand11CommandStopE"></span><span id="_CPPv2N7HACover12CoverCommand11CommandStopE"></span><span class="target" id="class_h_a_cover_1a72c09efa117126e78797eb2a3c5bb153aabf3c7f4d1be4143ff86be9aa033789e"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandStop</span></span></span><a class="headerlink" href="#_CPPv4N7HACover12CoverCommand11CommandStopE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover8FeaturesE">
<span id="_CPPv3N7HACover8FeaturesE"></span><span id="_CPPv2N7HACover8FeaturesE"></span><span class="target" id="class_h_a_cover_1ab349728070a8155b5e324e262164bdcc"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Features</span></span></span><a class="headerlink" href="#_CPPv4N7HACover8FeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover8Features15DefaultFeaturesE">
<span id="_CPPv3N7HACover8Features15DefaultFeaturesE"></span><span id="_CPPv2N7HACover8Features15DefaultFeaturesE"></span><span class="target" id="class_h_a_cover_1ab349728070a8155b5e324e262164bdcca842f269795f95b472dd650e681aa9d52"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DefaultFeatures</span></span></span><a class="headerlink" href="#_CPPv4N7HACover8Features15DefaultFeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover8Features15PositionFeatureE">
<span id="_CPPv3N7HACover8Features15PositionFeatureE"></span><span id="_CPPv2N7HACover8Features15PositionFeatureE"></span><span class="target" id="class_h_a_cover_1ab349728070a8155b5e324e262164bdccad9486dafd6b99659a46aea97bfef3ce6"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PositionFeature</span></span></span><a class="headerlink" href="#_CPPv4N7HACover8Features15PositionFeatureE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover7HACoverEPKcK8Features">
<span id="_CPPv3N7HACover7HACoverEPKcK8Features"></span><span id="_CPPv2N7HACover7HACoverEPKcK8Features"></span><span id="HACover::HACover__cCP.FeaturesC"></span><span class="target" id="class_h_a_cover_1a734701c0938c9e8853f87645ba8a6278"></span><span class="sig-name descname"><span class="n"><span class="pre">HACover</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover8FeaturesE" title="HACover::Features"><span class="n"><span class="pre">Features</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">features</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover8Features15DefaultFeaturesE" title="HACover::DefaultFeatures"><span class="n"><span class="pre">DefaultFeatures</span></span></a><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover7HACoverEPKcK8Features" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – The unique ID of the cover. It needs to be unique in a scope of your device. </p></li>
<li><p><strong>features</strong> – Features that should be enabled for the fan. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover8setStateEK10CoverStateKb">
<span id="_CPPv3N7HACover8setStateEK10CoverStateKb"></span><span id="_CPPv2N7HACover8setStateEK10CoverStateKb"></span><span id="HACover::setState__CoverStateC.bC"></span><span class="target" id="class_h_a_cover_1a951136b667d9ef2e3d89516c306258ee"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover10CoverStateE" title="HACover::CoverState"><span class="n"><span class="pre">CoverState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover8setStateEK10CoverStateKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the cover and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the cover. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns true if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover11setPositionEK7int16_tKb">
<span id="_CPPv3N7HACover11setPositionEK7int16_tKb"></span><span id="_CPPv2N7HACover11setPositionEK7int16_tKb"></span><span id="HACover::setPosition__int16_tC.bC"></span><span class="target" id="class_h_a_cover_1ac187b7e96c542810fd20fd825a7c9c76"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setPosition</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover11setPositionEK7int16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the position of the cover and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>position</strong> – The new position of the cover (0-100). </p></li>
<li><p><strong>force</strong> – Forces to update the state without comparing it to a previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover15setCurrentStateEK10CoverState">
<span id="_CPPv3N7HACover15setCurrentStateEK10CoverState"></span><span id="_CPPv2N7HACover15setCurrentStateEK10CoverState"></span><span id="HACover::setCurrentState__CoverStateC"></span><span class="target" id="class_h_a_cover_1a9ac315467ca1d777d60185d10ccb583e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover10CoverStateE" title="HACover::CoverState"><span class="n"><span class="pre">CoverState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover15setCurrentStateEK10CoverState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current state of the cover 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.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The new state of the cover. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HACover15getCurrentStateEv">
<span id="_CPPv3NK7HACover15getCurrentStateEv"></span><span id="_CPPv2NK7HACover15getCurrentStateEv"></span><span id="HACover::getCurrentStateC"></span><span class="target" id="class_h_a_cover_1a3622be83282b1d3d00ddde58213fd1d5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover10CoverStateE" title="HACover::CoverState"><span class="n"><span class="pre">CoverState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HACover15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the cover. By default the state is set to CoverState::StateUnknown </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover18setCurrentPositionEK7int16_t">
<span id="_CPPv3N7HACover18setCurrentPositionEK7int16_t"></span><span id="_CPPv2N7HACover18setCurrentPositionEK7int16_t"></span><span id="HACover::setCurrentPosition__int16_tC"></span><span class="target" id="class_h_a_cover_1af5197b9cf6ca7960b5457669ab425a71"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentPosition</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover18setCurrentPositionEK7int16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current position of the cover without pushing the value to Home Assistant. This method may be useful if you want to change the position before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>position</strong> – The new position of the cover (0-100). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HACover18getCurrentPositionEv">
<span id="_CPPv3NK7HACover18getCurrentPositionEv"></span><span id="_CPPv2NK7HACover18getCurrentPositionEv"></span><span id="HACover::getCurrentPositionC"></span><span class="target" id="class_h_a_cover_1ae1cfe3fee21730a5a53fc549fdcdb32e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentPosition</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HACover18getCurrentPositionEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known position of the cover. By default position is set to HACover::DefaultPosition </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover14setDeviceClassEPKc">
<span id="_CPPv3N7HACover14setDeviceClassEPKc"></span><span id="_CPPv2N7HACover14setDeviceClassEPKc"></span><span id="HACover::setDeviceClass__cCP"></span><span class="target" id="class_h_a_cover_1a3d0b05d67d4b97c0faf616f84bd2ad5b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/cover/">https://www.home-assistant.io/integrations/cover/</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover7setIconEPKc">
<span id="_CPPv3N7HACover7setIconEPKc"></span><span id="_CPPv2N7HACover7setIconEPKc"></span><span id="HACover::setIcon__cCP"></span><span class="target" id="class_h_a_cover_1addcc10a098f7af8ffbc01663c709e128"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the cover. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover9setRetainEKb">
<span id="_CPPv3N7HACover9setRetainEKb"></span><span id="_CPPv2N7HACover9setRetainEKb"></span><span id="HACover::setRetain__bC"></span><span class="target" id="class_h_a_cover_1a38622ab040876086d96d96c8d8e8b68c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the cover’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover13setOptimisticEKb">
<span id="_CPPv3N7HACover13setOptimisticEKb"></span><span id="_CPPv2N7HACover13setOptimisticEKb"></span><span id="HACover::setOptimistic__bC"></span><span class="target" id="class_h_a_cover_1a42a4565a985e763ecaed98501c57af31"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the cover state. In this mode the cover state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE">
<span id="_CPPv3N7HACover9onCommandEPFv12CoverCommandP7HACoverE"></span><span id="_CPPv2N7HACover9onCommandEPFv12CoverCommandP7HACoverE"></span><span class="target" id="class_h_a_cover_1abbb83662728bb1b9c2ef12eec56ebaab"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv4N7HACover12CoverCommandE" title="HACover::CoverCommand"><span class="n"><span class="pre">CoverCommand</span></span></a><span class="w"> </span><span class="n"><span class="pre">cmd</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HACover" title="HACover"><span class="n"><span class="pre">HACover</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover9onCommandEPFv12CoverCommandP7HACoverE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the command from HA is received. Please note that it’s not possible to register multiple callbacks for the same cover.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-attributes">Public Static Attributes</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover15DefaultPositionE">
<span id="_CPPv3N7HACover15DefaultPositionE"></span><span id="_CPPv2N7HACover15DefaultPositionE"></span><span id="HACover::DefaultPosition__int16_tC"></span><span class="target" id="class_h_a_cover_1afd4d58fb2330cfca558aee2c4fec9902"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DefaultPosition</span></span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="o"><span class="pre">-</span></span><span class="m"><span class="pre">32768</span></span><a class="headerlink" href="#_CPPv4N7HACover15DefaultPositionE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover15buildSerializerEv">
<span id="_CPPv3N7HACover15buildSerializerEv"></span><span id="_CPPv2N7HACover15buildSerializerEv"></span><span id="HACover::buildSerializer"></span><span class="target" id="class_h_a_cover_1a3570934f50a3e49ded5bf5503447473a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HACover15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover15onMqttConnectedEv">
<span id="_CPPv3N7HACover15onMqttConnectedEv"></span><span id="_CPPv2N7HACover15onMqttConnectedEv"></span><span id="HACover::onMqttConnected"></span><span class="target" id="class_h_a_cover_1a33425e7e7c0d47401d8d6d15786a0903"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HACover15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HACover::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_cover_1a9e8375cb30d742cee84cb4bbae72c2e5"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HACover13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover12publishStateEK10CoverState">
<span id="_CPPv3N7HACover12publishStateEK10CoverState"></span><span id="_CPPv2N7HACover12publishStateEK10CoverState"></span><span id="HACover::publishState__CoverStateC"></span><span class="target" id="class_h_a_cover_1ad3ff2ed975f0150b3cfa6256bb66642a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HACover10CoverStateE" title="HACover::CoverState"><span class="n"><span class="pre">CoverState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover12publishStateEK10CoverState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover15publishPositionEK7int16_t">
<span id="_CPPv3N7HACover15publishPositionEK7int16_t"></span><span id="_CPPv2N7HACover15publishPositionEK7int16_t"></span><span id="HACover::publishPosition__int16_tC"></span><span class="target" id="class_h_a_cover_1a8f526e5ef26d8dfc5e20cfea43673de9"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishPosition</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">position</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover15publishPositionEK7int16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given position.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>position</strong> – The position to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HACover13handleCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HACover13handleCommandEPK7uint8_tK8uint16_t"></span><span id="HACover::handleCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_cover_1a290b1a2e4c5cc15d145701dd7804118d"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HACover13handleCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given command and executes the cover’s callback with proper enum’s property.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover9_featuresE">
<span id="_CPPv3N7HACover9_featuresE"></span><span id="_CPPv2N7HACover9_featuresE"></span><span id="HACover::_features__uint8_tC"></span><span class="target" id="class_h_a_cover_1a3e458afa9f7be9a312a5a7e22679ea18"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_features</span></span></span><a class="headerlink" href="#_CPPv4N7HACover9_featuresE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Features enabled for the cover. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover13_currentStateE">
<span id="_CPPv3N7HACover13_currentStateE"></span><span id="_CPPv2N7HACover13_currentStateE"></span><span id="HACover::_currentState__CoverState"></span><span class="target" id="class_h_a_cover_1a1ebddaf7dc9e916708c7db64d4db5b47"></span><a class="reference internal" href="#_CPPv4N7HACover10CoverStateE" title="HACover::CoverState"><span class="n"><span class="pre">CoverState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N7HACover13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the cover. By default it’s <code class="docutils literal notranslate"><span class="pre">HACover::StateUnknown</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover16_currentPositionE">
<span id="_CPPv3N7HACover16_currentPositionE"></span><span id="_CPPv2N7HACover16_currentPositionE"></span><span id="HACover::_currentPosition__int16_t"></span><span class="target" id="class_h_a_cover_1ad68c05ebfa36c614ef5d775857495b5d"></span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentPosition</span></span></span><a class="headerlink" href="#_CPPv4N7HACover16_currentPositionE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current position of the cover. By default it’s <code class="docutils literal notranslate"><span class="pre">HACover::DefaultPosition</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover6_classE">
<span id="_CPPv3N7HACover6_classE"></span><span id="_CPPv2N7HACover6_classE"></span><span id="HACover::_class__cCP"></span><span class="target" id="class_h_a_cover_1ae252c5c6534f7c07cc81cafcaf94e907"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_class</span></span></span><a class="headerlink" href="#_CPPv4N7HACover6_classE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover5_iconE">
<span id="_CPPv3N7HACover5_iconE"></span><span id="_CPPv2N7HACover5_iconE"></span><span id="HACover::_icon__cCP"></span><span class="target" id="class_h_a_cover_1a7c5d27c9c5cd882d36564dae3d84939a"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N7HACover5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the button. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover7_retainE">
<span id="_CPPv3N7HACover7_retainE"></span><span id="_CPPv2N7HACover7_retainE"></span><span id="HACover::_retain__b"></span><span class="target" id="class_h_a_cover_1ad159e7eefbcfcb2040da810b8444102f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N7HACover7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover11_optimisticE">
<span id="_CPPv3N7HACover11_optimisticE"></span><span id="_CPPv2N7HACover11_optimisticE"></span><span id="HACover::_optimistic__b"></span><span class="target" id="class_h_a_cover_1a93ff94c4c40fd06e627c5c1884f45d3a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N7HACover11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the cover (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HACover16_commandCallbackE">
<span id="_CPPv3N7HACover16_commandCallbackE"></span><span id="_CPPv2N7HACover16_commandCallbackE"></span><span class="target" id="class_h_a_cover_1a8a3466f0350ae8d5ce9607c36aae4509"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv4N7HACover12CoverCommandE" title="HACover::CoverCommand"><span class="n"><span class="pre">CoverCommand</span></span></a><span class="w"> </span><span class="n"><span class="pre">cmd</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HACover" title="HACover"><span class="n"><span class="pre">HACover</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HACover16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The command callback that will be called when clicking the cover’s button in the HA panel. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-camera.html"
title="previous chapter">← HACamera class</a>
</li>
<li class="next">
<a href="ha-device-tracker.html"
title="next chapter">HADeviceTracker class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,377 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HADeviceTracker class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HADeviceTrigger class" href="ha-device-trigger.html" />
<link rel="prev" title="HACover class" href="ha-cover.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HADeviceTracker class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-cover.html"
title="previous chapter">← HACover class</a>
</li>
<li class="next">
<a href="ha-device-trigger.html"
title="next chapter">HADeviceTrigger class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hadevicetracker-class">
<h1>HADeviceTracker class<a class="headerlink" href="#hadevicetracker-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv415HADeviceTracker">
<span id="_CPPv315HADeviceTracker"></span><span id="_CPPv215HADeviceTracker"></span><span id="HADeviceTracker"></span><span class="target" id="class_h_a_device_tracker"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTracker</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv415HADeviceTracker" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_device_tracker"><span class="std std-ref">HADeviceTracker</span></a> allows to implement a custom device’s tracker.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/device_tracker.mqtt/">https://www.home-assistant.io/integrations/device_tracker.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceTypeE">
<span id="_CPPv3N15HADeviceTracker10SourceTypeE"></span><span id="_CPPv2N15HADeviceTracker10SourceTypeE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6f"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Available source types of the tracker. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE">
<span id="_CPPv3N15HADeviceTracker10SourceType17SourceTypeUnknownE"></span><span id="_CPPv2N15HADeviceTracker10SourceType17SourceTypeUnknownE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6fac0a09ef1c187b102b0435fc650b3fcbe"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceTypeUnknown</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceType17SourceTypeUnknownE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE">
<span id="_CPPv3N15HADeviceTracker10SourceType13SourceTypeGPSE"></span><span id="_CPPv2N15HADeviceTracker10SourceType13SourceTypeGPSE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6fa60a8a4aa8d8ae4d6e453d169d32c1871"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceTypeGPS</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceType13SourceTypeGPSE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE">
<span id="_CPPv3N15HADeviceTracker10SourceType16SourceTypeRouterE"></span><span id="_CPPv2N15HADeviceTracker10SourceType16SourceTypeRouterE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6fa42ff1741c0461a5afd8f526c1a872ed5"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceTypeRouter</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceType16SourceTypeRouterE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE">
<span id="_CPPv3N15HADeviceTracker10SourceType19SourceTypeBluetoothE"></span><span id="_CPPv2N15HADeviceTracker10SourceType19SourceTypeBluetoothE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6faa53035502cf00b9f26c9968ea0d3d897"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceTypeBluetooth</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceType19SourceTypeBluetoothE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE">
<span id="_CPPv3N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE"></span><span id="_CPPv2N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE"></span><span class="target" id="class_h_a_device_tracker_1a38a338bbdb1b7cf37092e1fefaef6c6fa6fb61fe863b9a18d992a27a73115bf39"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SourceTypeBluetoothLE</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker10SourceType21SourceTypeBluetoothLEE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12TrackerStateE">
<span id="_CPPv3N15HADeviceTracker12TrackerStateE"></span><span id="_CPPv2N15HADeviceTracker12TrackerStateE"></span><span class="target" id="class_h_a_device_tracker_1a984e77906c38849770bfc9893b607bfe"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TrackerState</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Available states that can be reported to the HA panel. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE">
<span id="_CPPv3N15HADeviceTracker12TrackerState12StateUnknownE"></span><span id="_CPPv2N15HADeviceTracker12TrackerState12StateUnknownE"></span><span class="target" id="class_h_a_device_tracker_1a984e77906c38849770bfc9893b607bfeab4411e307b821590b20a457b28e94404"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateUnknown</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12TrackerState12StateUnknownE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12TrackerState9StateHomeE">
<span id="_CPPv3N15HADeviceTracker12TrackerState9StateHomeE"></span><span id="_CPPv2N15HADeviceTracker12TrackerState9StateHomeE"></span><span class="target" id="class_h_a_device_tracker_1a984e77906c38849770bfc9893b607bfea98cab4bf2c8b7f766c578844c871e9fd"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateHome</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12TrackerState9StateHomeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE">
<span id="_CPPv3N15HADeviceTracker12TrackerState12StateNotHomeE"></span><span id="_CPPv2N15HADeviceTracker12TrackerState12StateNotHomeE"></span><span class="target" id="class_h_a_device_tracker_1a984e77906c38849770bfc9893b607bfeabfe0d8076e8567535903887ced3b9628"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateNotHome</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12TrackerState12StateNotHomeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE">
<span id="_CPPv3N15HADeviceTracker12TrackerState17StateNotAvailableE"></span><span id="_CPPv2N15HADeviceTracker12TrackerState17StateNotAvailableE"></span><span class="target" id="class_h_a_device_tracker_1a984e77906c38849770bfc9893b607bfeacd717223d3b368f35dba02ce1c7c9416"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateNotAvailable</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12TrackerState17StateNotAvailableE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc">
<span id="_CPPv3N15HADeviceTracker15HADeviceTrackerEPKc"></span><span id="_CPPv2N15HADeviceTracker15HADeviceTrackerEPKc"></span><span id="HADeviceTracker::HADeviceTracker__cCP"></span><span class="target" id="class_h_a_device_tracker_1ad93d8a008fc52e8dce708b0d538f51af"></span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTracker</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker15HADeviceTrackerEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the tracker. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb">
<span id="_CPPv3N15HADeviceTracker8setStateEK12TrackerStateKb"></span><span id="_CPPv2N15HADeviceTracker8setStateEK12TrackerStateKb"></span><span id="HADeviceTracker::setState__TrackerStateC.bC"></span><span class="target" id="class_h_a_device_tracker_1ac36ef94bb91c143301f35ecec2f47b66"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="HADeviceTracker::TrackerState"><span class="n"><span class="pre">TrackerState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker8setStateEK12TrackerStateKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the state of the tracker and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – The new state of the tracker. </p></li>
<li><p><strong>force</strong> – Forces to update the state without comparing it to a previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState">
<span id="_CPPv3N15HADeviceTracker15setCurrentStateEK12TrackerState"></span><span id="_CPPv2N15HADeviceTracker15setCurrentStateEK12TrackerState"></span><span id="HADeviceTracker::setCurrentState__TrackerStateC"></span><span class="target" id="class_h_a_device_tracker_1a58e49bf4027e3cb9e4f45177d4ed2bb0"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="HADeviceTracker::TrackerState"><span class="n"><span class="pre">TrackerState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker15setCurrentStateEK12TrackerState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current state of the tracker without publishing it to Home Assistant. This method may be useful if you want to change the state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The new state of the tracker. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTracker8getStateEv">
<span id="_CPPv3NK15HADeviceTracker8getStateEv"></span><span id="_CPPv2NK15HADeviceTracker8getStateEv"></span><span id="HADeviceTracker::getStateC"></span><span class="target" id="class_h_a_device_tracker_1a385aaea54a1facc2d01db59bf7a63a88"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="HADeviceTracker::TrackerState"><span class="n"><span class="pre">TrackerState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTracker8getStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known state of the tracker. If setState method wasn’t called the initial value will be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker7setIconEPKc">
<span id="_CPPv3N15HADeviceTracker7setIconEPKc"></span><span id="_CPPv2N15HADeviceTracker7setIconEPKc"></span><span id="HADeviceTracker::setIcon__cCP"></span><span class="target" id="class_h_a_device_tracker_1a727faee54b475aae5351afe7b3e72bf9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the tracker. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType">
<span id="_CPPv3N15HADeviceTracker13setSourceTypeEK10SourceType"></span><span id="_CPPv2N15HADeviceTracker13setSourceTypeEK10SourceType"></span><span id="HADeviceTracker::setSourceType__SourceTypeC"></span><span class="target" id="class_h_a_device_tracker_1ac5ae4dfb5dea532dc3b891524f6ceb62"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setSourceType</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N15HADeviceTracker10SourceTypeE" title="HADeviceTracker::SourceType"><span class="n"><span class="pre">SourceType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">type</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker13setSourceTypeEK10SourceType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the source type of the tracker.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>type</strong> – The source type (gps, router, bluetooth, bluetooth LE). </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker15buildSerializerEv">
<span id="_CPPv3N15HADeviceTracker15buildSerializerEv"></span><span id="_CPPv2N15HADeviceTracker15buildSerializerEv"></span><span id="HADeviceTracker::buildSerializer"></span><span class="target" id="class_h_a_device_tracker_1ad45fcf9a201312aaea4b9c263569343b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker15onMqttConnectedEv">
<span id="_CPPv3N15HADeviceTracker15onMqttConnectedEv"></span><span id="_CPPv2N15HADeviceTracker15onMqttConnectedEv"></span><span id="HADeviceTracker::onMqttConnected"></span><span class="target" id="class_h_a_device_tracker_1a87ad38b8132d8bf7c42885b785c72fd8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker12publishStateE12TrackerState">
<span id="_CPPv3N15HADeviceTracker12publishStateE12TrackerState"></span><span id="_CPPv2N15HADeviceTracker12publishStateE12TrackerState"></span><span id="HADeviceTracker::publishState__TrackerState"></span><span class="target" id="class_h_a_device_tracker_1ae3e5c8aa3e12702052fc65badc4fb7c2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="HADeviceTracker::TrackerState"><span class="n"><span class="pre">TrackerState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTracker12publishStateE12TrackerState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTracker21getSourceTypePropertyEv">
<span id="_CPPv3NK15HADeviceTracker21getSourceTypePropertyEv"></span><span id="_CPPv2NK15HADeviceTracker21getSourceTypePropertyEv"></span><span id="HADeviceTracker::getSourceTypePropertyC"></span><span class="target" id="class_h_a_device_tracker_1a66da7ce02358a637b65bddb03a9b9bf9"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getSourceTypeProperty</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTracker21getSourceTypePropertyEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns progmem string representing source type of the tracker. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker5_iconE">
<span id="_CPPv3N15HADeviceTracker5_iconE"></span><span id="_CPPv2N15HADeviceTracker5_iconE"></span><span id="HADeviceTracker::_icon__cCP"></span><span class="target" id="class_h_a_device_tracker_1a6c828c6f05a8aaafb547a48b87607cb8"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the tracker. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker11_sourceTypeE">
<span id="_CPPv3N15HADeviceTracker11_sourceTypeE"></span><span id="_CPPv2N15HADeviceTracker11_sourceTypeE"></span><span id="HADeviceTracker::_sourceType__SourceType"></span><span class="target" id="class_h_a_device_tracker_1a3692d1f199246a3f49ff2f3cfd93ff2c"></span><a class="reference internal" href="#_CPPv4N15HADeviceTracker10SourceTypeE" title="HADeviceTracker::SourceType"><span class="n"><span class="pre">SourceType</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_sourceType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker11_sourceTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The source type of the tracker. By default it’s <code class="docutils literal notranslate"><span class="pre">HADeviceTracker::SourceTypeUnknown</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTracker13_currentStateE">
<span id="_CPPv3N15HADeviceTracker13_currentStateE"></span><span id="_CPPv2N15HADeviceTracker13_currentStateE"></span><span id="HADeviceTracker::_currentState__TrackerState"></span><span class="target" id="class_h_a_device_tracker_1a7ec99b3627fffe1467cb330361a02f56"></span><a class="reference internal" href="#_CPPv4N15HADeviceTracker12TrackerStateE" title="HADeviceTracker::TrackerState"><span class="n"><span class="pre">TrackerState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTracker13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the device’s tracker. By default its <code class="docutils literal notranslate"><span class="pre">HADeviceTracker::StateUnknown</span></code>. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-cover.html"
title="previous chapter">← HACover class</a>
</li>
<li class="next">
<a href="ha-device-trigger.html"
title="next chapter">HADeviceTrigger class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,479 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HADeviceTrigger class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAFan class" href="ha-fan.html" />
<link rel="prev" title="HADeviceTracker class" href="ha-device-tracker.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HADeviceTrigger class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-device-tracker.html"
title="previous chapter">← HADeviceTracker class</a>
</li>
<li class="next">
<a href="ha-fan.html"
title="next chapter">HAFan class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hadevicetrigger-class">
<h1>HADeviceTrigger class<a class="headerlink" href="#hadevicetrigger-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv415HADeviceTrigger">
<span id="_CPPv315HADeviceTrigger"></span><span id="_CPPv215HADeviceTrigger"></span><span id="HADeviceTrigger"></span><span class="target" id="class_h_a_device_trigger"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTrigger</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv415HADeviceTrigger" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_device_trigger"><span class="std std-ref">HADeviceTrigger</span></a> allows to a custom trigger that can be used in the Home Assistant automation. For example, it can be a wall switch that produces <code class="docutils literal notranslate"><span class="pre">press</span></code> and <code class="docutils literal notranslate"><span class="pre">long_press</span></code> actions.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/device_trigger.mqtt/">https://www.home-assistant.io/integrations/device_trigger.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1d"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TriggerType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Built-in types of the trigger. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1dad6717b65d447ef8d5cbb27033c8faafe"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonShortPressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType20ButtonShortPressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1da97cab92fc1a4c5d117596de62f44eea5"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonShortReleaseType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType22ButtonShortReleaseTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1dac0a68af076e090149de9e4a919309396"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonLongPressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType19ButtonLongPressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1dab8db1cbd9ee8cfd2101e3c756898ff5c"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonLongReleaseType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType21ButtonLongReleaseTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1dae265d114060e83a3a4db482ff40a842e"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonDoublePressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType21ButtonDoublePressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1da5847c8c8416254feb5253c6ce6fafcfd"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonTriplePressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType21ButtonTriplePressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1da53f99bf193a8b55271b566156747b818"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonQuadruplePressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuadruplePressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE">
<span id="_CPPv3N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE"></span><span id="_CPPv2N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE"></span><span class="target" id="class_h_a_device_trigger_1afa5293814079971c7a3c1d87246d0e1daf66827148f676fdebf1c4e643f93ba10"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ButtonQuintuplePressType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger11TriggerType24ButtonQuintuplePressTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TriggerSubtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Built-in subtypes of the trigger. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2a4d5ebff1c4268ac380e55e1fd1736bde"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TurnOnSubtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype13TurnOnSubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2aed8699d3de9d8f9539142c41cad62d89"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TurnOffSubtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14TurnOffSubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2aa5aebea4d4bbfef72e4830c5502596ac"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button1Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button1SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2a2d6fdf69024c6f926db0e05180eba712"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button2Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button2SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2ac4623bbd8a5d43c0d2ecd9dd93d88ce8"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button3Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button3SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2ac7a49891229d57fc3057f910a542205f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button4Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button4SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2a8eb212a635673f429223bdd11d93ea4a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button5Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button5SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE">
<span id="_CPPv3N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE"></span><span id="_CPPv2N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE"></span><span class="target" id="class_h_a_device_trigger_1aed4ca461bb696c41399027c0d649aaa2acd5c5a533845879683dfb13a5d3cee19"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Button6Subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14TriggerSubtype14Button6SubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc">
<span id="_CPPv3N15HADeviceTrigger15HADeviceTriggerEPKcPKc"></span><span id="_CPPv2N15HADeviceTrigger15HADeviceTriggerEPKcPKc"></span><span id="HADeviceTrigger::HADeviceTrigger__cCP.cCP"></span><span class="target" id="class_h_a_device_trigger_1a381ad9d7051b424050c9985c5fccf996"></span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTrigger</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">type</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">subtype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates the device trigger with a custom type and subtype. For example, it can be <code class="docutils literal notranslate"><span class="pre">click</span></code> as the type and <code class="docutils literal notranslate"><span class="pre">btn0</span></code> as the subtype. Please note that combination of the type and subtype needs to be unique in a scope of your device.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>type</strong> – String representation of the type. </p></li>
<li><p><strong>subtype</strong> – String representation of the subtype. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc">
<span id="_CPPv3N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc"></span><span id="_CPPv2N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc"></span><span id="HADeviceTrigger::HADeviceTrigger__TriggerType.cCP"></span><span class="target" id="class_h_a_device_trigger_1a87671ef60055147a9f592863dec26352"></span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTrigger</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N15HADeviceTrigger11TriggerTypeE" title="HADeviceTrigger::TriggerType"><span class="n"><span class="pre">TriggerType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">type</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">subtype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerTypePKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates the device trigger with a built-in type and a custom subtype. For example, it can be <code class="docutils literal notranslate"><span class="pre">HADeviceTrigger::ButtonShortPressType</span></code> as the type and <code class="docutils literal notranslate"><span class="pre">btn0</span></code> as the subtype. Please note that combination of the type and subtype needs to be unique in a scope of your device.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>type</strong> – Built-in type of the trigger. </p></li>
<li><p><strong>subtype</strong> – String representation of the subtype. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype">
<span id="_CPPv3N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype"></span><span id="_CPPv2N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype"></span><span id="HADeviceTrigger::HADeviceTrigger__cCP.TriggerSubtype"></span><span class="target" id="class_h_a_device_trigger_1a8a466d3acdea037af5ab9dd304b78a84"></span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTrigger</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">type</span></span>, <a class="reference internal" href="#_CPPv4N15HADeviceTrigger14TriggerSubtypeE" title="HADeviceTrigger::TriggerSubtype"><span class="n"><span class="pre">TriggerSubtype</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">subtype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15HADeviceTriggerEPKc14TriggerSubtype" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates the device trigger with a custom type and a built-in subtype. For example, it can be <code class="docutils literal notranslate"><span class="pre">click</span></code> as the type and <code class="docutils literal notranslate"><span class="pre">HADeviceTrigger::Button1Subtype</span></code> as the subtype. Please note that combination of the type and subtype needs to be unique in a scope of your device.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>type</strong> – String representation of the subtype. </p></li>
<li><p><strong>subtype</strong> – Built-in subtype of the trigger. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype">
<span id="_CPPv3N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype"></span><span id="_CPPv2N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype"></span><span id="HADeviceTrigger::HADeviceTrigger__TriggerType.TriggerSubtype"></span><span class="target" id="class_h_a_device_trigger_1a905404693ada525dd1d7bda17dbd4706"></span><span class="sig-name descname"><span class="n"><span class="pre">HADeviceTrigger</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N15HADeviceTrigger11TriggerTypeE" title="HADeviceTrigger::TriggerType"><span class="n"><span class="pre">TriggerType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">type</span></span>, <a class="reference internal" href="#_CPPv4N15HADeviceTrigger14TriggerSubtypeE" title="HADeviceTrigger::TriggerSubtype"><span class="n"><span class="pre">TriggerSubtype</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">subtype</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15HADeviceTriggerE11TriggerType14TriggerSubtype" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates the device trigger with a built-in type and built-in subtype. For example, it can be <code class="docutils literal notranslate"><span class="pre">HADeviceTrigger::ButtonShortPressType</span></code> as the type and <code class="docutils literal notranslate"><span class="pre">HADeviceTrigger::Button1Subtype</span></code> as the subtype. Please note that combination of the type and subtype needs to be unique in a scope of your device.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>type</strong> – Built-in type of the trigger. </p></li>
<li><p><strong>subtype</strong> – Built-in subtype of the trigger. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTriggerD0Ev">
<span id="_CPPv3N15HADeviceTriggerD0Ev"></span><span id="_CPPv2N15HADeviceTriggerD0Ev"></span><span id="HADeviceTrigger::~HADeviceTrigger"></span><span class="target" id="class_h_a_device_trigger_1a5c38d55de3608c0cea7e247d96a281b4"></span><span class="sig-name descname"><span class="n"><span class="pre">~HADeviceTrigger</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTriggerD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd><p>Frees memory allocated by the class. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger7triggerEv">
<span id="_CPPv3N15HADeviceTrigger7triggerEv"></span><span id="_CPPv2N15HADeviceTrigger7triggerEv"></span><span id="HADeviceTrigger::trigger"></span><span class="target" id="class_h_a_device_trigger_1af5ccc2a8c7725822d5fff6be89432903"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">trigger</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger7triggerEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes MQTT message with the trigger event. The published message is not retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger7getTypeEv">
<span id="_CPPv3NK15HADeviceTrigger7getTypeEv"></span><span id="_CPPv2NK15HADeviceTrigger7getTypeEv"></span><span id="HADeviceTrigger::getTypeC"></span><span class="target" id="class_h_a_device_trigger_1a41c0dfc7efb9afbeebda68200f1ab368"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getType</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger7getTypeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the type of the trigger. If the built-in type is used the returned value points to the flash memory. Use <code class="docutils literal notranslate"><a class="reference internal" href="#class_h_a_device_trigger_1a9c71bfeb19fca803eb2f1c9e2f0e9320"><span class="std std-ref"><span class="pre">HADeviceTrigger::isProgmemType</span></span></a></code> to verify if the returned value is the progmem pointer.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Pointer to the type. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger13isProgmemTypeEv">
<span id="_CPPv3NK15HADeviceTrigger13isProgmemTypeEv"></span><span id="_CPPv2NK15HADeviceTrigger13isProgmemTypeEv"></span><span id="HADeviceTrigger::isProgmemTypeC"></span><span class="target" id="class_h_a_device_trigger_1a9c71bfeb19fca803eb2f1c9e2f0e9320"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isProgmemType</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger13isProgmemTypeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the built-in type was assigned to the trigger. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger10getSubtypeEv">
<span id="_CPPv3NK15HADeviceTrigger10getSubtypeEv"></span><span id="_CPPv2NK15HADeviceTrigger10getSubtypeEv"></span><span id="HADeviceTrigger::getSubtypeC"></span><span class="target" id="class_h_a_device_trigger_1ac7e88ab8a8c25414e7b424ade446f1bd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getSubtype</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger10getSubtypeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the subtype of the trigger. If the built-in subtype is used the returned value points to the flash memory. Use <code class="docutils literal notranslate"><a class="reference internal" href="#class_h_a_device_trigger_1a590f7b3442517232be40ea28753b5439"><span class="std std-ref"><span class="pre">HADeviceTrigger::isProgmemSubtype</span></span></a></code> to verify if the returned value is the progmem pointer.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Pointer to the subtype. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger16isProgmemSubtypeEv">
<span id="_CPPv3NK15HADeviceTrigger16isProgmemSubtypeEv"></span><span id="_CPPv2NK15HADeviceTrigger16isProgmemSubtypeEv"></span><span id="HADeviceTrigger::isProgmemSubtypeC"></span><span class="target" id="class_h_a_device_trigger_1a590f7b3442517232be40ea28753b5439"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isProgmemSubtype</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger16isProgmemSubtypeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the built-in subtype was assigned to the trigger. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15buildSerializerEv">
<span id="_CPPv3N15HADeviceTrigger15buildSerializerEv"></span><span id="_CPPv2N15HADeviceTrigger15buildSerializerEv"></span><span id="HADeviceTrigger::buildSerializer"></span><span class="target" id="class_h_a_device_trigger_1a84d6b66acdd287caa6c5b32bdfa07322"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger15onMqttConnectedEv">
<span id="_CPPv3N15HADeviceTrigger15onMqttConnectedEv"></span><span id="_CPPv2N15HADeviceTrigger15onMqttConnectedEv"></span><span id="HADeviceTrigger::onMqttConnected"></span><span class="target" id="class_h_a_device_trigger_1a27f47a60fcad7d095f2349bac4317365"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger15calculateIdSizeEv">
<span id="_CPPv3NK15HADeviceTrigger15calculateIdSizeEv"></span><span id="_CPPv2NK15HADeviceTrigger15calculateIdSizeEv"></span><span id="HADeviceTrigger::calculateIdSizeC"></span><span class="target" id="class_h_a_device_trigger_1a703d68ef618ce49413f4659e2fbf3f99"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateIdSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger15calculateIdSizeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates desired size of the unique ID based on the type and subtype that were passed to the constructor. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger13buildUniqueIdEv">
<span id="_CPPv3N15HADeviceTrigger13buildUniqueIdEv"></span><span id="_CPPv2N15HADeviceTrigger13buildUniqueIdEv"></span><span id="HADeviceTrigger::buildUniqueId"></span><span class="target" id="class_h_a_device_trigger_1ae532e1ff2e712f20259e0a32a6d4a378"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildUniqueId</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger13buildUniqueIdEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Builds the unique ID of the device’s type based on the type and subtype that were passed to the constructor. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType">
<span id="_CPPv3NK15HADeviceTrigger20determineProgmemTypeE11TriggerType"></span><span id="_CPPv2NK15HADeviceTrigger20determineProgmemTypeE11TriggerType"></span><span id="HADeviceTrigger::determineProgmemType__TriggerTypeC"></span><span class="target" id="class_h_a_device_trigger_1aa58fe524568ee959afa04136b297d752"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">determineProgmemType</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N15HADeviceTrigger11TriggerTypeE" title="HADeviceTrigger::TriggerType"><span class="n"><span class="pre">TriggerType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">type</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger20determineProgmemTypeE11TriggerType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns pointer to the flash memory that represents the given type.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>subtype</strong> – Built-in type enum’s value. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Pointer to the flash memory if the given type is supported. For the unsupported type the nullptr is returned. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype">
<span id="_CPPv3NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype"></span><span id="_CPPv2NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype"></span><span id="HADeviceTrigger::determineProgmemSubtype__TriggerSubtypeC"></span><span class="target" id="class_h_a_device_trigger_1a86973d5f7680f0b2c81746b603b9607a"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">determineProgmemSubtype</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N15HADeviceTrigger14TriggerSubtypeE" title="HADeviceTrigger::TriggerSubtype"><span class="n"><span class="pre">TriggerSubtype</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">subtype</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK15HADeviceTrigger23determineProgmemSubtypeE14TriggerSubtype" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns pointer to the flash memory that represents the given subtype.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>subtype</strong> – Built-in subtype enum’s value. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Pointer to the flash memory if the given subtype is supported. For the unsupported subtype the nullptr is returned. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger5_typeE">
<span id="_CPPv3N15HADeviceTrigger5_typeE"></span><span id="_CPPv2N15HADeviceTrigger5_typeE"></span><span id="HADeviceTrigger::_type__cCP"></span><span class="target" id="class_h_a_device_trigger_1a88b1d1090e345184ec9deedce27af780"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_type</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger5_typeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the trigger’s type. It can be pointer to the flash memory. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger8_subtypeE">
<span id="_CPPv3N15HADeviceTrigger8_subtypeE"></span><span id="_CPPv2N15HADeviceTrigger8_subtypeE"></span><span id="HADeviceTrigger::_subtype__cCP"></span><span class="target" id="class_h_a_device_trigger_1acf4b0a3c45c848d98023d9f52713b247"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_subtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger8_subtypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the trigger’s subtype. It can be pointer to the flash memory. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger14_isProgmemTypeE">
<span id="_CPPv3N15HADeviceTrigger14_isProgmemTypeE"></span><span id="_CPPv2N15HADeviceTrigger14_isProgmemTypeE"></span><span id="HADeviceTrigger::_isProgmemType__b"></span><span class="target" id="class_h_a_device_trigger_1a7b35e05003f99d5335f1716c7850db13"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_isProgmemType</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger14_isProgmemTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether the type points to the flash memory. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N15HADeviceTrigger17_isProgmemSubtypeE">
<span id="_CPPv3N15HADeviceTrigger17_isProgmemSubtypeE"></span><span id="_CPPv2N15HADeviceTrigger17_isProgmemSubtypeE"></span><span id="HADeviceTrigger::_isProgmemSubtype__b"></span><span class="target" id="class_h_a_device_trigger_1ae03e2e8c6b6133b71d00bf2d9168feaa"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_isProgmemSubtype</span></span></span><a class="headerlink" href="#_CPPv4N15HADeviceTrigger17_isProgmemSubtypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether the subtype points to the flash memory. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-device-tracker.html"
title="previous chapter">← HADeviceTracker class</a>
</li>
<li class="next">
<a href="ha-fan.html"
title="next chapter">HAFan class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+529
View File
@@ -0,0 +1,529 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HAFan class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAHVAC class" href="ha-hvac.html" />
<link rel="prev" title="HADeviceTrigger class" href="ha-device-trigger.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HAFan class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-device-trigger.html"
title="previous chapter">← HADeviceTrigger class</a>
</li>
<li class="next">
<a href="ha-hvac.html"
title="next chapter">HAHVAC class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hafan-class">
<h1>HAFan class<a class="headerlink" href="#hafan-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv45HAFan">
<span id="_CPPv35HAFan"></span><span id="_CPPv25HAFan"></span><span id="HAFan"></span><span class="target" id="class_h_a_fan"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAFan</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv45HAFan" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_fan"><span class="std std-ref">HAFan</span></a> allows adding a controllable fan in the Home Assistant panel. The library supports only the state and speed of the fan. If you want more features please open a new GitHub issue.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/fan.mqtt/">https://www.home-assistant.io/integrations/fan.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan8FeaturesE">
<span id="_CPPv3N5HAFan8FeaturesE"></span><span id="_CPPv2N5HAFan8FeaturesE"></span><span class="target" id="class_h_a_fan_1ac2952d493b1df35b3c3fa87d0a9abe9a"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Features</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan8FeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan8Features15DefaultFeaturesE">
<span id="_CPPv3N5HAFan8Features15DefaultFeaturesE"></span><span id="_CPPv2N5HAFan8Features15DefaultFeaturesE"></span><span class="target" id="class_h_a_fan_1ac2952d493b1df35b3c3fa87d0a9abe9aa04cec7e09d833af990cbf51cb5a94417"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DefaultFeatures</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan8Features15DefaultFeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan8Features13SpeedsFeatureE">
<span id="_CPPv3N5HAFan8Features13SpeedsFeatureE"></span><span id="_CPPv2N5HAFan8Features13SpeedsFeatureE"></span><span class="target" id="class_h_a_fan_1ac2952d493b1df35b3c3fa87d0a9abe9aab3dc217392d8a8052cf3aa3128f7fd69"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SpeedsFeature</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan8Features13SpeedsFeatureE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan5HAFanEPKcK7uint8_t">
<span id="_CPPv3N5HAFan5HAFanEPKcK7uint8_t"></span><span id="_CPPv2N5HAFan5HAFanEPKcK7uint8_t"></span><span id="HAFan::HAFan__cCP.uint8_tC"></span><span class="target" id="class_h_a_fan_1a3b0184557d94a793dffcfb0c2c52d42b"></span><span class="sig-name descname"><span class="n"><span class="pre">HAFan</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">features</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5HAFan8Features15DefaultFeaturesE" title="HAFan::DefaultFeatures"><span class="n"><span class="pre">DefaultFeatures</span></span></a><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan5HAFanEPKcK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – The unique ID of the fan. It needs to be unique in a scope of your device. </p></li>
<li><p><strong>features</strong> – Features that should be enabled for the fan. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan8setStateEKbKb">
<span id="_CPPv3N5HAFan8setStateEKbKb"></span><span id="_CPPv2N5HAFan8setStateEKbKb"></span><span id="HAFan::setState__bC.bC"></span><span class="target" id="class_h_a_fan_1a114762da8e47dd00536cd61b2bf95fed"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan8setStateEKbKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the fan and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the fan. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan8setSpeedEK8uint16_tKb">
<span id="_CPPv3N5HAFan8setSpeedEK8uint16_tKb"></span><span id="_CPPv2N5HAFan8setSpeedEK8uint16_tKb"></span><span id="HAFan::setSpeed__uint16_tC.bC"></span><span class="target" id="class_h_a_fan_1a1c729717948c2a47cdfdb7cbd529c529"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setSpeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">speed</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan8setSpeedEK8uint16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the speed of the fan and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>speed</strong> – The new speed of the fan. It should be in range of min and max value. </p></li>
<li><p><strong>force</strong> – Forces to update the value without comparing it to a previous known value. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan6turnOnEv">
<span id="_CPPv3N5HAFan6turnOnEv"></span><span id="_CPPv2N5HAFan6turnOnEv"></span><span id="HAFan::turnOn"></span><span class="target" id="class_h_a_fan_1a77303e853ecd9b21657d9fda1fca528a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOn</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan6turnOnEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(true)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan7turnOffEv">
<span id="_CPPv3N5HAFan7turnOffEv"></span><span id="_CPPv2N5HAFan7turnOffEv"></span><span id="HAFan::turnOff"></span><span class="target" id="class_h_a_fan_1a109a8563ac17cf753e90166e3eed471f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOff</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan7turnOffEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(false)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan15setCurrentStateEKb">
<span id="_CPPv3N5HAFan15setCurrentStateEKb"></span><span id="_CPPv2N5HAFan15setCurrentStateEKb"></span><span id="HAFan::setCurrentState__bC"></span><span class="target" id="class_h_a_fan_1a8f0401511c112c9492b007125e6be5a7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan15setCurrentStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets current state of the fan without publishing it to Home Assistant. This method may be useful if you want to change state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the fan. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5HAFan15getCurrentStateEv">
<span id="_CPPv3NK5HAFan15getCurrentStateEv"></span><span id="_CPPv2NK5HAFan15getCurrentStateEv"></span><span id="HAFan::getCurrentStateC"></span><span class="target" id="class_h_a_fan_1a7fa37668dff36008fdbc7a68ae4174bc"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5HAFan15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the fan. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t">
<span id="_CPPv3N5HAFan15setCurrentSpeedEK8uint16_t"></span><span id="_CPPv2N5HAFan15setCurrentSpeedEK8uint16_t"></span><span id="HAFan::setCurrentSpeed__uint16_tC"></span><span class="target" id="class_h_a_fan_1a804407492c4fa2b843c139cdb3dd59b8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentSpeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">speed</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan15setCurrentSpeedEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current speed of the fan without pushing the value to Home Assistant. This method may be useful if you want to change the speed before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>speed</strong> – The new speed of the fan. It should be in range of min and max value. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5HAFan15getCurrentSpeedEv">
<span id="_CPPv3NK5HAFan15getCurrentSpeedEv"></span><span id="_CPPv2NK5HAFan15getCurrentSpeedEv"></span><span id="HAFan::getCurrentSpeedC"></span><span class="target" id="class_h_a_fan_1a3d17377dfff961d63ec0353981654d1a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentSpeed</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5HAFan15getCurrentSpeedEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known speed of the fan. By default speed is set to <code class="docutils literal notranslate"><span class="pre">0</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan7setIconEPKc">
<span id="_CPPv3N5HAFan7setIconEPKc"></span><span id="_CPPv2N5HAFan7setIconEPKc"></span><span id="HAFan::setIcon__cCP"></span><span class="target" id="class_h_a_fan_1af661ea2d90c3b17121fa5d6e40059db2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the fan. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan9setRetainEKb">
<span id="_CPPv3N5HAFan9setRetainEKb"></span><span id="_CPPv2N5HAFan9setRetainEKb"></span><span id="HAFan::setRetain__bC"></span><span class="target" id="class_h_a_fan_1aaa185f079e946717fa0af42b927e694d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the fan’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan13setOptimisticEKb">
<span id="_CPPv3N5HAFan13setOptimisticEKb"></span><span id="_CPPv2N5HAFan13setOptimisticEKb"></span><span id="HAFan::setOptimistic__bC"></span><span class="target" id="class_h_a_fan_1ae36b9e3dbb8f9c5dd401fa8f15cfa558"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the fan state. In this mode the fan state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t">
<span id="_CPPv3N5HAFan16setSpeedRangeMaxEK8uint16_t"></span><span id="_CPPv2N5HAFan16setSpeedRangeMaxEK8uint16_t"></span><span id="HAFan::setSpeedRangeMax__uint16_tC"></span><span class="target" id="class_h_a_fan_1a719c38c45d69f7e279a47d74a62d2913"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setSpeedRangeMax</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">max</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan16setSpeedRangeMaxEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the maximum of numeric output range (representing 100%). The number of speeds within the speed_range / 100 will determine the percentage step. By default the maximum range is <code class="docutils literal notranslate"><span class="pre">100</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>max</strong> – The maximum of numeric output range. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t">
<span id="_CPPv3N5HAFan16setSpeedRangeMinEK8uint16_t"></span><span id="_CPPv2N5HAFan16setSpeedRangeMinEK8uint16_t"></span><span id="HAFan::setSpeedRangeMin__uint16_tC"></span><span class="target" id="class_h_a_fan_1ad57d958fe889c336670f1726bc886d89"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setSpeedRangeMin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">min</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan16setSpeedRangeMinEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the minimum of numeric output range (off is not included, so speed_range_min - 1 represents 0 %). The number of speeds within the speed_range / 100 will determine the percentage step. By default the minimum range is <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>min</strong> – The minimum of numeric output range. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE">
<span id="_CPPv3N5HAFan14onStateCommandEPFvbP5HAFanE"></span><span id="_CPPv2N5HAFan14onStateCommandEPFvbP5HAFanE"></span><span class="target" id="class_h_a_fan_1abe03e2ddf7aa3e4dd539a87a04289ee8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onStateCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv45HAFan" title="HAFan"><span class="n"><span class="pre">HAFan</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan14onStateCommandEPFvbP5HAFanE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the state command from HA is received. Please note that it’s not possible to register multiple callbacks for the same fan.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the state must be reported back to HA using the <a class="reference internal" href="#class_h_a_fan_1a114762da8e47dd00536cd61b2bf95fed"><span class="std std-ref">HAFan::setState</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE">
<span id="_CPPv3N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE"></span><span id="_CPPv2N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE"></span><span class="target" id="class_h_a_fan_1a4e17ae5188a7e04d6d4ac43bdee10465"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onSpeedCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">speed</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv45HAFan" title="HAFan"><span class="n"><span class="pre">HAFan</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan14onSpeedCommandEPFv8uint16_tP5HAFanE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the speed command from HA is received. Please note that it’s not possible to register multiple callbacks for the same fan.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the speed must be reported back to HA using the <a class="reference internal" href="#class_h_a_fan_1a1c729717948c2a47cdfdb7cbd529c529"><span class="std std-ref">HAFan::setSpeed</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan15buildSerializerEv">
<span id="_CPPv3N5HAFan15buildSerializerEv"></span><span id="_CPPv2N5HAFan15buildSerializerEv"></span><span id="HAFan::buildSerializer"></span><span class="target" id="class_h_a_fan_1af49ce74c8723eccd743ce95464becf53"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5HAFan15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan15onMqttConnectedEv">
<span id="_CPPv3N5HAFan15onMqttConnectedEv"></span><span id="_CPPv2N5HAFan15onMqttConnectedEv"></span><span id="HAFan::onMqttConnected"></span><span class="target" id="class_h_a_fan_1a9f36b4bac50ed81e3da6ae8d34a8dfa2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5HAFan15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HAFan::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_fan_1ac1662486be74151c630e79a7b9d1f07b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N5HAFan13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan12publishStateEKb">
<span id="_CPPv3N5HAFan12publishStateEKb"></span><span id="_CPPv2N5HAFan12publishStateEKb"></span><span id="HAFan::publishState__bC"></span><span class="target" id="class_h_a_fan_1a98bd59e34b59159ab76d465695d8da3d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan12publishStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan12publishSpeedEK8uint16_t">
<span id="_CPPv3N5HAFan12publishSpeedEK8uint16_t"></span><span id="_CPPv2N5HAFan12publishSpeedEK8uint16_t"></span><span id="HAFan::publishSpeed__uint16_tC"></span><span class="target" id="class_h_a_fan_1aefb9b94829875f3d7f13b800e6347e0f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishSpeed</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">speed</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan12publishSpeedEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given speed.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>speed</strong> – The speed to publish. It should be in range of min and max value. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t"></span><span id="HAFan::handleStateCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_fan_1ae3e5dfc7f169fb459c1ff0c26ae89711"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleStateCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan18handleStateCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given state command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t"></span><span id="HAFan::handleSpeedCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_fan_1a221446005023e4b556f03e81d2dfdf4e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleSpeedCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5HAFan18handleSpeedCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given speed command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan9_featuresE">
<span id="_CPPv3N5HAFan9_featuresE"></span><span id="_CPPv2N5HAFan9_featuresE"></span><span id="HAFan::_features__uint8_tC"></span><span class="target" id="class_h_a_fan_1a1ba31ba37425705f423819a9892cfa0a"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_features</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan9_featuresE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Features enabled for the fan. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan5_iconE">
<span id="_CPPv3N5HAFan5_iconE"></span><span id="_CPPv2N5HAFan5_iconE"></span><span id="HAFan::_icon__cCP"></span><span class="target" id="class_h_a_fan_1a3a52943a2509556d072711b338971fd6"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the button. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan7_retainE">
<span id="_CPPv3N5HAFan7_retainE"></span><span id="_CPPv2N5HAFan7_retainE"></span><span id="HAFan::_retain__b"></span><span class="target" id="class_h_a_fan_1aba432c8d3c192ec6ddca4fdffb4891e3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan11_optimisticE">
<span id="_CPPv3N5HAFan11_optimisticE"></span><span id="_CPPv2N5HAFan11_optimisticE"></span><span id="HAFan::_optimistic__b"></span><span class="target" id="class_h_a_fan_1a44162bd60ff508748b6b8e482dff0f71"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the fan (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14_speedRangeMaxE">
<span id="_CPPv3N5HAFan14_speedRangeMaxE"></span><span id="_CPPv2N5HAFan14_speedRangeMaxE"></span><span id="HAFan::_speedRangeMax__HANumeric"></span><span class="target" id="class_h_a_fan_1a64ef481057528a9c7c92a6fa103303f6"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_speedRangeMax</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan14_speedRangeMaxE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum of numeric output range. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14_speedRangeMinE">
<span id="_CPPv3N5HAFan14_speedRangeMinE"></span><span id="_CPPv2N5HAFan14_speedRangeMinE"></span><span id="HAFan::_speedRangeMin__HANumeric"></span><span class="target" id="class_h_a_fan_1a7711b8c3719c624cb195e3f10a414d1c"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_speedRangeMin</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan14_speedRangeMinE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The minimum of numeric output range. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan13_currentStateE">
<span id="_CPPv3N5HAFan13_currentStateE"></span><span id="_CPPv2N5HAFan13_currentStateE"></span><span id="HAFan::_currentState__b"></span><span class="target" id="class_h_a_fan_1ada660ba2cc7d02edca116feead2ddc9c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the fan. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan13_currentSpeedE">
<span id="_CPPv3N5HAFan13_currentSpeedE"></span><span id="_CPPv2N5HAFan13_currentSpeedE"></span><span id="HAFan::_currentSpeed__uint16_t"></span><span class="target" id="class_h_a_fan_1a8323f3e5ed9df88f296d378ee1c7f3c2"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentSpeed</span></span></span><a class="headerlink" href="#_CPPv4N5HAFan13_currentSpeedE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current speed of the fan. By default it’s <code class="docutils literal notranslate"><span class="pre">0</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14_stateCallbackE">
<span id="_CPPv3N5HAFan14_stateCallbackE"></span><span id="_CPPv2N5HAFan14_stateCallbackE"></span><span class="target" id="class_h_a_fan_1aae14e20bedfe0c888ff28cf666968c0a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_stateCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv45HAFan" title="HAFan"><span class="n"><span class="pre">HAFan</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N5HAFan14_stateCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the state command is received from the HA. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N5HAFan14_speedCallbackE">
<span id="_CPPv3N5HAFan14_speedCallbackE"></span><span id="_CPPv2N5HAFan14_speedCallbackE"></span><span class="target" id="class_h_a_fan_1ac83fd1716649b258ab263fee32a5c63a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_speedCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">speed</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv45HAFan" title="HAFan"><span class="n"><span class="pre">HAFan</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N5HAFan14_speedCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the speed command is received from the HA. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-device-trigger.html"
title="previous chapter">← HADeviceTrigger class</a>
</li>
<li class="next">
<a href="ha-hvac.html"
title="next chapter">HAHVAC class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,803 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HALight class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HALock class" href="ha-lock.html" />
<link rel="prev" title="HAHVAC class" href="ha-hvac.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HALight class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-hvac.html"
title="previous chapter">← HAHVAC class</a>
</li>
<li class="next">
<a href="ha-lock.html"
title="next chapter">HALock class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="halight-class">
<h1>HALight class<a class="headerlink" href="#halight-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv47HALight">
<span id="_CPPv37HALight"></span><span id="_CPPv27HALight"></span><span id="HALight"></span><span class="target" id="class_h_a_light"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HALight</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv47HALight" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_light"><span class="std std-ref">HALight</span></a> allows adding a controllable light in the Home Assistant panel. The library supports only the state, brightness, color temperature and RGB color. If you need more features please open a new GitHub issue.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/light.mqtt/">https://www.home-assistant.io/integrations/light.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8FeaturesE">
<span id="_CPPv3N7HALight8FeaturesE"></span><span id="_CPPv2N7HALight8FeaturesE"></span><span class="target" id="class_h_a_light_1aacae5a7d42203d2fcc1b3a7307644e04"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Features</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8FeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8Features15DefaultFeaturesE">
<span id="_CPPv3N7HALight8Features15DefaultFeaturesE"></span><span id="_CPPv2N7HALight8Features15DefaultFeaturesE"></span><span class="target" id="class_h_a_light_1aacae5a7d42203d2fcc1b3a7307644e04a8461e6240acbfee73d608adc189247a9"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">DefaultFeatures</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8Features15DefaultFeaturesE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8Features17BrightnessFeatureE">
<span id="_CPPv3N7HALight8Features17BrightnessFeatureE"></span><span id="_CPPv2N7HALight8Features17BrightnessFeatureE"></span><span class="target" id="class_h_a_light_1aacae5a7d42203d2fcc1b3a7307644e04a278ccd60b0f03bc1e0dcfb80250d3fca"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BrightnessFeature</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8Features17BrightnessFeatureE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8Features23ColorTemperatureFeatureE">
<span id="_CPPv3N7HALight8Features23ColorTemperatureFeatureE"></span><span id="_CPPv2N7HALight8Features23ColorTemperatureFeatureE"></span><span class="target" id="class_h_a_light_1aacae5a7d42203d2fcc1b3a7307644e04a410167085c320fdbad2b92f9d1cea076"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ColorTemperatureFeature</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8Features23ColorTemperatureFeatureE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8Features10RGBFeatureE">
<span id="_CPPv3N7HALight8Features10RGBFeatureE"></span><span id="_CPPv2N7HALight8Features10RGBFeatureE"></span><span class="target" id="class_h_a_light_1aacae5a7d42203d2fcc1b3a7307644e04abe6e95808a00f280dc3486d64e9d4839"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RGBFeature</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8Features10RGBFeatureE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight7HALightEPKcK7uint8_t">
<span id="_CPPv3N7HALight7HALightEPKcK7uint8_t"></span><span id="_CPPv2N7HALight7HALightEPKcK7uint8_t"></span><span id="HALight::HALight__cCP.uint8_tC"></span><span class="target" id="class_h_a_light_1a8f6f3e1184207af786c36ebe602e71dc"></span><span class="sig-name descname"><span class="n"><span class="pre">HALight</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">features</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8Features15DefaultFeaturesE" title="HALight::DefaultFeatures"><span class="n"><span class="pre">DefaultFeatures</span></span></a><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight7HALightEPKcK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – The unique ID of the light. It needs to be unique in a scope of your device. </p></li>
<li><p><strong>features</strong> – Features that should be enabled for the light. You can enable multiple features by using OR bitwise operator, for example: <code class="docutils literal notranslate"><span class="pre">HALight::BrightnessFeature</span> <span class="pre">|</span> <span class="pre">HALight::ColorTemperatureFeature</span></code> </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8setStateEKbKb">
<span id="_CPPv3N7HALight8setStateEKbKb"></span><span id="_CPPv2N7HALight8setStateEKbKb"></span><span id="HALight::setState__bC.bC"></span><span class="target" id="class_h_a_light_1a5e84fdff0a3b437041d2bd485e90df5f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight8setStateEKbKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the light and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the light. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight13setBrightnessEK7uint8_tKb">
<span id="_CPPv3N7HALight13setBrightnessEK7uint8_tKb"></span><span id="_CPPv2N7HALight13setBrightnessEK7uint8_tKb"></span><span id="HALight::setBrightness__uint8_tC.bC"></span><span class="target" id="class_h_a_light_1a21dfe94eec97d858cba1b057033d5124"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setBrightness</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">brightness</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight13setBrightnessEK7uint8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the brightness of the light and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>brightness</strong> – The new brightness of the light. </p></li>
<li><p><strong>force</strong> – Forces to update the value without comparing it to a previous known value. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb">
<span id="_CPPv3N7HALight19setColorTemperatureEK8uint16_tKb"></span><span id="_CPPv2N7HALight19setColorTemperatureEK8uint16_tKb"></span><span id="HALight::setColorTemperature__uint16_tC.bC"></span><span class="target" id="class_h_a_light_1aea384cd1b758520c21ee53a97c046ca8"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setColorTemperature</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">temperature</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight19setColorTemperatureEK8uint16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the color temperature of the light and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>temperature</strong> – The new color temperature of the light. </p></li>
<li><p><strong>force</strong> – Forces to update the value without comparing it to a previous known value. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight11setRGBColorERK8RGBColorKb">
<span id="_CPPv3N7HALight11setRGBColorERK8RGBColorKb"></span><span id="_CPPv2N7HALight11setRGBColorERK8RGBColorKb"></span><span id="HALight::setRGBColor__RGBColorCR.bC"></span><span class="target" id="class_h_a_light_1ada74864dd1799168b1bb077fdf4f418d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRGBColor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">color</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight11setRGBColorERK8RGBColorKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes the RGB color of the light and publishes MQTT message. Please note that if a new color is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>color</strong> – The new RGB color of the light. </p></li>
<li><p><strong>force</strong> – Forces to update the value without comparing it to a previous known value. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight6turnOnEv">
<span id="_CPPv3N7HALight6turnOnEv"></span><span id="_CPPv2N7HALight6turnOnEv"></span><span id="HALight::turnOn"></span><span class="target" id="class_h_a_light_1a7303eb816afd2b8533aa3911a4a65d45"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOn</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight6turnOnEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(true)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight7turnOffEv">
<span id="_CPPv3N7HALight7turnOffEv"></span><span id="_CPPv2N7HALight7turnOffEv"></span><span id="HALight::turnOff"></span><span class="target" id="class_h_a_light_1a1ad06f7f15305d560c0b020b56b7c459"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOff</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight7turnOffEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(false)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight15setCurrentStateEKb">
<span id="_CPPv3N7HALight15setCurrentStateEKb"></span><span id="_CPPv2N7HALight15setCurrentStateEKb"></span><span id="HALight::setCurrentState__bC"></span><span class="target" id="class_h_a_light_1a2c98c9bdc1ffd821b84eac8093b713ce"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight15setCurrentStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets current state of the light without publishing it to Home Assistant. This method may be useful if you want to change state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the light. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight15getCurrentStateEv">
<span id="_CPPv3NK7HALight15getCurrentStateEv"></span><span id="_CPPv2NK7HALight15getCurrentStateEv"></span><span id="HALight::getCurrentStateC"></span><span class="target" id="class_h_a_light_1a0bab1803652832730b2c055036ce1688"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the light. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t">
<span id="_CPPv3N7HALight20setCurrentBrightnessEK7uint8_t"></span><span id="_CPPv2N7HALight20setCurrentBrightnessEK7uint8_t"></span><span id="HALight::setCurrentBrightness__uint8_tC"></span><span class="target" id="class_h_a_light_1ac4cb2771682305b8ecba6faf57cb97c1"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentBrightness</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">brightness</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight20setCurrentBrightnessEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current brightness of the light without pushing the value to Home Assistant. This method may be useful if you want to change the brightness before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>brightness</strong> – The new brightness of the light. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight20getCurrentBrightnessEv">
<span id="_CPPv3NK7HALight20getCurrentBrightnessEv"></span><span id="_CPPv2NK7HALight20getCurrentBrightnessEv"></span><span id="HALight::getCurrentBrightnessC"></span><span class="target" id="class_h_a_light_1a5da5ff85a780d7a30eb7ac9ffd1b8aff"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentBrightness</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight20getCurrentBrightnessEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known brightness of the light. By default brightness is set to <code class="docutils literal notranslate"><span class="pre">0</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t">
<span id="_CPPv3N7HALight26setCurrentColorTemperatureEK8uint16_t"></span><span id="_CPPv2N7HALight26setCurrentColorTemperatureEK8uint16_t"></span><span id="HALight::setCurrentColorTemperature__uint16_tC"></span><span class="target" id="class_h_a_light_1a07eb4d3299ab2d4e465dd3fab9af8ea3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentColorTemperature</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">temperature</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight26setCurrentColorTemperatureEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current color temperature of the light without pushing the value to Home Assistant. This method may be useful if you want to change the color temperature before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>colorTemp</strong> – The new color temperature (mireds). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight26getCurrentColorTemperatureEv">
<span id="_CPPv3NK7HALight26getCurrentColorTemperatureEv"></span><span id="_CPPv2NK7HALight26getCurrentColorTemperatureEv"></span><span id="HALight::getCurrentColorTemperatureC"></span><span class="target" id="class_h_a_light_1aac39a37ebec36438ad9d9776e065d759"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentColorTemperature</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight26getCurrentColorTemperatureEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known color temperature of the light. By default temperature is set to <code class="docutils literal notranslate"><span class="pre">0</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor">
<span id="_CPPv3N7HALight18setCurrentRGBColorERK8RGBColor"></span><span id="_CPPv2N7HALight18setCurrentRGBColorERK8RGBColor"></span><span id="HALight::setCurrentRGBColor__RGBColorCR"></span><span class="target" id="class_h_a_light_1a022f557d9b95b7883682215f82a998c5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentRGBColor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">color</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight18setCurrentRGBColorERK8RGBColor" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current RGB color of the light without pushing the value to Home Assistant. This method may be useful if you want to change the color before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>color</strong> – The new RGB color. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight18getCurrentRGBColorEv">
<span id="_CPPv3NK7HALight18getCurrentRGBColorEv"></span><span id="_CPPv2NK7HALight18getCurrentRGBColorEv"></span><span id="HALight::getCurrentRGBColorC"></span><span class="target" id="class_h_a_light_1a27711f2c96bf335fd02c050956d0bdf6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentRGBColor</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight18getCurrentRGBColorEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known RGB color of the light. By default the RGB color is set to <code class="docutils literal notranslate"><span class="pre">0,0,0</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight7setIconEPKc">
<span id="_CPPv3N7HALight7setIconEPKc"></span><span id="_CPPv2N7HALight7setIconEPKc"></span><span id="HALight::setIcon__cCP"></span><span class="target" id="class_h_a_light_1af68c2caf4cdfeaeb382868800e1f5545"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the light. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight9setRetainEKb">
<span id="_CPPv3N7HALight9setRetainEKb"></span><span id="_CPPv2N7HALight9setRetainEKb"></span><span id="HALight::setRetain__bC"></span><span class="target" id="class_h_a_light_1ad141999630bff120289680150e960601"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the light’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight13setOptimisticEKb">
<span id="_CPPv3N7HALight13setOptimisticEKb"></span><span id="_CPPv2N7HALight13setOptimisticEKb"></span><span id="HALight::setOptimistic__bC"></span><span class="target" id="class_h_a_light_1a0cff71d00dee8da9cef6a435ab5e496d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the light state. In this mode the light state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight18setBrightnessScaleEK7uint8_t">
<span id="_CPPv3N7HALight18setBrightnessScaleEK7uint8_t"></span><span id="_CPPv2N7HALight18setBrightnessScaleEK7uint8_t"></span><span id="HALight::setBrightnessScale__uint8_tC"></span><span class="target" id="class_h_a_light_1a851b377064ebafbc75f0276315d9a4fb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setBrightnessScale</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">scale</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight18setBrightnessScaleEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the maximum brightness value that can be set via HA panel. By default it’s <code class="docutils literal notranslate"><span class="pre">255</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>scale</strong> – The maximum value of the brightness. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight12setMinMiredsEK8uint16_t">
<span id="_CPPv3N7HALight12setMinMiredsEK8uint16_t"></span><span id="_CPPv2N7HALight12setMinMiredsEK8uint16_t"></span><span id="HALight::setMinMireds__uint16_tC"></span><span class="target" id="class_h_a_light_1a54d17e3031e33f04262c613040279df6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setMinMireds</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mireds</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight12setMinMiredsEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the minimum color temperature (mireds) value that can be set via HA panel. By default it’s <code class="docutils literal notranslate"><span class="pre">153</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mireds</strong> – The minimum value of the brightness. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight12setMaxMiredsEK8uint16_t">
<span id="_CPPv3N7HALight12setMaxMiredsEK8uint16_t"></span><span id="_CPPv2N7HALight12setMaxMiredsEK8uint16_t"></span><span id="HALight::setMaxMireds__uint16_tC"></span><span class="target" id="class_h_a_light_1a5e385baf02ecc531d0bcca5db9f97bcd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setMaxMireds</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">mireds</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight12setMaxMiredsEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the maximum color temperature (mireds) value that can be set via HA panel. By default it’s <code class="docutils literal notranslate"><span class="pre">500</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mireds</strong> – The maximum value of the brightness. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight14onStateCommandEPFvbP7HALightE">
<span id="_CPPv3N7HALight14onStateCommandEPFvbP7HALightE"></span><span id="_CPPv2N7HALight14onStateCommandEPFvbP7HALightE"></span><span class="target" id="class_h_a_light_1a5801c5d28183e4d6a71abf812f0e7a68"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onStateCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight14onStateCommandEPFvbP7HALightE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the state command from HA is received. Please note that it’s not possible to register multiple callbacks for the same light.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the state must be reported back to HA using the <a class="reference internal" href="#class_h_a_light_1a5e84fdff0a3b437041d2bd485e90df5f"><span class="std std-ref">HALight::setState</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE">
<span id="_CPPv3N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE"></span><span id="_CPPv2N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE"></span><span class="target" id="class_h_a_light_1ab8223daf6d165b9e98936896431c086f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onBrightnessCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n"><span class="pre">brightness</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight19onBrightnessCommandEPFv7uint8_tP7HALightE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the brightness command from HA is received. Please note that it’s not possible to register multiple callbacks for the same light.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the brightness must be reported back to HA using the <a class="reference internal" href="#class_h_a_light_1a21dfe94eec97d858cba1b057033d5124"><span class="std std-ref">HALight::setBrightness</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE">
<span id="_CPPv3N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE"></span><span id="_CPPv2N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE"></span><span class="target" id="class_h_a_light_1a3d51d55c68dc118e603d061f4ffcbca7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onColorTemperatureCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight25onColorTemperatureCommandEPFv8uint16_tP7HALightE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the color temperature command from HA is received. Please note that it’s not possible to register multiple callbacks for the same light.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the color temperature must be reported back to HA using the <a class="reference internal" href="#class_h_a_light_1aea384cd1b758520c21ee53a97c046ca8"><span class="std std-ref">HALight::setColorTemperature</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE">
<span id="_CPPv3N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE"></span><span id="_CPPv2N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE"></span><span class="target" id="class_h_a_light_1a6bba4ff27aad9ec933e500f78e008555"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onRGBColorCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="n"><span class="pre">color</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight17onRGBColorCommandEPFvN7HALight8RGBColorEP7HALightE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the RGB color command from HA is received. Please note that it’s not possible to register multiple callbacks for the same light.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the color must be reported back to HA using the <a class="reference internal" href="#class_h_a_light_1ada74864dd1799168b1bb077fdf4f418d"><span class="std std-ref">HALight::setRGBColor</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-attributes">Public Static Attributes</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight18RGBStringMaxLengthE">
<span id="_CPPv3N7HALight18RGBStringMaxLengthE"></span><span id="_CPPv2N7HALight18RGBStringMaxLengthE"></span><span id="HALight::RGBStringMaxLength__uint8_tC"></span><span class="target" id="class_h_a_light_1a4bd30cb311e7cc9b6dc89baf1e2d340c"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RGBStringMaxLength</span></span></span><a class="headerlink" href="#_CPPv4N7HALight18RGBStringMaxLengthE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight15buildSerializerEv">
<span id="_CPPv3N7HALight15buildSerializerEv"></span><span id="_CPPv2N7HALight15buildSerializerEv"></span><span id="HALight::buildSerializer"></span><span class="target" id="class_h_a_light_1a85a21bd750c99d5b67809ad982cccd91"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HALight15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight15onMqttConnectedEv">
<span id="_CPPv3N7HALight15onMqttConnectedEv"></span><span id="_CPPv2N7HALight15onMqttConnectedEv"></span><span id="HALight::onMqttConnected"></span><span class="target" id="class_h_a_light_1a595e4b9b9b7e6204a222b4fe11cdea96"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HALight15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HALight::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_light_1a9f9836f5420732e5c97b6b77d6334320"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HALight13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight12publishStateEKb">
<span id="_CPPv3N7HALight12publishStateEKb"></span><span id="_CPPv2N7HALight12publishStateEKb"></span><span id="HALight::publishState__bC"></span><span class="target" id="class_h_a_light_1a54b5424f3e5e82462358b3e0578e4122"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight12publishStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight17publishBrightnessEK7uint8_t">
<span id="_CPPv3N7HALight17publishBrightnessEK7uint8_t"></span><span id="_CPPv2N7HALight17publishBrightnessEK7uint8_t"></span><span id="HALight::publishBrightness__uint8_tC"></span><span class="target" id="class_h_a_light_1a8ac981bd408b598523f0792f1b0f229d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishBrightness</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">brightness</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight17publishBrightnessEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given brightness.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>brightness</strong> – The brightness to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight23publishColorTemperatureEK8uint16_t">
<span id="_CPPv3N7HALight23publishColorTemperatureEK8uint16_t"></span><span id="_CPPv2N7HALight23publishColorTemperatureEK8uint16_t"></span><span id="HALight::publishColorTemperature__uint16_tC"></span><span class="target" id="class_h_a_light_1aa9977f1a0b231cbffd1c8043e61ff145"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishColorTemperature</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">temperature</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight23publishColorTemperatureEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given color temperature (mireds).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>temperature</strong> – The color temperature to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight15publishRGBColorERK8RGBColor">
<span id="_CPPv3N7HALight15publishRGBColorERK8RGBColor"></span><span id="_CPPv2N7HALight15publishRGBColorERK8RGBColor"></span><span id="HALight::publishRGBColor__RGBColorCR"></span><span class="target" id="class_h_a_light_1a69c08f53734ada7c8311518cc7ea6ce5"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishRGBColor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">color</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight15publishRGBColorERK8RGBColor" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given RGB color.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>color</strong> – The color to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight18handleStateCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight18handleStateCommandEPK7uint8_tK8uint16_t"></span><span id="HALight::handleStateCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_light_1af1fac046b55b6c493a208e53f052a078"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleStateCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight18handleStateCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given state command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t"></span><span id="HALight::handleBrightnessCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_light_1a24c3c01bc3a84c9d8d3204290c24958e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleBrightnessCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight23handleBrightnessCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given brightness command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t"></span><span id="HALight::handleColorTemperatureCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_light_1a73d573761666da80a0a7794ae03f8a56"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleColorTemperatureCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight29handleColorTemperatureCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given color temperature command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t"></span><span id="HALight::handleRGBCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_light_1ab6c637a14ce6df83a5e0b2eb005b0f88"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleRGBCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight16handleRGBCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given RGB color command and executes the callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight9_featuresE">
<span id="_CPPv3N7HALight9_featuresE"></span><span id="_CPPv2N7HALight9_featuresE"></span><span id="HALight::_features__uint8_tC"></span><span class="target" id="class_h_a_light_1a2256aa2b53963e00bff24c47a63e444b"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_features</span></span></span><a class="headerlink" href="#_CPPv4N7HALight9_featuresE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Features enabled for the light. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight5_iconE">
<span id="_CPPv3N7HALight5_iconE"></span><span id="_CPPv2N7HALight5_iconE"></span><span id="HALight::_icon__cCP"></span><span class="target" id="class_h_a_light_1a7539188e9dd6c7386d113e8a8678f708"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N7HALight5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the button. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight7_retainE">
<span id="_CPPv3N7HALight7_retainE"></span><span id="_CPPv2N7HALight7_retainE"></span><span id="HALight::_retain__b"></span><span class="target" id="class_h_a_light_1abd06493cdb7682adefa85972b68abec6"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N7HALight7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight11_optimisticE">
<span id="_CPPv3N7HALight11_optimisticE"></span><span id="_CPPv2N7HALight11_optimisticE"></span><span id="HALight::_optimistic__b"></span><span class="target" id="class_h_a_light_1af692ba47b500e06e4acfb5898da57c3d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N7HALight11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the light (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight16_brightnessScaleE">
<span id="_CPPv3N7HALight16_brightnessScaleE"></span><span id="_CPPv2N7HALight16_brightnessScaleE"></span><span id="HALight::_brightnessScale__HANumeric"></span><span class="target" id="class_h_a_light_1aeeee0d512167b1d8279c4e6a8dd22e69"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_brightnessScale</span></span></span><a class="headerlink" href="#_CPPv4N7HALight16_brightnessScaleE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum value of the brightness. By default it’s 255. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight13_currentStateE">
<span id="_CPPv3N7HALight13_currentStateE"></span><span id="_CPPv2N7HALight13_currentStateE"></span><span id="HALight::_currentState__b"></span><span class="target" id="class_h_a_light_1abbbcb8c8705c3c79cdb06e79c813e0e9"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N7HALight13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the light. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight18_currentBrightnessE">
<span id="_CPPv3N7HALight18_currentBrightnessE"></span><span id="_CPPv2N7HALight18_currentBrightnessE"></span><span id="HALight::_currentBrightness__uint8_t"></span><span class="target" id="class_h_a_light_1a812b7f21b85cf089c6c2f1ccbf93edd9"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentBrightness</span></span></span><a class="headerlink" href="#_CPPv4N7HALight18_currentBrightnessE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current brightness of the light. By default it’s <code class="docutils literal notranslate"><span class="pre">0</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight10_minMiredsE">
<span id="_CPPv3N7HALight10_minMiredsE"></span><span id="_CPPv2N7HALight10_minMiredsE"></span><span id="HALight::_minMireds__HANumeric"></span><span class="target" id="class_h_a_light_1a556b95a6c62c24a963f28b3e2dbe03a4"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_minMireds</span></span></span><a class="headerlink" href="#_CPPv4N7HALight10_minMiredsE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The minimum color temperature (mireds). By default the value is not set. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight10_maxMiredsE">
<span id="_CPPv3N7HALight10_maxMiredsE"></span><span id="_CPPv2N7HALight10_maxMiredsE"></span><span id="HALight::_maxMireds__HANumeric"></span><span class="target" id="class_h_a_light_1a6697c9027135aa89cd1ca2362234058f"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_maxMireds</span></span></span><a class="headerlink" href="#_CPPv4N7HALight10_maxMiredsE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum color temperature (mireds). By default the value is not set. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight24_currentColorTemperatureE">
<span id="_CPPv3N7HALight24_currentColorTemperatureE"></span><span id="_CPPv2N7HALight24_currentColorTemperatureE"></span><span id="HALight::_currentColorTemperature__uint16_t"></span><span class="target" id="class_h_a_light_1a575726b7d7ec565d7cd69e4e5df56230"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentColorTemperature</span></span></span><a class="headerlink" href="#_CPPv4N7HALight24_currentColorTemperatureE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current color temperature (mireds). By default the value is not set. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight16_currentRGBColorE">
<span id="_CPPv3N7HALight16_currentRGBColorE"></span><span id="_CPPv2N7HALight16_currentRGBColorE"></span><span id="HALight::_currentRGBColor__RGBColor"></span><span class="target" id="class_h_a_light_1adaa7ecb33fd60411b35390f2a79834c2"></span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentRGBColor</span></span></span><a class="headerlink" href="#_CPPv4N7HALight16_currentRGBColorE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current RBB color. By default the value is not set. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight14_stateCallbackE">
<span id="_CPPv3N7HALight14_stateCallbackE"></span><span id="_CPPv2N7HALight14_stateCallbackE"></span><span class="target" id="class_h_a_light_1a05bab537923c6e1d4d1eaba71ef3d668"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_stateCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HALight14_stateCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the state command is received from the HA. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight19_brightnessCallbackE">
<span id="_CPPv3N7HALight19_brightnessCallbackE"></span><span id="_CPPv2N7HALight19_brightnessCallbackE"></span><span class="target" id="class_h_a_light_1a190c683e2c43e3138537a1daa90eb35a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_brightnessCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n"><span class="pre">brightness</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HALight19_brightnessCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the brightness command is received from the HA. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight25_colorTemperatureCallbackE">
<span id="_CPPv3N7HALight25_colorTemperatureCallbackE"></span><span id="_CPPv2N7HALight25_colorTemperatureCallbackE"></span><span class="target" id="class_h_a_light_1ad8da167aec2a08e6a2c8f3bbf7840e93"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_colorTemperatureCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n"><span class="pre">temperature</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HALight25_colorTemperatureCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the color temperature command is received from the HA. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight17_rgbColorCallbackE">
<span id="_CPPv3N7HALight17_rgbColorCallbackE"></span><span id="_CPPv2N7HALight17_rgbColorCallbackE"></span><span class="target" id="class_h_a_light_1a5202c19ad9e1898363efce9738fda31a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_rgbColorCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="p"><span class="pre">::</span></span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="n"><span class="pre">color</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv47HALight" title="HALight"><span class="n"><span class="pre">HALight</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HALight17_rgbColorCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the RGB command is received from the HA. </p>
</dd></dl>
</div>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColorE">
<span id="_CPPv3N7HALight8RGBColorE"></span><span id="_CPPv2N7HALight8RGBColorE"></span><span id="HALight::RGBColor"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RGBColor</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8RGBColorE" title="Permalink to this definition"></a><br /></dt>
<dd><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor8RGBColorEv">
<span id="_CPPv3N7HALight8RGBColor8RGBColorEv"></span><span id="_CPPv2N7HALight8RGBColor8RGBColorEv"></span><span id="HALight::RGBColor::RGBColor"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1abeaea699102fc73dfe8ca15ae6de90c9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RGBColor</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor8RGBColorEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t">
<span id="_CPPv3N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t"></span><span id="_CPPv2N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t"></span><span id="HALight::RGBColor::RGBColor__uint8_t.uint8_t.uint8_t"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a2902899dbb1ff1579e320108c72615e7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">RGBColor</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">r</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">g</span></span>, <span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">b</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor8RGBColorE7uint8_t7uint8_t7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColoraSERK8RGBColor">
<span id="_CPPv3N7HALight8RGBColoraSERK8RGBColor"></span><span id="_CPPv2N7HALight8RGBColoraSERK8RGBColor"></span><span id="HALight::RGBColor::assign-operator__RGBColorCR"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a21d8e6f5e5bb3060bc8a72aa3ec08bb9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">=</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">a</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight8RGBColoraSERK8RGBColor" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight8RGBColoreqERK8RGBColor">
<span id="_CPPv3NK7HALight8RGBColoreqERK8RGBColor"></span><span id="_CPPv2NK7HALight8RGBColoreqERK8RGBColor"></span><span id="HALight::RGBColor::eq-operator__RGBColorCRC"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a1308a6e0333cd4468aff73a6d96c5cab"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">==</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">a</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight8RGBColoreqERK8RGBColor" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK7HALight8RGBColorneERK8RGBColor">
<span id="_CPPv3NK7HALight8RGBColorneERK8RGBColor"></span><span id="_CPPv2NK7HALight8RGBColorneERK8RGBColor"></span><span id="HALight::RGBColor::neq-operator__RGBColorCRC"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1aa94bdadd7128726390676159e3b673b2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">!=</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N7HALight8RGBColorE" title="HALight::RGBColor"><span class="n"><span class="pre">RGBColor</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">a</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK7HALight8RGBColorneERK8RGBColor" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t"></span><span id="HALight::RGBColor::fromBuffer__uint8_tCP.uint16_tC"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a9291a41f879a3e7430250bb5d43bd27f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">fromBuffer</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">data</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor10fromBufferEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor3redE">
<span id="_CPPv3N7HALight8RGBColor3redE"></span><span id="_CPPv2N7HALight8RGBColor3redE"></span><span id="HALight::RGBColor::red__uint8_t"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a9f7a454763da8acf119f93d5fe45df9e"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">red</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor3redE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor5greenE">
<span id="_CPPv3N7HALight8RGBColor5greenE"></span><span id="_CPPv2N7HALight8RGBColor5greenE"></span><span id="HALight::RGBColor::green__uint8_t"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1a85241679970bd4ad0e20d7d1e8bf1023"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">green</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor5greenE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor4blueE">
<span id="_CPPv3N7HALight8RGBColor4blueE"></span><span id="_CPPv2N7HALight8RGBColor4blueE"></span><span id="HALight::RGBColor::blue__uint8_t"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1aa90edfdd7571da3a1a54423ac9d52a28"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">blue</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor4blueE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HALight8RGBColor5isSetE">
<span id="_CPPv3N7HALight8RGBColor5isSetE"></span><span id="_CPPv2N7HALight8RGBColor5isSetE"></span><span id="HALight::RGBColor::isSet__b"></span><span class="target" id="struct_h_a_light_1_1_r_g_b_color_1aaaaa06d190f46997dc9a2434e71e071c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isSet</span></span></span><a class="headerlink" href="#_CPPv4N7HALight8RGBColor5isSetE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-hvac.html"
title="previous chapter">← HAHVAC class</a>
</li>
<li class="next">
<a href="ha-lock.html"
title="next chapter">HALock class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,409 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HALock class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HANumber class" href="ha-number.html" />
<link rel="prev" title="HALight class" href="ha-light.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HALock class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-light.html"
title="previous chapter">← HALight class</a>
</li>
<li class="next">
<a href="ha-number.html"
title="next chapter">HANumber class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="halock-class">
<h1>HALock class<a class="headerlink" href="#halock-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv46HALock">
<span id="_CPPv36HALock"></span><span id="_CPPv26HALock"></span><span id="HALock"></span><span class="target" id="class_h_a_lock"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HALock</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv46HALock" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_lock"><span class="std std-ref">HALock</span></a> allows to implement a custom lock (for example: door lock) that can be controlled from the Home Assistant panel.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/lock.mqtt/">https://www.home-assistant.io/integrations/lock.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9LockStateE">
<span id="_CPPv3N6HALock9LockStateE"></span><span id="_CPPv2N6HALock9LockStateE"></span><span class="target" id="class_h_a_lock_1a5933047134ce52cc14abdc1c8a0219ee"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">LockState</span></span></span><a class="headerlink" href="#_CPPv4N6HALock9LockStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Available states of the lock that can be reported to the HA panel. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9LockState12StateUnknownE">
<span id="_CPPv3N6HALock9LockState12StateUnknownE"></span><span id="_CPPv2N6HALock9LockState12StateUnknownE"></span><span class="target" id="class_h_a_lock_1a5933047134ce52cc14abdc1c8a0219eea21cfb483780e5e7c104ba989a4f47716"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateUnknown</span></span></span><a class="headerlink" href="#_CPPv4N6HALock9LockState12StateUnknownE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9LockState11StateLockedE">
<span id="_CPPv3N6HALock9LockState11StateLockedE"></span><span id="_CPPv2N6HALock9LockState11StateLockedE"></span><span class="target" id="class_h_a_lock_1a5933047134ce52cc14abdc1c8a0219eeaba535d44ee93f71ddd5ce17a10fe6daf"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateLocked</span></span></span><a class="headerlink" href="#_CPPv4N6HALock9LockState11StateLockedE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9LockState13StateUnlockedE">
<span id="_CPPv3N6HALock9LockState13StateUnlockedE"></span><span id="_CPPv2N6HALock9LockState13StateUnlockedE"></span><span class="target" id="class_h_a_lock_1a5933047134ce52cc14abdc1c8a0219eead4059c552c47df3777897617d9f1b549"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">StateUnlocked</span></span></span><a class="headerlink" href="#_CPPv4N6HALock9LockState13StateUnlockedE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock11LockCommandE">
<span id="_CPPv3N6HALock11LockCommandE"></span><span id="_CPPv2N6HALock11LockCommandE"></span><span class="target" id="class_h_a_lock_1acca9ad0dc5c7fd60778693090d0cdb10"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">LockCommand</span></span></span><a class="headerlink" href="#_CPPv4N6HALock11LockCommandE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Commands that will be produced by the HA panel. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock11LockCommand11CommandLockE">
<span id="_CPPv3N6HALock11LockCommand11CommandLockE"></span><span id="_CPPv2N6HALock11LockCommand11CommandLockE"></span><span class="target" id="class_h_a_lock_1acca9ad0dc5c7fd60778693090d0cdb10abf7474f813b7c2e6a04882ed7fd166de"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandLock</span></span></span><a class="headerlink" href="#_CPPv4N6HALock11LockCommand11CommandLockE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock11LockCommand13CommandUnlockE">
<span id="_CPPv3N6HALock11LockCommand13CommandUnlockE"></span><span id="_CPPv2N6HALock11LockCommand13CommandUnlockE"></span><span class="target" id="class_h_a_lock_1acca9ad0dc5c7fd60778693090d0cdb10a546bb77a102562991a750e8ba40a8670"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandUnlock</span></span></span><a class="headerlink" href="#_CPPv4N6HALock11LockCommand13CommandUnlockE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock11LockCommand11CommandOpenE">
<span id="_CPPv3N6HALock11LockCommand11CommandOpenE"></span><span id="_CPPv2N6HALock11LockCommand11CommandOpenE"></span><span class="target" id="class_h_a_lock_1acca9ad0dc5c7fd60778693090d0cdb10a26ce6483356374abe3c897b815931ed8"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">CommandOpen</span></span></span><a class="headerlink" href="#_CPPv4N6HALock11LockCommand11CommandOpenE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock6HALockEPKc">
<span id="_CPPv3N6HALock6HALockEPKc"></span><span id="_CPPv2N6HALock6HALockEPKc"></span><span id="HALock::HALock__cCP"></span><span class="target" id="class_h_a_lock_1ac72784dbcb690bb36fe9135314b1b28c"></span><span class="sig-name descname"><span class="n"><span class="pre">HALock</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock6HALockEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the lock. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock8setStateEK9LockStateKb">
<span id="_CPPv3N6HALock8setStateEK9LockStateKb"></span><span id="_CPPv2N6HALock8setStateEK9LockStateKb"></span><span id="HALock::setState__LockStateC.bC"></span><span class="target" id="class_h_a_lock_1afb75873a2092721b9f9719fbd8fce588"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N6HALock9LockStateE" title="HALock::LockState"><span class="n"><span class="pre">LockState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock8setStateEK9LockStateKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the lock and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the lock. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to a previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock15setCurrentStateEK9LockState">
<span id="_CPPv3N6HALock15setCurrentStateEK9LockState"></span><span id="_CPPv2N6HALock15setCurrentStateEK9LockState"></span><span id="HALock::setCurrentState__LockStateC"></span><span class="target" id="class_h_a_lock_1a93031febb37d3f0ef6f7f2517dbab892"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N6HALock9LockStateE" title="HALock::LockState"><span class="n"><span class="pre">LockState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock15setCurrentStateEK9LockState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets current state of the lock without publishing it to Home Assistant. This method may be useful if you want to change state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the lock. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK6HALock15getCurrentStateEv">
<span id="_CPPv3NK6HALock15getCurrentStateEv"></span><span id="_CPPv2NK6HALock15getCurrentStateEv"></span><span id="HALock::getCurrentStateC"></span><span class="target" id="class_h_a_lock_1a1215fab65deb2b7cd43b65d8e91d3d0d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N6HALock9LockStateE" title="HALock::LockState"><span class="n"><span class="pre">LockState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK6HALock15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the lock. If setState method wasn’t called the initial value will be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock7setIconEPKc">
<span id="_CPPv3N6HALock7setIconEPKc"></span><span id="_CPPv2N6HALock7setIconEPKc"></span><span id="HALock::setIcon__cCP"></span><span class="target" id="class_h_a_lock_1a49a737fab9e7df6b4fc4c0da4351b369"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the lock. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9setRetainEKb">
<span id="_CPPv3N6HALock9setRetainEKb"></span><span id="_CPPv2N6HALock9setRetainEKb"></span><span id="HALock::setRetain__bC"></span><span class="target" id="class_h_a_lock_1abacc6b02eca932b71c27cba7421d32ba"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the lock’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock13setOptimisticEKb">
<span id="_CPPv3N6HALock13setOptimisticEKb"></span><span id="_CPPv2N6HALock13setOptimisticEKb"></span><span id="HALock::setOptimistic__bC"></span><span class="target" id="class_h_a_lock_1a66766a151565ae7b1df56522ce3af1c5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the lock state. In this mode the lock state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE">
<span id="_CPPv3N6HALock9onCommandEPFv11LockCommandP6HALockE"></span><span id="_CPPv2N6HALock9onCommandEPFv11LockCommandP6HALockE"></span><span class="target" id="class_h_a_lock_1ab0735602281fc539f662b3443f1e4176"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv4N6HALock11LockCommandE" title="HALock::LockCommand"><span class="n"><span class="pre">LockCommand</span></span></a><span class="w"> </span><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv46HALock" title="HALock"><span class="n"><span class="pre">HALock</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock9onCommandEPFv11LockCommandP6HALockE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the lock/unlock/open command from the HA is received. Please note that it’s not possible to register multiple callbacks for the same lock.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock15buildSerializerEv">
<span id="_CPPv3N6HALock15buildSerializerEv"></span><span id="_CPPv2N6HALock15buildSerializerEv"></span><span id="HALock::buildSerializer"></span><span class="target" id="class_h_a_lock_1a59b109d151e789f5cd37113c54fdd813"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N6HALock15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock15onMqttConnectedEv">
<span id="_CPPv3N6HALock15onMqttConnectedEv"></span><span id="_CPPv2N6HALock15onMqttConnectedEv"></span><span id="HALock::onMqttConnected"></span><span class="target" id="class_h_a_lock_1ab348dd518c4af0fecc74ef4d2dd93201"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N6HALock15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HALock::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_lock_1a542419ac47cbe89652c860066323ff5e"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N6HALock13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock12publishStateEK9LockState">
<span id="_CPPv3N6HALock12publishStateEK9LockState"></span><span id="_CPPv2N6HALock12publishStateEK9LockState"></span><span id="HALock::publishState__LockStateC"></span><span class="target" id="class_h_a_lock_1a641b2db6e3d53bff1749e80e79164e5c"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N6HALock9LockStateE" title="HALock::LockState"><span class="n"><span class="pre">LockState</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock12publishStateEK9LockState" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N6HALock13handleCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N6HALock13handleCommandEPK7uint8_tK8uint16_t"></span><span id="HALock::handleCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_lock_1aebb02a71ad36e92307e2a3a337936a17"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N6HALock13handleCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given command and executes the lock’s callback with proper enum’s property.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock5_iconE">
<span id="_CPPv3N6HALock5_iconE"></span><span id="_CPPv2N6HALock5_iconE"></span><span id="HALock::_icon__cCP"></span><span class="target" id="class_h_a_lock_1affb7c2732bc90741e8ca77b19e49e2c1"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N6HALock5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the lock. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock7_retainE">
<span id="_CPPv3N6HALock7_retainE"></span><span id="_CPPv2N6HALock7_retainE"></span><span id="HALock::_retain__b"></span><span class="target" id="class_h_a_lock_1a6280bace96ba55f19a5fdbf7e834442b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N6HALock7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock11_optimisticE">
<span id="_CPPv3N6HALock11_optimisticE"></span><span id="_CPPv2N6HALock11_optimisticE"></span><span id="HALock::_optimistic__b"></span><span class="target" id="class_h_a_lock_1aafcbe05867f69dc08ec8029469da1c5b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N6HALock11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the lock (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock13_currentStateE">
<span id="_CPPv3N6HALock13_currentStateE"></span><span id="_CPPv2N6HALock13_currentStateE"></span><span id="HALock::_currentState__LockState"></span><span class="target" id="class_h_a_lock_1ac34685ec47958af584f55d9879d84da5"></span><a class="reference internal" href="#_CPPv4N6HALock9LockStateE" title="HALock::LockState"><span class="n"><span class="pre">LockState</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N6HALock13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the lock. By default it’s <code class="docutils literal notranslate"><span class="pre">HALock::StateUnknown</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N6HALock16_commandCallbackE">
<span id="_CPPv3N6HALock16_commandCallbackE"></span><span id="_CPPv2N6HALock16_commandCallbackE"></span><span class="target" id="class_h_a_lock_1ac59f939b40ed0bcc574680a7c656027a"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv4N6HALock11LockCommandE" title="HALock::LockCommand"><span class="n"><span class="pre">LockCommand</span></span></a><span class="w"> </span><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv46HALock" title="HALock"><span class="n"><span class="pre">HALock</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N6HALock16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when lock/unlock/open command is received from the HA. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-light.html"
title="previous chapter">← HALight class</a>
</li>
<li class="next">
<a href="ha-number.html"
title="next chapter">HANumber class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,599 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HANumber class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAScene class" href="ha-scene.html" />
<link rel="prev" title="HALock class" href="ha-lock.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HANumber class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-lock.html"
title="previous chapter">← HALock class</a>
</li>
<li class="next">
<a href="ha-scene.html"
title="next chapter">HAScene class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hanumber-class">
<h1>HANumber class<a class="headerlink" href="#hanumber-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HANumber">
<span id="_CPPv38HANumber"></span><span id="_CPPv28HANumber"></span><span id="HANumber"></span><span class="target" id="class_h_a_number"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HANumber</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HANumber" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_number"><span class="std std-ref">HANumber</span></a> adds a slider or a box in the Home Assistant panel that controls the numeric value stored on your device.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/number.mqtt/">https://www.home-assistant.io/integrations/number.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber4ModeE">
<span id="_CPPv3N8HANumber4ModeE"></span><span id="_CPPv2N8HANumber4ModeE"></span><span class="target" id="class_h_a_number_1a9435006a993ae09f58bbf0f047f012d4"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">Mode</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber4ModeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Represents mode of the number. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber4Mode8ModeAutoE">
<span id="_CPPv3N8HANumber4Mode8ModeAutoE"></span><span id="_CPPv2N8HANumber4Mode8ModeAutoE"></span><span class="target" id="class_h_a_number_1a9435006a993ae09f58bbf0f047f012d4ab98dc727a6017a9a172e170337575e72"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ModeAuto</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber4Mode8ModeAutoE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber4Mode7ModeBoxE">
<span id="_CPPv3N8HANumber4Mode7ModeBoxE"></span><span id="_CPPv2N8HANumber4Mode7ModeBoxE"></span><span class="target" id="class_h_a_number_1a9435006a993ae09f58bbf0f047f012d4a2b127ce3241fb269b3b01be5377d764a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ModeBox</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber4Mode7ModeBoxE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber4Mode10ModeSliderE">
<span id="_CPPv3N8HANumber4Mode10ModeSliderE"></span><span id="_CPPv2N8HANumber4Mode10ModeSliderE"></span><span class="target" id="class_h_a_number_1a9435006a993ae09f58bbf0f047f012d4a49439b6a99d4a68bcec49215a0e2d87f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ModeSlider</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber4Mode10ModeSliderE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision">
<span id="_CPPv3N8HANumber8HANumberEPKcK15NumberPrecision"></span><span id="_CPPv2N8HANumber8HANumberEPKcK15NumberPrecision"></span><span id="HANumber::HANumber__cCP.NumberPrecisionC"></span><span class="target" id="class_h_a_number_1a9221897a4bef104ef7c8d0f102fca8c3"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumber</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NumberPrecision</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">PrecisionP0</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8HANumberEPKcK15NumberPrecision" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates instance of the <a class="reference internal" href="#class_h_a_number"><span class="std std-ref">HANumber</span></a> entity with the given numbers precision. The given precision applies to the state, min, max and step values.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – The unique ID of the number. It needs to be unique in a scope of your device. </p></li>
<li><p><strong>precision</strong> – Precision of the floating point number that will be displayed in the HA panel. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateERK9HANumericKb">
<span id="_CPPv3N8HANumber8setStateERK9HANumericKb"></span><span id="_CPPv2N8HANumber8setStateERK9HANumericKb"></span><span id="HANumber::setState__HANumericCR.bC"></span><span class="target" id="class_h_a_number_1ada4274da481d1dcb90574a0785b40c03"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateERK9HANumericKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the number and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the number. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to a previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK6int8_tKb">
<span id="_CPPv3N8HANumber8setStateEK6int8_tKb"></span><span id="_CPPv2N8HANumber8setStateEK6int8_tKb"></span><span id="HANumber::setState__int8_tC.bC"></span><span class="target" id="class_h_a_number_1a9c1a6837a19a4003d1b0909d6a027065"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK6int8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK7int16_tKb">
<span id="_CPPv3N8HANumber8setStateEK7int16_tKb"></span><span id="_CPPv2N8HANumber8setStateEK7int16_tKb"></span><span id="HANumber::setState__int16_tC.bC"></span><span class="target" id="class_h_a_number_1abf563fb87e7fb06ef43134af7043e308"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK7int16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK7int32_tKb">
<span id="_CPPv3N8HANumber8setStateEK7int32_tKb"></span><span id="_CPPv2N8HANumber8setStateEK7int32_tKb"></span><span id="HANumber::setState__int32_tC.bC"></span><span class="target" id="class_h_a_number_1a6330a60a0c31e80dba541c9b4447bdbe"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK7int32_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK7uint8_tKb">
<span id="_CPPv3N8HANumber8setStateEK7uint8_tKb"></span><span id="_CPPv2N8HANumber8setStateEK7uint8_tKb"></span><span id="HANumber::setState__uint8_tC.bC"></span><span class="target" id="class_h_a_number_1a22252c398cd52a37173f16d61486528c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK7uint8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK8uint16_tKb">
<span id="_CPPv3N8HANumber8setStateEK8uint16_tKb"></span><span id="_CPPv2N8HANumber8setStateEK8uint16_tKb"></span><span id="HANumber::setState__uint16_tC.bC"></span><span class="target" id="class_h_a_number_1ac5b3868b31417918d2822fca0dae79a8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK8uint16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEK8uint32_tKb">
<span id="_CPPv3N8HANumber8setStateEK8uint32_tKb"></span><span id="_CPPv2N8HANumber8setStateEK8uint32_tKb"></span><span id="HANumber::setState__uint32_tC.bC"></span><span class="target" id="class_h_a_number_1aad5da251bae07b5732d0a5651b41d3bd"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEK8uint32_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber8setStateEKfKb">
<span id="_CPPv3N8HANumber8setStateEKfKb"></span><span id="_CPPv2N8HANumber8setStateEKfKb"></span><span id="HANumber::setState__floatC.bC"></span><span class="target" id="class_h_a_number_1afd5c53d3a498b0828ba2adcb9a1ed97c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber8setStateEKfKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateERK9HANumeric">
<span id="_CPPv3N8HANumber15setCurrentStateERK9HANumeric"></span><span id="_CPPv2N8HANumber15setCurrentStateERK9HANumeric"></span><span id="HANumber::setCurrentState__HANumericCR"></span><span class="target" id="class_h_a_number_1a3cfdd5dceb1f0c254cfb9ab4c806bc44"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets current state of the number without publishing it to Home Assistant. This method may be useful if you want to change state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the number. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK6int8_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK6int8_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK6int8_t"></span><span id="HANumber::setCurrentState__int8_tC"></span><span class="target" id="class_h_a_number_1a064a13160a406169b57cb4c6a97292e3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK6int8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK7int16_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK7int16_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK7int16_t"></span><span id="HANumber::setCurrentState__int16_tC"></span><span class="target" id="class_h_a_number_1a710bcf12b9fea1ecb1a0e6114573a1d8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK7int16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK7int32_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK7int32_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK7int32_t"></span><span id="HANumber::setCurrentState__int32_tC"></span><span class="target" id="class_h_a_number_1a0f07a6765b015836b7f2c6a901ee1d4c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK7int32_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK7uint8_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK7uint8_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK7uint8_t"></span><span id="HANumber::setCurrentState__uint8_tC"></span><span class="target" id="class_h_a_number_1a60a7844f059b502cb069ee18354bc0bb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK8uint16_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK8uint16_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK8uint16_t"></span><span id="HANumber::setCurrentState__uint16_tC"></span><span class="target" id="class_h_a_number_1a5301b380e72d814adae9b12de3045976"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEK8uint32_t">
<span id="_CPPv3N8HANumber15setCurrentStateEK8uint32_t"></span><span id="_CPPv2N8HANumber15setCurrentStateEK8uint32_t"></span><span id="HANumber::setCurrentState__uint32_tC"></span><span class="target" id="class_h_a_number_1a0cb7b4c26881871b7fbdf3f0addd74a7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEK8uint32_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15setCurrentStateEKf">
<span id="_CPPv3N8HANumber15setCurrentStateEKf"></span><span id="_CPPv2N8HANumber15setCurrentStateEKf"></span><span id="HANumber::setCurrentState__floatC"></span><span class="target" id="class_h_a_number_1a27ea5ab263e20107eaca4529fb68d123"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber15setCurrentStateEKf" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HANumber15getCurrentStateEv">
<span id="_CPPv3NK8HANumber15getCurrentStateEv"></span><span id="_CPPv2NK8HANumber15getCurrentStateEv"></span><span id="HANumber::getCurrentStateC"></span><span class="target" id="class_h_a_number_1a64718eca189b9f4f346342bf10928ed3"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HANumber15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the number. If setState method wasn’t called the initial value will be returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber14setDeviceClassEPKc">
<span id="_CPPv3N8HANumber14setDeviceClassEPKc"></span><span id="_CPPv2N8HANumber14setDeviceClassEPKc"></span><span id="HANumber::setDeviceClass__cCP"></span><span class="target" id="class_h_a_number_1ac6fa6da05a2c9689f1e1acb490e0215a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/number/#device-class">https://www.home-assistant.io/integrations/number/#device-class</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber7setIconEPKc">
<span id="_CPPv3N8HANumber7setIconEPKc"></span><span id="_CPPv2N8HANumber7setIconEPKc"></span><span id="HANumber::setIcon__cCP"></span><span class="target" id="class_h_a_number_1a01b7e8b84921a71155a37631eebd7a0b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the number. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber9setRetainEKb">
<span id="_CPPv3N8HANumber9setRetainEKb"></span><span id="_CPPv2N8HANumber9setRetainEKb"></span><span id="HANumber::setRetain__bC"></span><span class="target" id="class_h_a_number_1ae6a2b694fe4cd12046fc2650ba2711fe"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the number’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber13setOptimisticEKb">
<span id="_CPPv3N8HANumber13setOptimisticEKb"></span><span id="_CPPv2N8HANumber13setOptimisticEKb"></span><span id="HANumber::setOptimistic__bC"></span><span class="target" id="class_h_a_number_1a205617770784b804761a3722b38907f6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the number state. In this mode the number state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber7setModeEK4Mode">
<span id="_CPPv3N8HANumber7setModeEK4Mode"></span><span id="_CPPv2N8HANumber7setModeEK4Mode"></span><span id="HANumber::setMode__ModeC"></span><span class="target" id="class_h_a_number_1a9d846b616dc5afb7eb44bf491906d1b7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setMode</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N8HANumber4ModeE" title="HANumber::Mode"><span class="n"><span class="pre">Mode</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">mode</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber7setModeEK4Mode" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets mode of the number. It controls how the number should be displayed in the UI. By default it’s <code class="docutils literal notranslate"><span class="pre">HANumber::ModeAuto</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mode</strong> – Mode to set. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber20setUnitOfMeasurementEPKc">
<span id="_CPPv3N8HANumber20setUnitOfMeasurementEPKc"></span><span id="_CPPv2N8HANumber20setUnitOfMeasurementEPKc"></span><span id="HANumber::setUnitOfMeasurement__cCP"></span><span class="target" id="class_h_a_number_1a05fb419defa6d8be76a43a52c2b9d907"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setUnitOfMeasurement</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">unitOfMeasurement</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber20setUnitOfMeasurementEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Defines the units of measurement of the number, if any.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>units</strong> – For example: °C, % </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber6setMinEKf">
<span id="_CPPv3N8HANumber6setMinEKf"></span><span id="_CPPv2N8HANumber6setMinEKf"></span><span id="HANumber::setMin__floatC"></span><span class="target" id="class_h_a_number_1a50b1058e08b1f399f199acd04ac9f033"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setMin</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">min</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber6setMinEKf" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the minimum value that can be set from the Home Assistant panel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>min</strong> – The minimal value. By default the value is not set. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber6setMaxEKf">
<span id="_CPPv3N8HANumber6setMaxEKf"></span><span id="_CPPv2N8HANumber6setMaxEKf"></span><span id="HANumber::setMax__floatC"></span><span class="target" id="class_h_a_number_1aa3d091066355b7ecdd821395492fb505"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setMax</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">max</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber6setMaxEKf" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the maximum value that can be set from the Home Assistant panel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>min</strong> – The maximum value. By default the value is not set. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber7setStepEKf">
<span id="_CPPv3N8HANumber7setStepEKf"></span><span id="_CPPv2N8HANumber7setStepEKf"></span><span id="HANumber::setStep__floatC"></span><span class="target" id="class_h_a_number_1a7a7ca75fbe616f6c8b30646d971d414d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setStep</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">step</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber7setStepEKf" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets step of the slider’s movement in the Home Assistant panel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>step</strong> – The step value. Smallest value <code class="docutils literal notranslate"><span class="pre">0.001</span></code>. By default the value is not set. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE">
<span id="_CPPv3N8HANumber9onCommandEPFv9HANumericP8HANumberE"></span><span id="_CPPv2N8HANumber9onCommandEPFv9HANumericP8HANumberE"></span><span class="target" id="class_h_a_number_1a9d28599c8cfa199fd01da817e71986fe"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="n"><span class="pre">number</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HANumber" title="HANumber"><span class="n"><span class="pre">HANumber</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber9onCommandEPFv9HANumericP8HANumberE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the number is changed in the HA panel. Please note that it’s not possible to register multiple callbacks for the same number.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the number must be reported back to HA using the <a class="reference internal" href="#class_h_a_number_1ada4274da481d1dcb90574a0785b40c03"><span class="std std-ref">HANumber::setState</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15buildSerializerEv">
<span id="_CPPv3N8HANumber15buildSerializerEv"></span><span id="_CPPv2N8HANumber15buildSerializerEv"></span><span id="HANumber::buildSerializer"></span><span class="target" id="class_h_a_number_1a9730c50b57f933f1bac065abed6ff4ad"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HANumber15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber15onMqttConnectedEv">
<span id="_CPPv3N8HANumber15onMqttConnectedEv"></span><span id="_CPPv2N8HANumber15onMqttConnectedEv"></span><span id="HANumber::onMqttConnected"></span><span class="target" id="class_h_a_number_1a9bc3443c61d2fb93d1857aa25b5a6408"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HANumber15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HANumber::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_number_1a916a883b685038ec6c84614ddf20de2c"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HANumber13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber12publishStateERK9HANumeric">
<span id="_CPPv3N8HANumber12publishStateERK9HANumeric"></span><span id="_CPPv2N8HANumber12publishStateERK9HANumeric"></span><span id="HANumber::publishState__HANumericCR"></span><span class="target" id="class_h_a_number_1aeed0505af99f8ebbb8ebe689e6b3dad2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber12publishStateERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HANumber13handleCommandEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HANumber13handleCommandEPK7uint8_tK8uint16_t"></span><span id="HANumber::handleCommand__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_number_1a8ae76d7da35b91319047b50ef964de4e"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">handleCommand</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">cmd</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber13handleCommandEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Parses the given command and executes the number’s callback with proper value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – The data of the command. </p></li>
<li><p><strong>length</strong> – Length of the command. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HANumber15getModePropertyEv">
<span id="_CPPv3NK8HANumber15getModePropertyEv"></span><span id="_CPPv2NK8HANumber15getModePropertyEv"></span><span id="HANumber::getModePropertyC"></span><span class="target" id="class_h_a_number_1a75084de4e344002ec86d592c2bc1754e"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getModeProperty</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HANumber15getModePropertyEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns progmem string representing mode of the number </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber18getCommandTemplateEv">
<span id="_CPPv3N8HANumber18getCommandTemplateEv"></span><span id="_CPPv2N8HANumber18getCommandTemplateEv"></span><span id="HANumber::getCommandTemplate"></span><span class="target" id="class_h_a_number_1ab18a54df72f33133f3152c6b97c00678"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getCommandTemplate</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HANumber18getCommandTemplateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns progmem string representing value template for the command. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber10_precisionE">
<span id="_CPPv3N8HANumber10_precisionE"></span><span id="_CPPv2N8HANumber10_precisionE"></span><span id="HANumber::_precision__NumberPrecisionC"></span><span class="target" id="class_h_a_number_1ab283b52830be2d3fafc626e4688d5b96"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NumberPrecision</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_precision</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber10_precisionE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The precision of the number. By default it’s <code class="docutils literal notranslate"><span class="pre">HANumber::PrecisionP0</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber6_classE">
<span id="_CPPv3N8HANumber6_classE"></span><span id="_CPPv2N8HANumber6_classE"></span><span id="HANumber::_class__cCP"></span><span class="target" id="class_h_a_number_1a6d695fe42f07e43a4fe4fbad5777be5f"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_class</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber6_classE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber5_iconE">
<span id="_CPPv3N8HANumber5_iconE"></span><span id="_CPPv2N8HANumber5_iconE"></span><span id="HANumber::_icon__cCP"></span><span class="target" id="class_h_a_number_1a13880bd7e7813320326125e30beef50d"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the number. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber7_retainE">
<span id="_CPPv3N8HANumber7_retainE"></span><span id="_CPPv2N8HANumber7_retainE"></span><span id="HANumber::_retain__b"></span><span class="target" id="class_h_a_number_1a3be53ec4df622fde14df15752478a5c5"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber11_optimisticE">
<span id="_CPPv3N8HANumber11_optimisticE"></span><span id="_CPPv2N8HANumber11_optimisticE"></span><span id="HANumber::_optimistic__b"></span><span class="target" id="class_h_a_number_1ae967f1bb390d8dcd6b78a3ebded74051"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the number (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber5_modeE">
<span id="_CPPv3N8HANumber5_modeE"></span><span id="_CPPv2N8HANumber5_modeE"></span><span id="HANumber::_mode__Mode"></span><span class="target" id="class_h_a_number_1a527f271b27acdfc450ccbe18b02bc581"></span><a class="reference internal" href="#_CPPv4N8HANumber4ModeE" title="HANumber::Mode"><span class="n"><span class="pre">Mode</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_mode</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber5_modeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Controls how the number should be displayed in the UI. By default it’s <code class="docutils literal notranslate"><span class="pre">HANumber::ModeAuto</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber18_unitOfMeasurementE">
<span id="_CPPv3N8HANumber18_unitOfMeasurementE"></span><span id="_CPPv2N8HANumber18_unitOfMeasurementE"></span><span id="HANumber::_unitOfMeasurement__cCP"></span><span class="target" id="class_h_a_number_1aafee65503fff1c78fc2c4ed2823a11ba"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_unitOfMeasurement</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber18_unitOfMeasurementE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The unit of measurement for the sensor. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber9_minValueE">
<span id="_CPPv3N8HANumber9_minValueE"></span><span id="_CPPv2N8HANumber9_minValueE"></span><span id="HANumber::_minValue__HANumeric"></span><span class="target" id="class_h_a_number_1a2bb2a66a78d042a52c0d01309c99cc72"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_minValue</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber9_minValueE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The minimal value that can be set from the HA panel. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber9_maxValueE">
<span id="_CPPv3N8HANumber9_maxValueE"></span><span id="_CPPv2N8HANumber9_maxValueE"></span><span id="HANumber::_maxValue__HANumeric"></span><span class="target" id="class_h_a_number_1a8a213deface1291040ed4bfe5cc28ae4"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_maxValue</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber9_maxValueE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum value that can be set from the HA panel. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber5_stepE">
<span id="_CPPv3N8HANumber5_stepE"></span><span id="_CPPv2N8HANumber5_stepE"></span><span id="HANumber::_step__HANumeric"></span><span class="target" id="class_h_a_number_1ab58fcdf6eddc6678b256498db280f828"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_step</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber5_stepE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The step of the slider’s movement. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber13_currentStateE">
<span id="_CPPv3N8HANumber13_currentStateE"></span><span id="_CPPv2N8HANumber13_currentStateE"></span><span id="HANumber::_currentState__HANumeric"></span><span class="target" id="class_h_a_number_1a24e56b0c6ddb5a893f16667e1836fc84"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N8HANumber13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the number. By default the value is not set. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HANumber16_commandCallbackE">
<span id="_CPPv3N8HANumber16_commandCallbackE"></span><span id="_CPPv2N8HANumber16_commandCallbackE"></span><span class="target" id="class_h_a_number_1a0ba6fd05c48678bd2b405e06701eb4a4"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="n"><span class="pre">number</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HANumber" title="HANumber"><span class="n"><span class="pre">HANumber</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N8HANumber16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when the command is received from the HA. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-lock.html"
title="previous chapter">← HALock class</a>
</li>
<li class="next">
<a href="ha-scene.html"
title="next chapter">HAScene class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,274 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HAScene class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASelect class" href="ha-select.html" />
<link rel="prev" title="HANumber class" href="ha-number.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HAScene class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-number.html"
title="previous chapter">← HANumber class</a>
</li>
<li class="next">
<a href="ha-select.html"
title="next chapter">HASelect class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hascene-class">
<h1>HAScene class<a class="headerlink" href="#hascene-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv47HAScene">
<span id="_CPPv37HAScene"></span><span id="_CPPv27HAScene"></span><span id="HAScene"></span><span class="target" id="class_h_a_scene"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAScene</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv47HAScene" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_scene"><span class="std std-ref">HAScene</span></a> adds a new scene to the Home Assistant that triggers your callback once activated.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/scene.mqtt/">https://www.home-assistant.io/integrations/scene.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene7HASceneEPKc">
<span id="_CPPv3N7HAScene7HASceneEPKc"></span><span id="_CPPv2N7HAScene7HASceneEPKc"></span><span id="HAScene::HAScene__cCP"></span><span class="target" id="class_h_a_scene_1aaba058baed30156dadc007438b40b089"></span><span class="sig-name descname"><span class="n"><span class="pre">HAScene</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAScene7HASceneEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the scene. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene7setIconEPKc">
<span id="_CPPv3N7HAScene7setIconEPKc"></span><span id="_CPPv2N7HAScene7setIconEPKc"></span><span id="HAScene::setIcon__cCP"></span><span class="target" id="class_h_a_scene_1a7da222d92a8ded81b8006886cb7f5fd5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAScene7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the scene. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene9setRetainEKb">
<span id="_CPPv3N7HAScene9setRetainEKb"></span><span id="_CPPv2N7HAScene9setRetainEKb"></span><span id="HAScene::setRetain__bC"></span><span class="target" id="class_h_a_scene_1a96e2dba87dbd20dafab9f3af3b0388e9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAScene9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the scene’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene9onCommandEPFvP7HASceneE">
<span id="_CPPv3N7HAScene9onCommandEPFvP7HASceneE"></span><span id="_CPPv2N7HAScene9onCommandEPFvP7HASceneE"></span><span class="target" id="class_h_a_scene_1a023ee47c2a10d6e361989817bb1d5bc8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv47HAScene" title="HAScene"><span class="n"><span class="pre">HAScene</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAScene9onCommandEPFvP7HASceneE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called when the scene is activated in the HA panel. Please note that it’s not possible to register multiple callbacks for the same scene.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene15buildSerializerEv">
<span id="_CPPv3N7HAScene15buildSerializerEv"></span><span id="_CPPv2N7HAScene15buildSerializerEv"></span><span id="HAScene::buildSerializer"></span><span class="target" id="class_h_a_scene_1a2f74d007354d04abee75f0f2b9d2a48b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HAScene15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene15onMqttConnectedEv">
<span id="_CPPv3N7HAScene15onMqttConnectedEv"></span><span id="_CPPv2N7HAScene15onMqttConnectedEv"></span><span id="HAScene::onMqttConnected"></span><span class="target" id="class_h_a_scene_1a3b4819ea57d05bccbf660af236abf90a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HAScene15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HAScene::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_scene_1a1ea3e42d44bf8558a39ee6cfe068e326"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N7HAScene13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene5_iconE">
<span id="_CPPv3N7HAScene5_iconE"></span><span id="_CPPv2N7HAScene5_iconE"></span><span id="HAScene::_icon__cCP"></span><span class="target" id="class_h_a_scene_1a4779efbb1f6c99266a3a7598ac951fd9"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N7HAScene5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the scene. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene7_retainE">
<span id="_CPPv3N7HAScene7_retainE"></span><span id="_CPPv2N7HAScene7_retainE"></span><span id="HAScene::_retain__b"></span><span class="target" id="class_h_a_scene_1a21d1fb67f70270899222607d963581b3"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N7HAScene7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N7HAScene16_commandCallbackE">
<span id="_CPPv3N7HAScene16_commandCallbackE"></span><span id="_CPPv2N7HAScene16_commandCallbackE"></span><span class="target" id="class_h_a_scene_1ab12c420f803c0995953b5d29e88b9d33"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#_CPPv47HAScene" title="HAScene"><span class="n"><span class="pre">HAScene</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N7HAScene16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The command callback that will be called when scene is activated from the HA panel. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-number.html"
title="previous chapter">← HANumber class</a>
</li>
<li class="next">
<a href="ha-select.html"
title="next chapter">HASelect class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,384 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASelect class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASensor class" href="ha-sensor.html" />
<link rel="prev" title="HAScene class" href="ha-scene.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HASelect class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-scene.html"
title="previous chapter">← HAScene class</a>
</li>
<li class="next">
<a href="ha-sensor.html"
title="next chapter">HASensor class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="haselect-class">
<h1>HASelect class<a class="headerlink" href="#haselect-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HASelect">
<span id="_CPPv38HASelect"></span><span id="_CPPv28HASelect"></span><span id="HASelect"></span><span class="target" id="class_h_a_select"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASelect</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HASelect" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_select"><span class="std std-ref">HASelect</span></a> adds a dropdown with options in the Home Assistant panel.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/button.mqtt/">https://www.home-assistant.io/integrations/button.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect8HASelectEPKc">
<span id="_CPPv3N8HASelect8HASelectEPKc"></span><span id="_CPPv2N8HASelect8HASelectEPKc"></span><span id="HASelect::HASelect__cCP"></span><span class="target" id="class_h_a_select_1a6cad6cd7fcb544573e1fc4896fa245ae"></span><span class="sig-name descname"><span class="n"><span class="pre">HASelect</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect8HASelectEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the select. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelectD0Ev">
<span id="_CPPv3N8HASelectD0Ev"></span><span id="_CPPv2N8HASelectD0Ev"></span><span id="HASelect::~HASelect"></span><span class="target" id="class_h_a_select_1a68d290087a4296c5f3534cfc4b7c587b"></span><span class="sig-name descname"><span class="n"><span class="pre">~HASelect</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelectD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect10setOptionsEPKc">
<span id="_CPPv3N8HASelect10setOptionsEPKc"></span><span id="_CPPv2N8HASelect10setOptionsEPKc"></span><span id="HASelect::setOptions__cCP"></span><span class="target" id="class_h_a_select_1a4513521d03590d61ba30da4bab151f76"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptions</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect10setOptionsEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the list of available options that will be listed in the dropdown. The input string should contain options separated using semicolons. For example: `setOptions(“Option A;Option B;Option C”);</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The options list can be set only once. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>options</strong> – The list of options that are separated by semicolons. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect8setStateEK6int8_tKb">
<span id="_CPPv3N8HASelect8setStateEK6int8_tKb"></span><span id="_CPPv2N8HASelect8setStateEK6int8_tKb"></span><span id="HASelect::setState__int8_tC.bC"></span><span class="target" id="class_h_a_select_1a810f425f40428d8526f46aaa81d12c69"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect8setStateEK6int8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the select and publishes MQTT message. State represents the index of the option that was set using the setOptions method. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the select. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns true if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect15setCurrentStateEK6int8_t">
<span id="_CPPv3N8HASelect15setCurrentStateEK6int8_t"></span><span id="_CPPv2N8HASelect15setCurrentStateEK6int8_t"></span><span id="HASelect::setCurrentState__int8_tC"></span><span class="target" id="class_h_a_select_1a3ce2a5372c12323e5bd1a29aada88aee"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect15setCurrentStateEK6int8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>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. This method may be useful if you want to change the state before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The new state of the cover. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HASelect15getCurrentStateEv">
<span id="_CPPv3NK8HASelect15getCurrentStateEv"></span><span id="_CPPv2NK8HASelect15getCurrentStateEv"></span><span id="HASelect::getCurrentStateC"></span><span class="target" id="class_h_a_select_1aabcc2f518def78d2238ef9e51707be9f"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HASelect15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the select. State represents the index of the option that was set using the setOptions method. By default the state is set to <code class="docutils literal notranslate"><span class="pre">-1</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect7setIconEPKc">
<span id="_CPPv3N8HASelect7setIconEPKc"></span><span id="_CPPv2N8HASelect7setIconEPKc"></span><span id="HASelect::setIcon__cCP"></span><span class="target" id="class_h_a_select_1a25f95626fff8ec8c93acdd9155a47c63"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the select. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect9setRetainEKb">
<span id="_CPPv3N8HASelect9setRetainEKb"></span><span id="_CPPv2N8HASelect9setRetainEKb"></span><span id="HASelect::setRetain__bC"></span><span class="target" id="class_h_a_select_1a22b85508c745a05299a2b44ea375719e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the select’s command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect13setOptimisticEKb">
<span id="_CPPv3N8HASelect13setOptimisticEKb"></span><span id="_CPPv2N8HASelect13setOptimisticEKb"></span><span id="HASelect::setOptimistic__bC"></span><span class="target" id="class_h_a_select_1ad97a29c2e40baf3aa2c4ab610398b71c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the select state. In this mode the select state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE">
<span id="_CPPv3N8HASelect9onCommandEPFv6int8_tP8HASelectE"></span><span id="_CPPv2N8HASelect9onCommandEPFv6int8_tP8HASelectE"></span><span class="target" id="class_h_a_select_1a9b8457f341a869c2782ae5dfa713e733"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HASelect" title="HASelect"><span class="n"><span class="pre">HASelect</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect9onCommandEPFv6int8_tP8HASelectE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the option is changed from the HA panel. Please note that it’s not possible to register multiple callbacks for the same select.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the selected option must be reported back to HA using the <a class="reference internal" href="#class_h_a_select_1a810f425f40428d8526f46aaa81d12c69"><span class="std std-ref">HASelect::setState</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect15buildSerializerEv">
<span id="_CPPv3N8HASelect15buildSerializerEv"></span><span id="_CPPv2N8HASelect15buildSerializerEv"></span><span id="HASelect::buildSerializer"></span><span class="target" id="class_h_a_select_1a41e1cb470359fbba83d7031e6908eb8a"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASelect15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect15onMqttConnectedEv">
<span id="_CPPv3N8HASelect15onMqttConnectedEv"></span><span id="_CPPv2N8HASelect15onMqttConnectedEv"></span><span id="HASelect::onMqttConnected"></span><span class="target" id="class_h_a_select_1aec67fc3de241c00cbf4f4405fbde92b2"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASelect15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HASelect::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_select_1a8b2d26c6e7ff0f21660e35c926b7ec2b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASelect13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect12publishStateEK6int8_t">
<span id="_CPPv3N8HASelect12publishStateEK6int8_t"></span><span id="_CPPv2N8HASelect12publishStateEK6int8_t"></span><span id="HASelect::publishState__int8_tC"></span><span class="target" id="class_h_a_select_1a5b025f58e8bec5acb0d730482f5b1c57"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASelect12publishStateEK6int8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HASelect20countOptionsInStringEPKc">
<span id="_CPPv3NK8HASelect20countOptionsInStringEPKc"></span><span id="_CPPv2NK8HASelect20countOptionsInStringEPKc"></span><span id="HASelect::countOptionsInString__cCPC"></span><span class="target" id="class_h_a_select_1adb23b81e291486851919e246c0e78f57"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">countOptionsInString</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">options</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HASelect20countOptionsInStringEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Counts the amount of options in the given string. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect8_optionsE">
<span id="_CPPv3N8HASelect8_optionsE"></span><span id="_CPPv2N8HASelect8_optionsE"></span><span id="HASelect::_options__HASerializerArrayP"></span><span class="target" id="class_h_a_select_1ab3dbbe49a3b7b917bd2cc0b5387a9198"></span><a class="reference internal" href="../utils/ha-serializer-array.html#_CPPv417HASerializerArray" title="HASerializerArray"><span class="n"><span class="pre">HASerializerArray</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_options</span></span></span><a class="headerlink" href="#_CPPv4N8HASelect8_optionsE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Array of options for the serializer. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect13_currentStateE">
<span id="_CPPv3N8HASelect13_currentStateE"></span><span id="_CPPv2N8HASelect13_currentStateE"></span><span id="HASelect::_currentState__int8_t"></span><span class="target" id="class_h_a_select_1aaabf788699587ee9c4a0835c20d82ef0"></span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N8HASelect13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Stores the current state (the current option’s index). By default it’s <code class="docutils literal notranslate"><span class="pre">-1</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect5_iconE">
<span id="_CPPv3N8HASelect5_iconE"></span><span id="_CPPv2N8HASelect5_iconE"></span><span id="HASelect::_icon__cCP"></span><span class="target" id="class_h_a_select_1a87d5f7cfd44e7ad3b61bb657206b1469"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HASelect5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the select. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect7_retainE">
<span id="_CPPv3N8HASelect7_retainE"></span><span id="_CPPv2N8HASelect7_retainE"></span><span id="HASelect::_retain__b"></span><span class="target" id="class_h_a_select_1a8a3c35fe2583eff270f39b9d4f028a54"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N8HASelect7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect11_optimisticE">
<span id="_CPPv3N8HASelect11_optimisticE"></span><span id="_CPPv2N8HASelect11_optimisticE"></span><span id="HASelect::_optimistic__b"></span><span class="target" id="class_h_a_select_1a35d3f30cab38a5f01159c645cac2af5d"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N8HASelect11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the select (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASelect16_commandCallbackE">
<span id="_CPPv3N8HASelect16_commandCallbackE"></span><span id="_CPPv2N8HASelect16_commandCallbackE"></span><span class="target" id="class_h_a_select_1a152568ed3eee5ede9765fcf0d969e88f"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n"><span class="pre">index</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HASelect" title="HASelect"><span class="n"><span class="pre">HASelect</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N8HASelect16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The command callback that will be called when option is changed via the HA panel. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-scene.html"
title="previous chapter">← HAScene class</a>
</li>
<li class="next">
<a href="ha-sensor.html"
title="next chapter">HASensor class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,363 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASensorNumber class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASwitch class" href="ha-switch.html" />
<link rel="prev" title="HASensor class" href="ha-sensor.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HASensorNumber class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-sensor.html"
title="previous chapter">← HASensor class</a>
</li>
<li class="next">
<a href="ha-switch.html"
title="next chapter">HASwitch class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hasensornumber-class">
<h1>HASensorNumber class<a class="headerlink" href="#hasensornumber-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv414HASensorNumber">
<span id="_CPPv314HASensorNumber"></span><span id="_CPPv214HASensorNumber"></span><span id="HASensorNumber"></span><span class="target" id="class_h_a_sensor_number"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASensorNumber</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-sensor.html#_CPPv48HASensor" title="HASensor"><span class="n"><span class="pre">HASensor</span></span></a><a class="headerlink" href="#_CPPv414HASensorNumber" title="Permalink to this definition"></a><br /></dt>
<dd><p>HASensorInteger allows to publish numeric values of a sensor that will be displayed in the HA panel.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this class in <a class="reference internal" href="ha-sensor.html#class_h_a_sensor"><span class="std std-ref">HASensor</span></a> documentation. </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision">
<span id="_CPPv3N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision"></span><span id="_CPPv2N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision"></span><span id="HASensorNumber::HASensorNumber__cCP.NumberPrecisionC"></span><span class="target" id="class_h_a_sensor_number_1ad25fdeb579c1459fd3f57218825b13c1"></span><span class="sig-name descname"><span class="n"><span class="pre">HASensorNumber</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NumberPrecision</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="n"><span class="pre">PrecisionP0</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber14HASensorNumberEPKcK15NumberPrecision" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>uniqueId</strong> – The unique ID of the sensor. It needs to be unique in a scope of your device. </p></li>
<li><p><strong>precision</strong> – Precision of the floating point number that will be displayed in the HA panel. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueERK9HANumericKb">
<span id="_CPPv3N14HASensorNumber8setValueERK9HANumericKb"></span><span id="_CPPv2N14HASensorNumber8setValueERK9HANumericKb"></span><span id="HASensorNumber::setValue__HANumericCR.bC"></span><span class="target" id="class_h_a_sensor_number_1a6c8a3a582a575d371c8a60efba43594b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueERK9HANumericKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes value of the sensor and publish MQTT message. Please note that if a new value is the same as the previous one the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – New value of the sensor. THe precision of the value needs to match precision of the sensor. </p></li>
<li><p><strong>force</strong> – Forces to update the value without comparing it to a previous known value. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK6int8_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK6int8_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK6int8_tKb"></span><span id="HASensorNumber::setValue__int8_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1a1edeedc35c521359c1e661283e0b166a"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK6int8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK7int16_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK7int16_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK7int16_tKb"></span><span id="HASensorNumber::setValue__int16_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1a1e58fec53cb1575c9742e4103e8ac866"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK7int16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK7int32_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK7int32_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK7int32_tKb"></span><span id="HASensorNumber::setValue__int32_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1ad58b92a812d5683e731de6cf3c9c5fd4"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK7int32_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK7uint8_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK7uint8_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK7uint8_tKb"></span><span id="HASensorNumber::setValue__uint8_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1a14b72b21359ae06ef34664a2e26f534d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK7uint8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK8uint16_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK8uint16_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK8uint16_tKb"></span><span id="HASensorNumber::setValue__uint16_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1a87b56a15ad4a3b28f98dab8f3dc49a7c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK8uint16_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEK8uint32_tKb">
<span id="_CPPv3N14HASensorNumber8setValueEK8uint32_tKb"></span><span id="_CPPv2N14HASensorNumber8setValueEK8uint32_tKb"></span><span id="HASensorNumber::setValue__uint32_tC.bC"></span><span class="target" id="class_h_a_sensor_number_1a25bd582a22e8fc2fb6c5bce776c1daa8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEK8uint32_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber8setValueEKfKb">
<span id="_CPPv3N14HASensorNumber8setValueEKfKb"></span><span id="_CPPv2N14HASensorNumber8setValueEKfKb"></span><span id="HASensorNumber::setValue__floatC.bC"></span><span class="target" id="class_h_a_sensor_number_1aec9974c36c0795a44ce7c4650c1cffe2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber8setValueEKfKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric">
<span id="_CPPv3N14HASensorNumber15setCurrentValueERK9HANumeric"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueERK9HANumeric"></span><span id="HASensorNumber::setCurrentValue__HANumericCR"></span><span class="target" id="class_h_a_sensor_number_1a0cc7100ba72b728dab3e8c11c3b04ec4"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the current value of the sensor without publishing it to Home Assistant. This method may be useful if you want to change the value before the connection with the MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>value</strong> – New value of the sensor. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK6int8_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK6int8_t"></span><span id="HASensorNumber::setCurrentValue__int8_tC"></span><span class="target" id="class_h_a_sensor_number_1a5747a8259e94e2ec265ce0929de4e154"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK6int8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK7int16_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK7int16_t"></span><span id="HASensorNumber::setCurrentValue__int16_tC"></span><span class="target" id="class_h_a_sensor_number_1a55d4e2bf6019dc5dcb2dbd98f54e643d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK7int16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK7int32_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK7int32_t"></span><span id="HASensorNumber::setCurrentValue__int32_tC"></span><span class="target" id="class_h_a_sensor_number_1a4fa96e4a6cb1d813275352c4a1880fe5"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK7int32_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK7uint8_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK7uint8_t"></span><span id="HASensorNumber::setCurrentValue__uint8_tC"></span><span class="target" id="class_h_a_sensor_number_1ae79a9ca448518c5a1eb92499c47b5e11"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK8uint16_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK8uint16_t"></span><span id="HASensorNumber::setCurrentValue__uint16_tC"></span><span class="target" id="class_h_a_sensor_number_1a0c8129a3f410a31418084fcb0c66748e"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEK8uint32_t"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEK8uint32_t"></span><span id="HASensorNumber::setCurrentValue__uint32_tC"></span><span class="target" id="class_h_a_sensor_number_1ab2fc0f8af97b165fc9b27ff8a180204c"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEK8uint32_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15setCurrentValueEKf">
<span id="_CPPv3N14HASensorNumber15setCurrentValueEKf"></span><span id="_CPPv2N14HASensorNumber15setCurrentValueEKf"></span><span id="HASensorNumber::setCurrentValue__floatC"></span><span class="target" id="class_h_a_sensor_number_1adb516b8720d664eb205a69b7e31d35ac"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber15setCurrentValueEKf" title="Permalink to this definition"></a><br /></dt>
<dd><p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK14HASensorNumber15getCurrentValueEv">
<span id="_CPPv3NK14HASensorNumber15getCurrentValueEv"></span><span id="_CPPv2NK14HASensorNumber15getCurrentValueEv"></span><span id="HASensorNumber::getCurrentValueC"></span><span class="target" id="class_h_a_sensor_number_1a442ca01b52ca951699322781d55bac73"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentValue</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK14HASensorNumber15getCurrentValueEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the last known value of the sensor. By default the value is not set. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber15onMqttConnectedEv">
<span id="_CPPv3N14HASensorNumber15onMqttConnectedEv"></span><span id="_CPPv2N14HASensorNumber15onMqttConnectedEv"></span><span id="HASensorNumber::onMqttConnected"></span><span class="target" id="class_h_a_sensor_number_1a0bdb7e0be2140abfdfcdb09eae72e27b"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N14HASensorNumber15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber12publishValueERK9HANumeric">
<span id="_CPPv3N14HASensorNumber12publishValueERK9HANumeric"></span><span id="_CPPv2N14HASensorNumber12publishValueERK9HANumeric"></span><span id="HASensorNumber::publishValue__HANumericCR"></span><span class="target" id="class_h_a_sensor_number_1af623382a7591a694622890138f11891b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N14HASensorNumber12publishValueERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The value to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber10_precisionE">
<span id="_CPPv3N14HASensorNumber10_precisionE"></span><span id="_CPPv2N14HASensorNumber10_precisionE"></span><span id="HASensorNumber::_precision__NumberPrecisionC"></span><span class="target" id="class_h_a_sensor_number_1a70959adc7e23c22ae5b6a087f4c94895"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">NumberPrecision</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_precision</span></span></span><a class="headerlink" href="#_CPPv4N14HASensorNumber10_precisionE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The precision of the sensor. By default it’s <code class="docutils literal notranslate"><span class="pre">HASensorNumber::PrecisionP0</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N14HASensorNumber13_currentValueE">
<span id="_CPPv3N14HASensorNumber13_currentValueE"></span><span id="_CPPv2N14HASensorNumber13_currentValueE"></span><span id="HASensorNumber::_currentValue__HANumeric"></span><span class="target" id="class_h_a_sensor_number_1a747a147cb57b66a75362dd8e9d93f40d"></span><a class="reference internal" href="../utils/ha-numeric.html#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentValue</span></span></span><a class="headerlink" href="#_CPPv4N14HASensorNumber13_currentValueE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current value of the sensor. By default the value is not set. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-sensor.html"
title="previous chapter">← HASensor class</a>
</li>
<li class="next">
<a href="ha-switch.html"
title="next chapter">HASwitch class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,305 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASensor class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASensorNumber class" href="ha-sensor-number.html" />
<link rel="prev" title="HASelect class" href="ha-select.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HASensor class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-select.html"
title="previous chapter">← HASelect class</a>
</li>
<li class="next">
<a href="ha-sensor-number.html"
title="next chapter">HASensorNumber class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hasensor-class">
<h1>HASensor class<a class="headerlink" href="#hasensor-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HASensor">
<span id="_CPPv38HASensor"></span><span id="_CPPv28HASensor"></span><span id="HASensor"></span><span class="target" id="class_h_a_sensor"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASensor</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HASensor" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_sensor"><span class="std std-ref">HASensor</span></a> allows to publish textual sensor values that will be displayed in the HA panel. If you need to publish numbers then <a class="reference internal" href="ha-sensor-number.html#class_h_a_sensor_number"><span class="std std-ref">HASensorNumber</span></a> is what you’re looking for.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>It’s not possible to define a sensor that publishes mixed values (e.g. string + integer values). </p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/sensor.mqtt/">https://www.home-assistant.io/integrations/sensor.mqtt/</a> </p>
</div>
<p>Subclassed by <a class="reference internal" href="ha-sensor-number.html#class_h_a_sensor_number"><span class="std std-ref">HASensorNumber</span></a></p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor8HASensorEPKc">
<span id="_CPPv3N8HASensor8HASensorEPKc"></span><span id="_CPPv2N8HASensor8HASensorEPKc"></span><span id="HASensor::HASensor__cCP"></span><span class="target" id="class_h_a_sensor_1ae03b7288c4b75fdd65d2714c3f57ab99"></span><span class="sig-name descname"><span class="n"><span class="pre">HASensor</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor8HASensorEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the sensor. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor8setValueEPKc">
<span id="_CPPv3N8HASensor8setValueEPKc"></span><span id="_CPPv2N8HASensor8setValueEPKc"></span><span id="HASensor::setValue__cCP"></span><span class="target" id="class_h_a_sensor_1a47dba37f26cbf66d6cb9967734bc9c24"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor8setValueEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given value. Unlike the other device types, the <a class="reference internal" href="#class_h_a_sensor"><span class="std std-ref">HASensor</span></a> doesn’t store the previous value that was set. It means that the MQTT message is produced each time the setValue method is called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>value</strong> – String representation of the sensor’s value. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor14setDeviceClassEPKc">
<span id="_CPPv3N8HASensor14setDeviceClassEPKc"></span><span id="_CPPv2N8HASensor14setDeviceClassEPKc"></span><span id="HASensor::setDeviceClass__cCP"></span><span class="target" id="class_h_a_sensor_1a8e2ffcb1ae1bb7411464a34d27df8817"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/sensor/#device-class">https://www.home-assistant.io/integrations/sensor/#device-class</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor14setForceUpdateEb">
<span id="_CPPv3N8HASensor14setForceUpdateEb"></span><span id="_CPPv2N8HASensor14setForceUpdateEb"></span><span id="HASensor::setForceUpdate__b"></span><span class="target" id="class_h_a_sensor_1adb8db20cf6c35033c6653ab10de319cb"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setForceUpdate</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">forceUpdate</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor14setForceUpdateEb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Forces HA panel to process each incoming value (MQTT message). It’s useful if you want to have meaningful value graphs in history.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>forceUpdate</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor7setIconEPKc">
<span id="_CPPv3N8HASensor7setIconEPKc"></span><span id="_CPPv2N8HASensor7setIconEPKc"></span><span id="HASensor::setIcon__cCP"></span><span class="target" id="class_h_a_sensor_1abc06a58cd84ecd2a8c1ddb3c305dfb7b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the sensor. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>class</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor20setUnitOfMeasurementEPKc">
<span id="_CPPv3N8HASensor20setUnitOfMeasurementEPKc"></span><span id="_CPPv2N8HASensor20setUnitOfMeasurementEPKc"></span><span id="HASensor::setUnitOfMeasurement__cCP"></span><span class="target" id="class_h_a_sensor_1aab81b220cc390558090e81177e2b1a11"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setUnitOfMeasurement</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">unitOfMeasurement</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASensor20setUnitOfMeasurementEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Defines the units of measurement of the sensor, if any.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>units</strong> – For example: °C, % </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor15buildSerializerEv">
<span id="_CPPv3N8HASensor15buildSerializerEv"></span><span id="_CPPv2N8HASensor15buildSerializerEv"></span><span id="HASensor::buildSerializer"></span><span class="target" id="class_h_a_sensor_1aa9f52aab45cd8f8d146be4d9b6050db8"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">final</span></span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASensor15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor15onMqttConnectedEv">
<span id="_CPPv3N8HASensor15onMqttConnectedEv"></span><span id="_CPPv2N8HASensor15onMqttConnectedEv"></span><span id="HASensor::onMqttConnected"></span><span class="target" id="class_h_a_sensor_1aad00d5148f514fa1b2fc7d4c89f67ab4"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASensor15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor12_deviceClassE">
<span id="_CPPv3N8HASensor12_deviceClassE"></span><span id="_CPPv2N8HASensor12_deviceClassE"></span><span id="HASensor::_deviceClass__cCP"></span><span class="target" id="class_h_a_sensor_1a42ff8d2271f7728acf2fb349595862f0"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_deviceClass</span></span></span><a class="headerlink" href="#_CPPv4N8HASensor12_deviceClassE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor12_forceUpdateE">
<span id="_CPPv3N8HASensor12_forceUpdateE"></span><span id="_CPPv2N8HASensor12_forceUpdateE"></span><span id="HASensor::_forceUpdate__b"></span><span class="target" id="class_h_a_sensor_1a8239a2f39b6cae94871dd852f2526825"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_forceUpdate</span></span></span><a class="headerlink" href="#_CPPv4N8HASensor12_forceUpdateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The force update flag for the HA panel. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor5_iconE">
<span id="_CPPv3N8HASensor5_iconE"></span><span id="_CPPv2N8HASensor5_iconE"></span><span id="HASensor::_icon__cCP"></span><span class="target" id="class_h_a_sensor_1aaddfd49dc1d24de9580d2132c697e7f3"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HASensor5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the sensor. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASensor18_unitOfMeasurementE">
<span id="_CPPv3N8HASensor18_unitOfMeasurementE"></span><span id="_CPPv2N8HASensor18_unitOfMeasurementE"></span><span id="HASensor::_unitOfMeasurement__cCP"></span><span class="target" id="class_h_a_sensor_1abedc7a1be1cb9b3855c1721b356c5635"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_unitOfMeasurement</span></span></span><a class="headerlink" href="#_CPPv4N8HASensor18_unitOfMeasurementE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The unit of measurement for the sensor. It can be nullptr. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-select.html"
title="previous chapter">← HASelect class</a>
</li>
<li class="next">
<a href="ha-sensor-number.html"
title="next chapter">HASensorNumber class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,381 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASwitch class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HATagScanner class" href="ha-tag-scanner.html" />
<link rel="prev" title="HASensorNumber class" href="ha-sensor-number.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HASwitch class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-sensor-number.html"
title="previous chapter">← HASensorNumber class</a>
</li>
<li class="next">
<a href="ha-tag-scanner.html"
title="next chapter">HATagScanner class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="haswitch-class">
<h1>HASwitch class<a class="headerlink" href="#haswitch-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv48HASwitch">
<span id="_CPPv38HASwitch"></span><span id="_CPPv28HASwitch"></span><span id="HASwitch"></span><span class="target" id="class_h_a_switch"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASwitch</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv48HASwitch" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_switch"><span class="std std-ref">HASwitch</span></a> allows to display on/off switch in the HA panel and receive commands on your device.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/switch.mqtt/">https://www.home-assistant.io/integrations/switch.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch8HASwitchEPKc">
<span id="_CPPv3N8HASwitch8HASwitchEPKc"></span><span id="_CPPv2N8HASwitch8HASwitchEPKc"></span><span id="HASwitch::HASwitch__cCP"></span><span class="target" id="class_h_a_switch_1ace25dd403e01d6d14baf1adbe2a5e86d"></span><span class="sig-name descname"><span class="n"><span class="pre">HASwitch</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch8HASwitchEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the sensor. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch8setStateEKbKb">
<span id="_CPPv3N8HASwitch8setStateEKbKb"></span><span id="_CPPv2N8HASwitch8setStateEKbKb"></span><span id="HASwitch::setState__bC.bC"></span><span class="target" id="class_h_a_switch_1a939d64e7dd5665111a7eb3a841deb1d7"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">force</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">false</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch8setStateEKbKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Changes state of the switch and publishes MQTT message. Please note that if a new value is the same as previous one, the MQTT message won’t be published.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> – New state of the switch. </p></li>
<li><p><strong>force</strong> – Forces to update state without comparing it to previous known state. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch6turnOnEv">
<span id="_CPPv3N8HASwitch6turnOnEv"></span><span id="_CPPv2N8HASwitch6turnOnEv"></span><span id="HASwitch::turnOn"></span><span class="target" id="class_h_a_switch_1a0f803e2564f6b7f9557df258fac78533"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOn</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch6turnOnEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(true)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch7turnOffEv">
<span id="_CPPv3N8HASwitch7turnOffEv"></span><span id="_CPPv2N8HASwitch7turnOffEv"></span><span id="HASwitch::turnOff"></span><span class="target" id="class_h_a_switch_1a59bb9b59f700519789277c22e17d3aa0"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">turnOff</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch7turnOffEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Alias for <code class="docutils literal notranslate"><span class="pre">setState(false)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch15setCurrentStateEKb">
<span id="_CPPv3N8HASwitch15setCurrentStateEKb"></span><span id="_CPPv2N8HASwitch15setCurrentStateEKb"></span><span id="HASwitch::setCurrentState__bC"></span><span class="target" id="class_h_a_switch_1a8a9345fd041d8fc07dba8fd473557614"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setCurrentState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch15setCurrentStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets current state of the switch without publishing it to Home Assistant. This method may be useful if you want to change state before connection with MQTT broker is acquired.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – New state of the switch. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK8HASwitch15getCurrentStateEv">
<span id="_CPPv3NK8HASwitch15getCurrentStateEv"></span><span id="_CPPv2NK8HASwitch15getCurrentStateEv"></span><span id="HASwitch::getCurrentStateC"></span><span class="target" id="class_h_a_switch_1ad32be718d9553d2e184097eba8d38a9b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getCurrentState</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK8HASwitch15getCurrentStateEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns last known state of the switch. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch14setDeviceClassEPKc">
<span id="_CPPv3N8HASwitch14setDeviceClassEPKc"></span><span id="_CPPv2N8HASwitch14setDeviceClassEPKc"></span><span id="HASwitch::setDeviceClass__cCP"></span><span class="target" id="class_h_a_switch_1ab6b41a9c8d83421d71c5eb37911405b8"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setDeviceClass</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceClass</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch14setDeviceClassEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets class of the device. You can find list of available values here: <a class="reference external" href="https://www.home-assistant.io/integrations/switch/#device-class">https://www.home-assistant.io/integrations/switch/#device-class</a></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>deviceClass</strong> – The class name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch7setIconEPKc">
<span id="_CPPv3N8HASwitch7setIconEPKc"></span><span id="_CPPv2N8HASwitch7setIconEPKc"></span><span id="HASwitch::setIcon__cCP"></span><span class="target" id="class_h_a_switch_1a0a109c0a19d6e975a15dd2a04af05521"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setIcon</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">icon</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch7setIconEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets icon of the sensor. Any icon from MaterialDesignIcons.com (for example: <code class="docutils literal notranslate"><span class="pre">mdi:home</span></code>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>icon</strong> – The icon name. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch9setRetainEKb">
<span id="_CPPv3N8HASwitch9setRetainEKb"></span><span id="_CPPv2N8HASwitch9setRetainEKb"></span><span id="HASwitch::setRetain__bC"></span><span class="target" id="class_h_a_switch_1a745c222a490ee7e6acbdf5f93944e161"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setRetain</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">retain</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch9setRetainEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets retain flag for the switch command. If set to <code class="docutils literal notranslate"><span class="pre">true</span></code> the command produced by Home Assistant will be retained.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>retain</strong> – </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch13setOptimisticEKb">
<span id="_CPPv3N8HASwitch13setOptimisticEKb"></span><span id="_CPPv2N8HASwitch13setOptimisticEKb"></span><span id="HASwitch::setOptimistic__bC"></span><span class="target" id="class_h_a_switch_1af995fcb979434389aa8a0648ff91b042"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setOptimistic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">optimistic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch13setOptimisticEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets optimistic flag for the switch state. In this mode the switch state doesn’t need to be reported back to the HA panel when a command is received. By default the optimistic mode is disabled.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>optimistic</strong> – The optimistic mode (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE">
<span id="_CPPv3N8HASwitch9onCommandEPFvbP8HASwitchE"></span><span id="_CPPv2N8HASwitch9onCommandEPFvbP8HASwitchE"></span><span class="target" id="class_h_a_switch_1a85b9b311d6335603b30bc06c49a8f0f9"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onCommand</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">callback</span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HASwitch" title="HASwitch"><span class="n"><span class="pre">HASwitch</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch9onCommandEPFvbP8HASwitchE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers callback that will be called each time the on/off command from HA is received. Please note that it’s not possible to register multiple callbacks for the same switch.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In non-optimistic mode, the state must be reported back to HA using the <a class="reference internal" href="#class_h_a_switch_1a939d64e7dd5665111a7eb3a841deb1d7"><span class="std std-ref">HASwitch::setState</span></a> method. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>callback</strong> – </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch15buildSerializerEv">
<span id="_CPPv3N8HASwitch15buildSerializerEv"></span><span id="_CPPv2N8HASwitch15buildSerializerEv"></span><span id="HASwitch::buildSerializer"></span><span class="target" id="class_h_a_switch_1a38d4b9c0bf1050d5f419aa5f35212f34"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASwitch15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch15onMqttConnectedEv">
<span id="_CPPv3N8HASwitch15onMqttConnectedEv"></span><span id="_CPPv2N8HASwitch15onMqttConnectedEv"></span><span id="HASwitch::onMqttConnected"></span><span class="target" id="class_h_a_switch_1a82b6f2c3d0d9b66f3c7b6b8fb7ae0c38"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASwitch15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t">
<span id="_CPPv3N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="_CPPv2N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t"></span><span id="HASwitch::onMqttMessage__cCP.uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_switch_1a80e5a8cf41936a6658c5999cd299a127"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttMessage</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">payload</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N8HASwitch13onMqttMessageEPKcPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch12publishStateEKb">
<span id="_CPPv3N8HASwitch12publishStateEKb"></span><span id="_CPPv2N8HASwitch12publishStateEKb"></span><span id="HASwitch::publishState__bC"></span><span class="target" id="class_h_a_switch_1a729854411450ab395820e51c552f5a7b"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">publishState</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">state</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N8HASwitch12publishStateEKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Publishes the MQTT message with the given state.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>state</strong> – The state to publish. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if the MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch6_classE">
<span id="_CPPv3N8HASwitch6_classE"></span><span id="_CPPv2N8HASwitch6_classE"></span><span id="HASwitch::_class__cCP"></span><span class="target" id="class_h_a_switch_1abc8449f0518c5e2cf7ca856bdfaa4c5e"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_class</span></span></span><a class="headerlink" href="#_CPPv4N8HASwitch6_classE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The device class. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch5_iconE">
<span id="_CPPv3N8HASwitch5_iconE"></span><span id="_CPPv2N8HASwitch5_iconE"></span><span id="HASwitch::_icon__cCP"></span><span class="target" id="class_h_a_switch_1a47c0d25f5102a25ad5d89ac0515d9008"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_icon</span></span></span><a class="headerlink" href="#_CPPv4N8HASwitch5_iconE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The icon of the button. It can be nullptr. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch7_retainE">
<span id="_CPPv3N8HASwitch7_retainE"></span><span id="_CPPv2N8HASwitch7_retainE"></span><span id="HASwitch::_retain__b"></span><span class="target" id="class_h_a_switch_1a6bb21f627a887a2eccdad4b09d218b15"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_retain</span></span></span><a class="headerlink" href="#_CPPv4N8HASwitch7_retainE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The retain flag for the HA commands. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch11_optimisticE">
<span id="_CPPv3N8HASwitch11_optimisticE"></span><span id="_CPPv2N8HASwitch11_optimisticE"></span><span id="HASwitch::_optimistic__b"></span><span class="target" id="class_h_a_switch_1af73038853c9a48345aa72a8ca2b6204a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_optimistic</span></span></span><a class="headerlink" href="#_CPPv4N8HASwitch11_optimisticE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The optimistic mode of the switch (<code class="docutils literal notranslate"><span class="pre">true</span></code> - enabled, <code class="docutils literal notranslate"><span class="pre">false</span></code> - disabled). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch13_currentStateE">
<span id="_CPPv3N8HASwitch13_currentStateE"></span><span id="_CPPv2N8HASwitch13_currentStateE"></span><span id="HASwitch::_currentState__b"></span><span class="target" id="class_h_a_switch_1afeb2c379dbbfa6f358945c0f15ac457f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_currentState</span></span></span><a class="headerlink" href="#_CPPv4N8HASwitch13_currentStateE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The current state of the switch. By default it’s <code class="docutils literal notranslate"><span class="pre">false</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N8HASwitch16_commandCallbackE">
<span id="_CPPv3N8HASwitch16_commandCallbackE"></span><span id="_CPPv2N8HASwitch16_commandCallbackE"></span><span class="target" id="class_h_a_switch_1abf4049a596f759f18bd1f7f0e3ccfd68"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_commandCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv48HASwitch" title="HASwitch"><span class="n"><span class="pre">HASwitch</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">sender</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#_CPPv4N8HASwitch16_commandCallbackE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The callback that will be called when switch command is received from the HA. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-sensor-number.html"
title="previous chapter">← HASensorNumber class</a>
</li>
<li class="next">
<a href="ha-tag-scanner.html"
title="next chapter">HATagScanner class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HATagScanner class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Utils API" href="../utils/index.html" />
<link rel="prev" title="HASwitch class" href="ha-switch.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Device types API</a> &raquo;</li>
<li>HATagScanner class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-switch.html"
title="previous chapter">← HASwitch class</a>
</li>
<li class="next">
<a href="../utils/index.html"
title="next chapter">Utils API →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hatagscanner-class">
<h1>HATagScanner class<a class="headerlink" href="#hatagscanner-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv412HATagScanner">
<span id="_CPPv312HATagScanner"></span><span id="_CPPv212HATagScanner"></span><span id="HATagScanner"></span><span class="target" id="class_h_a_tag_scanner"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HATagScanner</span></span></span><span class="w"> </span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="k"><span class="pre">public</span></span><span class="w"> </span><a class="reference internal" href="ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><a class="headerlink" href="#_CPPv412HATagScanner" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_tag_scanner"><span class="std std-ref">HATagScanner</span></a> allow to produce scan events that can be used in the HA automation.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can find more information about this entity in the Home Assistant documentation: <a class="reference external" href="https://www.home-assistant.io/integrations/tag.mqtt/">https://www.home-assistant.io/integrations/tag.mqtt/</a> </p>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HATagScanner12HATagScannerEPKc">
<span id="_CPPv3N12HATagScanner12HATagScannerEPKc"></span><span id="_CPPv2N12HATagScanner12HATagScannerEPKc"></span><span id="HATagScanner::HATagScanner__cCP"></span><span class="target" id="class_h_a_tag_scanner_1a3d1f6aee97f734879754b58c5ea5ec22"></span><span class="sig-name descname"><span class="n"><span class="pre">HATagScanner</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">uniqueId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HATagScanner12HATagScannerEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>uniqueId</strong> – The unique ID of the scanner. It needs to be unique in a scope of your device. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HATagScanner10tagScannedEPKc">
<span id="_CPPv3N12HATagScanner10tagScannedEPKc"></span><span id="_CPPv2N12HATagScanner10tagScannedEPKc"></span><span id="HATagScanner::tagScanned__cCP"></span><span class="target" id="class_h_a_tag_scanner_1a9cd81de2b30fe9f6641752d3a3ceea04"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">tagScanned</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">tag</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HATagScanner10tagScannedEPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sends “tag scanned” event to the MQTT (Home Assistant). Based on this event HA may perform user-defined automation.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>tag</strong> – Value of the scanned tag. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if MQTT message has been published successfully. </p>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-protected-functions">Protected Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HATagScanner15buildSerializerEv">
<span id="_CPPv3N12HATagScanner15buildSerializerEv"></span><span id="_CPPv2N12HATagScanner15buildSerializerEv"></span><span id="HATagScanner::buildSerializer"></span><span class="target" id="class_h_a_tag_scanner_1aa3648050506d04bea312f1d8917deba0"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">buildSerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N12HATagScanner15buildSerializerEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HATagScanner15onMqttConnectedEv">
<span id="_CPPv3N12HATagScanner15onMqttConnectedEv"></span><span id="_CPPv2N12HATagScanner15onMqttConnectedEv"></span><span id="HATagScanner::onMqttConnected"></span><span class="target" id="class_h_a_tag_scanner_1abb14aede68679b081e44bb99fbe7c3c7"></span><span class="k"><span class="pre">virtual</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">onMqttConnected</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">override</span></span><a class="headerlink" href="#_CPPv4N12HATagScanner15onMqttConnectedEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-switch.html"
title="previous chapter">← HASwitch class</a>
</li>
<li class="next">
<a href="../utils/index.html"
title="next chapter">Utils API →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+199
View File
@@ -0,0 +1,199 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Device types API - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HABaseDeviceType class" href="ha-base-device-type.html" />
<link rel="prev" title="HAMqtt class" href="../core/ha-mqtt.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li>Device types API</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../core/ha-mqtt.html"
title="previous chapter">← HAMqtt class</a>
</li>
<li class="next">
<a href="ha-base-device-type.html"
title="next chapter">HABaseDeviceType class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="device-types-api">
<h1>Device types API<a class="headerlink" href="#device-types-api" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="ha-base-device-type.html">HABaseDeviceType class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-binary-sensor.html">HABinarySensor class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-button.html">HAButton class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-camera.html">HACamera class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-cover.html">HACover class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-device-tracker.html">HADeviceTracker class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-device-trigger.html">HADeviceTrigger class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-fan.html">HAFan class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-hvac.html">HAHVAC class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-light.html">HALight class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-lock.html">HALock class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-number.html">HANumber class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-scene.html">HAScene class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-select.html">HASelect class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-sensor.html">HASensor class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-sensor-number.html">HASensorNumber class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-switch.html">HASwitch class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-tag-scanner.html">HATagScanner class</a></li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../core/ha-mqtt.html"
title="previous chapter">← HAMqtt class</a>
</li>
<li class="next">
<a href="ha-base-device-type.html"
title="next chapter">HABaseDeviceType class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+212
View File
@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>API reference - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Core API" href="core/index.html" />
<link rel="prev" title="Compiler macros" href="../library/compiler-macros.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li>API reference</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../library/compiler-macros.html"
title="previous chapter">← Compiler macros</a>
</li>
<li class="next">
<a href="core/index.html"
title="next chapter">Core API →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="api-reference">
<h1>API reference<a class="headerlink" href="#api-reference" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="core/index.html">Core API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="core/ha-device.html">HADevice class</a></li>
<li class="toctree-l2"><a class="reference internal" href="core/ha-mqtt.html">HAMqtt class</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="device-types/index.html">Device types API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-base-device-type.html">HABaseDeviceType class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-binary-sensor.html">HABinarySensor class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-button.html">HAButton class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-camera.html">HACamera class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-cover.html">HACover class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-device-tracker.html">HADeviceTracker class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-device-trigger.html">HADeviceTrigger class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-fan.html">HAFan class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-hvac.html">HAHVAC class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-light.html">HALight class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-lock.html">HALock class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-number.html">HANumber class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-scene.html">HAScene class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-select.html">HASelect class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-sensor.html">HASensor class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-sensor-number.html">HASensorNumber class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-switch.html">HASwitch class</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types/ha-tag-scanner.html">HATagScanner class</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="utils/index.html">Utils API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="utils/ha-numeric.html">HANumeric class</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils/ha-serializer.html">HASerializer class</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils/ha-serializer-array.html">HASerializerArray class</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils/ha-utils.html">HAUtils class</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../library/compiler-macros.html"
title="previous chapter">← Compiler macros</a>
</li>
<li class="next">
<a href="core/index.html"
title="next chapter">Core API →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+503
View File
@@ -0,0 +1,503 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HANumeric class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASerializer class" href="ha-serializer.html" />
<link rel="prev" title="Utils API" href="index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Utils API</a> &raquo;</li>
<li>HANumeric class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Utils API</a>
</li>
<li class="next">
<a href="ha-serializer.html"
title="next chapter">HASerializer class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hanumeric-class">
<h1>HANumeric class<a class="headerlink" href="#hanumeric-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv49HANumeric">
<span id="_CPPv39HANumeric"></span><span id="_CPPv29HANumeric"></span><span id="HANumeric"></span><span class="target" id="class_h_a_numeric"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><a class="headerlink" href="#_CPPv49HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd><p>This class represents a numeric value that simplifies use of different types of numbers across the library. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEv">
<span id="_CPPv3N9HANumeric9HANumericEv"></span><span id="_CPPv2N9HANumeric9HANumericEv"></span><span id="HANumeric::HANumeric"></span><span class="target" id="class_h_a_numeric_1a9c08a8e9393eb3eafb37b0920d4ff545"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates an empty number representation. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEKfK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEKfK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEKfK7uint8_t"></span><span id="HANumeric::HANumeric__floatC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1a39374543545df36e2c467e5d64136a83"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEKfK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given float into number representation of the given precision. If the precision is set to zero the given float will be converted into integer.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK6int8_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK6int8_tK7uint8_t"></span><span id="HANumeric::HANumeric__int8_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1a0146869df2d91fecb6f8c8e98f48e9c8"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK6int8_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given int8_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK7int16_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK7int16_tK7uint8_t"></span><span id="HANumeric::HANumeric__int16_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1ad8090f877bc88382769c974d374df647"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK7int16_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given int16_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK7int32_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK7int32_tK7uint8_t"></span><span id="HANumeric::HANumeric__int32_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1a20f2feed1baa63fb8a82f8a4626aa0ee"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK7int32_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given int32_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK7uint8_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK7uint8_tK7uint8_t"></span><span id="HANumeric::HANumeric__uint8_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1aa9713608b4070418844b716d78a91502"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK7uint8_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given uint8_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK8uint16_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK8uint16_tK7uint8_t"></span><span id="HANumeric::HANumeric__uint16_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1ac7754ada0308b94ca4f04ddf03595ba1"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK8uint16_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given uint16_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t">
<span id="_CPPv3N9HANumeric9HANumericEK8uint32_tK7uint8_t"></span><span id="_CPPv2N9HANumeric9HANumericEK8uint32_tK7uint8_t"></span><span id="HANumeric::HANumeric__uint32_tC.uint8_tC"></span><span class="target" id="class_h_a_numeric_1aaceb9edc6d9cc1ced9a283e2ddda7f6f"></span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK8uint32_tK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given uint32_t into number representation of the given precision. If the precision is greater than zero the given value will be converted to float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>value</strong> – The value that should be used as a base. </p></li>
<li><p><strong>precision</strong> – The number of digits in the decimal part. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumericaSERK9HANumeric">
<span id="_CPPv3N9HANumericaSERK9HANumeric"></span><span id="_CPPv2N9HANumericaSERK9HANumeric"></span><span id="HANumeric::assign-operator__HANumericCR"></span><span class="target" id="class_h_a_numeric_1a971a861ec37ad1f289db664bfc56259d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">=</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">a</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumericaSERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumericeqERK9HANumeric">
<span id="_CPPv3NK9HANumericeqERK9HANumeric"></span><span id="_CPPv2NK9HANumericeqERK9HANumeric"></span><span id="HANumeric::eq-operator__HANumericCRC"></span><span class="target" id="class_h_a_numeric_1a50622f42e97913c27b0b39fb307cac72"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="k"><span class="pre">operator</span></span><span class="o"><span class="pre">==</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="p"><span class="pre">&amp;</span></span><span class="n sig-param"><span class="pre">a</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumericeqERK9HANumeric" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric16getPrecisionBaseEv">
<span id="_CPPv3NK9HANumeric16getPrecisionBaseEv"></span><span id="_CPPv2NK9HANumeric16getPrecisionBaseEv"></span><span id="HANumeric::getPrecisionBaseC"></span><span class="target" id="class_h_a_numeric_1a8bcc0693ff1ee25fdf521d32acdfdc39"></span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getPrecisionBase</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric16getPrecisionBaseEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns multiplier that used to generate base value based on the precision. The multiplier is generated using the formula: <code class="docutils literal notranslate"><span class="pre">pow(precision,</span> <span class="pre">10)</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric13calculateSizeEv">
<span id="_CPPv3NK9HANumeric13calculateSizeEv"></span><span id="_CPPv2NK9HANumeric13calculateSizeEv"></span><span id="HANumeric::calculateSizeC"></span><span class="target" id="class_h_a_numeric_1a144cec49a99d1cab47f11d2c5fd85956"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric13calculateSizeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns size of the number </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric5toStrEPc">
<span id="_CPPv3NK9HANumeric5toStrEPc"></span><span id="_CPPv2NK9HANumeric5toStrEPc"></span><span id="HANumeric::toStr__cPC"></span><span class="target" id="class_h_a_numeric_1a32a214ad1b136bbb4c71e022c0d5b94d"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toStr</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">dst</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric5toStrEPc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the number to the string.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">dst</span></code> size should be calculated using <a class="reference internal" href="#class_h_a_numeric_1a144cec49a99d1cab47f11d2c5fd85956"><span class="std std-ref">HANumeric::calculateSize()</span></a> method plus 1 extra byte for the null terminator. </p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>dst</strong> – Destination where the number will be saved. The null terminator is not added at the end. </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The number of written characters. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric5isSetEv">
<span id="_CPPv3NK9HANumeric5isSetEv"></span><span id="_CPPv2NK9HANumeric5isSetEv"></span><span id="HANumeric::isSetC"></span><span class="target" id="class_h_a_numeric_1a110e4d6c325b0bfadf23d5b4ff623c3d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isSet</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric5isSetEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns true if the base value is set. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric12setBaseValueE7int64_t">
<span id="_CPPv3N9HANumeric12setBaseValueE7int64_t"></span><span id="_CPPv2N9HANumeric12setBaseValueE7int64_t"></span><span id="HANumeric::setBaseValue__int64_t"></span><span class="target" id="class_h_a_numeric_1a55b88e05062e6c83ad67f6657e44b351"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setBaseValue</span></span></span><span class="sig-paren">(</span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric12setBaseValueE7int64_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the base value without converting it to the proper precision. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric12getBaseValueEv">
<span id="_CPPv3NK9HANumeric12getBaseValueEv"></span><span id="_CPPv2NK9HANumeric12getBaseValueEv"></span><span id="HANumeric::getBaseValueC"></span><span class="target" id="class_h_a_numeric_1a3f211e9d04c8d6cc4722f7b6631846ef"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getBaseValue</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric12getBaseValueEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the base value of the number. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric12setPrecisionEK7uint8_t">
<span id="_CPPv3N9HANumeric12setPrecisionEK7uint8_t"></span><span id="_CPPv2N9HANumeric12setPrecisionEK7uint8_t"></span><span id="HANumeric::setPrecision__uint8_tC"></span><span class="target" id="class_h_a_numeric_1af2956148006a4d9cb677f35a29862ac2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">setPrecision</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">precision</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric12setPrecisionEK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Sets the precision of the number (number of digits in the decimal part).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>precision</strong> – The precision to use. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric12getPrecisionEv">
<span id="_CPPv3NK9HANumeric12getPrecisionEv"></span><span id="_CPPv2NK9HANumeric12getPrecisionEv"></span><span id="HANumeric::getPrecisionC"></span><span class="target" id="class_h_a_numeric_1aa9d3f2cab0feef1c0dd421888d1a8f43"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getPrecision</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric12getPrecisionEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the precision of the number. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric5resetEv">
<span id="_CPPv3N9HANumeric5resetEv"></span><span id="_CPPv2N9HANumeric5resetEv"></span><span id="HANumeric::reset"></span><span class="target" id="class_h_a_numeric_1ae114c63e174be39fca926971020d17bf"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">reset</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric5resetEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Resets the number to the defaults. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7isUInt8Ev">
<span id="_CPPv3NK9HANumeric7isUInt8Ev"></span><span id="_CPPv2NK9HANumeric7isUInt8Ev"></span><span id="HANumeric::isUInt8C"></span><span class="target" id="class_h_a_numeric_1acf58b7fbcde137dc796fca591e1c4487"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isUInt8</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7isUInt8Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric8isUInt16Ev">
<span id="_CPPv3NK9HANumeric8isUInt16Ev"></span><span id="_CPPv2NK9HANumeric8isUInt16Ev"></span><span id="HANumeric::isUInt16C"></span><span class="target" id="class_h_a_numeric_1aef5b3a5297dcf5d01b2536faa601341d"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isUInt16</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric8isUInt16Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric8isUInt32Ev">
<span id="_CPPv3NK9HANumeric8isUInt32Ev"></span><span id="_CPPv2NK9HANumeric8isUInt32Ev"></span><span id="HANumeric::isUInt32C"></span><span class="target" id="class_h_a_numeric_1a07ab3ad2f16e3f2ce1cd6ba3170db6d4"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isUInt32</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric8isUInt32Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric6isInt8Ev">
<span id="_CPPv3NK9HANumeric6isInt8Ev"></span><span id="_CPPv2NK9HANumeric6isInt8Ev"></span><span id="HANumeric::isInt8C"></span><span class="target" id="class_h_a_numeric_1aa230371b21fd9e054ea5ce583084ae34"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isInt8</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric6isInt8Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7isInt16Ev">
<span id="_CPPv3NK9HANumeric7isInt16Ev"></span><span id="_CPPv2NK9HANumeric7isInt16Ev"></span><span id="HANumeric::isInt16C"></span><span class="target" id="class_h_a_numeric_1a54769f123110dd5b8b0a5525cab816bf"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isInt16</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7isInt16Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7isInt32Ev">
<span id="_CPPv3NK9HANumeric7isInt32Ev"></span><span id="_CPPv2NK9HANumeric7isInt32Ev"></span><span id="HANumeric::isInt32C"></span><span class="target" id="class_h_a_numeric_1a9fa24a09af42b0a764695619f756ee60"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isInt32</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7isInt32Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7isFloatEv">
<span id="_CPPv3NK9HANumeric7isFloatEv"></span><span id="_CPPv2NK9HANumeric7isFloatEv"></span><span id="HANumeric::isFloatC"></span><span class="target" id="class_h_a_numeric_1a89f9d595f7d6cc29f5828218d6c87ad2"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">isFloat</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7isFloatEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7toUInt8Ev">
<span id="_CPPv3NK9HANumeric7toUInt8Ev"></span><span id="_CPPv2NK9HANumeric7toUInt8Ev"></span><span id="HANumeric::toUInt8C"></span><span class="target" id="class_h_a_numeric_1a755ab6f4d9252ddbe2f5906c7d47e4a6"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toUInt8</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7toUInt8Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric8toUInt16Ev">
<span id="_CPPv3NK9HANumeric8toUInt16Ev"></span><span id="_CPPv2NK9HANumeric8toUInt16Ev"></span><span id="HANumeric::toUInt16C"></span><span class="target" id="class_h_a_numeric_1a72da99422ab49373b3a58957e34e05cc"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toUInt16</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric8toUInt16Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric8toUInt32Ev">
<span id="_CPPv3NK9HANumeric8toUInt32Ev"></span><span id="_CPPv2NK9HANumeric8toUInt32Ev"></span><span id="HANumeric::toUInt32C"></span><span class="target" id="class_h_a_numeric_1ab58cb873a10b8cb8d9e6e6110098d7d4"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toUInt32</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric8toUInt32Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric6toInt8Ev">
<span id="_CPPv3NK9HANumeric6toInt8Ev"></span><span id="_CPPv2NK9HANumeric6toInt8Ev"></span><span id="HANumeric::toInt8C"></span><span class="target" id="class_h_a_numeric_1a0415c574adb7f9c539285f4e7aed278b"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toInt8</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric6toInt8Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7toInt16Ev">
<span id="_CPPv3NK9HANumeric7toInt16Ev"></span><span id="_CPPv2NK9HANumeric7toInt16Ev"></span><span id="HANumeric::toInt16C"></span><span class="target" id="class_h_a_numeric_1a9d33131c19121424662597bfa363f956"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toInt16</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7toInt16Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7toInt32Ev">
<span id="_CPPv3NK9HANumeric7toInt32Ev"></span><span id="_CPPv2NK9HANumeric7toInt32Ev"></span><span id="HANumeric::toInt32C"></span><span class="target" id="class_h_a_numeric_1aa7e63bae773e90440bc91a3d08587718"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">int32_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toInt32</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7toInt32Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK9HANumeric7toFloatEv">
<span id="_CPPv3NK9HANumeric7toFloatEv"></span><span id="_CPPv2NK9HANumeric7toFloatEv"></span><span id="HANumeric::toFloatC"></span><span class="target" id="class_h_a_numeric_1a0dc83160e99beaeb2f11226af541bdc0"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="kt"><span class="pre">float</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">toFloat</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK9HANumeric7toFloatEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t">
<span id="_CPPv3N9HANumeric7fromStrEPK7uint8_tK8uint16_t"></span><span id="_CPPv2N9HANumeric7fromStrEPK7uint8_tK8uint16_t"></span><span id="HANumeric::fromStr__uint8_tCP.uint16_tC"></span><span class="target" id="class_h_a_numeric_1a9a1bc9bac880ff3939dd3d8e0ccd1bb3"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv49HANumeric" title="HANumeric"><span class="n"><span class="pre">HANumeric</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">fromStr</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">buffer</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric7fromStrEPK7uint8_tK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Deserializes number from the given buffer. Please note that the class expected buffer to contain the base number. For example, deserializing <code class="docutils literal notranslate"><span class="pre">1234</span></code> number and setting precision to <code class="docutils literal notranslate"><span class="pre">1</span></code> results in representation of <code class="docutils literal notranslate"><span class="pre">123.4</span></code> float.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>buffer</strong> – The buffer that contains the number. </p></li>
<li><p><strong>length</strong> – The length of the buffer. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-attributes">Public Static Attributes</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric11MaxDigitsNbE">
<span id="_CPPv3N9HANumeric11MaxDigitsNbE"></span><span id="_CPPv2N9HANumeric11MaxDigitsNbE"></span><span id="HANumeric::MaxDigitsNb__uint8_tC"></span><span class="target" id="class_h_a_numeric_1acdc8d2c68acdcd38c433eba5c043514e"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">MaxDigitsNb</span></span></span><a class="headerlink" href="#_CPPv4N9HANumeric11MaxDigitsNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum number of digits that the base value can have (int64_t). </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric9HANumericEK7int64_t">
<span id="_CPPv3N9HANumeric9HANumericEK7int64_t"></span><span id="_CPPv2N9HANumeric9HANumericEK7int64_t"></span><span id="HANumeric::HANumeric__int64_tC"></span><span class="target" id="class_h_a_numeric_1a0abfc64b6880279f4e7dd3d63d203d25"></span><span class="k"><span class="pre">explicit</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HANumeric</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N9HANumeric9HANumericEK7int64_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric6_isSetE">
<span id="_CPPv3N9HANumeric6_isSetE"></span><span id="_CPPv2N9HANumeric6_isSetE"></span><span id="HANumeric::_isSet__b"></span><span class="target" id="class_h_a_numeric_1ac45310178bcc8b230596454c56c1c05f"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_isSet</span></span></span><a class="headerlink" href="#_CPPv4N9HANumeric6_isSetE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric6_valueE">
<span id="_CPPv3N9HANumeric6_valueE"></span><span id="_CPPv2N9HANumeric6_valueE"></span><span id="HANumeric::_value__int64_t"></span><span class="target" id="class_h_a_numeric_1a29ebd1e65fd3951943873f7d049d90ef"></span><span class="n"><span class="pre">int64_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_value</span></span></span><a class="headerlink" href="#_CPPv4N9HANumeric6_valueE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N9HANumeric10_precisionE">
<span id="_CPPv3N9HANumeric10_precisionE"></span><span id="_CPPv2N9HANumeric10_precisionE"></span><span id="HANumeric::_precision__uint8_t"></span><span class="target" id="class_h_a_numeric_1ab36b34e101f3de1373979f44d1ea67eb"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_precision</span></span></span><a class="headerlink" href="#_CPPv4N9HANumeric10_precisionE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-friends">Friends</p>
<dl>
<dt class="sig sig-object cpp">
<em class="property"><span class="pre">friend</span> <span class="pre">class</span></em> <span class="pre">HANumeric</span></dt>
</dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Utils API</a>
</li>
<li class="next">
<a href="ha-serializer.html"
title="next chapter">HASerializer class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,286 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASerializerArray class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HAUtils class" href="ha-utils.html" />
<link rel="prev" title="HASerializer class" href="ha-serializer.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Utils API</a> &raquo;</li>
<li>HASerializerArray class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-serializer.html"
title="previous chapter">← HASerializer class</a>
</li>
<li class="next">
<a href="ha-utils.html"
title="next chapter">HAUtils class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="haserializerarray-class">
<h1>HASerializerArray class<a class="headerlink" href="#haserializerarray-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv417HASerializerArray">
<span id="_CPPv317HASerializerArray"></span><span id="_CPPv217HASerializerArray"></span><span id="HASerializerArray"></span><span class="target" id="class_h_a_serializer_array"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASerializerArray</span></span></span><a class="headerlink" href="#_CPPv417HASerializerArray" title="Permalink to this definition"></a><br /></dt>
<dd><p><a class="reference internal" href="#class_h_a_serializer_array"><span class="std std-ref">HASerializerArray</span></a> represents array of items that can be used as a <a class="reference internal" href="ha-serializer.html#class_h_a_serializer"><span class="std std-ref">HASerializer</span></a> property. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp type">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray8ItemTypeE">
<span id="_CPPv3N17HASerializerArray8ItemTypeE"></span><span id="_CPPv2N17HASerializerArray8ItemTypeE"></span><span id="HASerializerArray::ItemType"></span><span class="target" id="class_h_a_serializer_array_1a09c71a95b05992fb13521035034dda93"></span><span class="k"><span class="pre">typedef</span></span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">ItemType</span></span></span><a class="headerlink" href="#_CPPv4N17HASerializerArray8ItemTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb">
<span id="_CPPv3N17HASerializerArray17HASerializerArrayEK7uint8_tKb"></span><span id="_CPPv2N17HASerializerArray17HASerializerArrayEK7uint8_tKb"></span><span id="HASerializerArray::HASerializerArray__uint8_tC.bC"></span><span class="target" id="class_h_a_serializer_array_1a06f6b81fe8baafc64ce935ad919c65ea"></span><span class="sig-name descname"><span class="n"><span class="pre">HASerializerArray</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">size</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">progmemItems</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">true</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N17HASerializerArray17HASerializerArrayEK7uint8_tKb" title="Permalink to this definition"></a><br /></dt>
<dd><p>Constructs <a class="reference internal" href="#class_h_a_serializer_array"><span class="std std-ref">HASerializerArray</span></a> with the static size (number of elements). The array is allocated dynamically in the memory based on the given size.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>size</strong> – The desired number of elements that will be stored in the array. </p></li>
<li><p><strong>progmemItems</strong> – Specifies whether items are going to be stored in the flash memory. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArrayD0Ev">
<span id="_CPPv3N17HASerializerArrayD0Ev"></span><span id="_CPPv2N17HASerializerArrayD0Ev"></span><span id="HASerializerArray::~HASerializerArray"></span><span class="target" id="class_h_a_serializer_array_1a14c2e3c3b53b2ccb54d418ef1e3681a3"></span><span class="sig-name descname"><span class="n"><span class="pre">~HASerializerArray</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N17HASerializerArrayD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK17HASerializerArray10getItemsNbEv">
<span id="_CPPv3NK17HASerializerArray10getItemsNbEv"></span><span id="_CPPv2NK17HASerializerArray10getItemsNbEv"></span><span id="HASerializerArray::getItemsNbC"></span><span class="target" id="class_h_a_serializer_array_1ae91920729571f0f0f9d673544c319bbf"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getItemsNb</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK17HASerializerArray10getItemsNbEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the number of elements that were added to the array. It can be lower than size of the array. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK17HASerializerArray8getItemsEv">
<span id="_CPPv3NK17HASerializerArray8getItemsEv"></span><span id="_CPPv2NK17HASerializerArray8getItemsEv"></span><span id="HASerializerArray::getItemsC"></span><span class="target" id="class_h_a_serializer_array_1a4b67e8db6fd6134d1eec34c991aaf7ae"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N17HASerializerArray8ItemTypeE" title="HASerializerArray::ItemType"><span class="n"><span class="pre">ItemType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getItems</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK17HASerializerArray8getItemsEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns pointer to the array. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray3addE8ItemType">
<span id="_CPPv3N17HASerializerArray3addE8ItemType"></span><span id="_CPPv2N17HASerializerArray3addE8ItemType"></span><span id="HASerializerArray::add__ItemType"></span><span class="target" id="class_h_a_serializer_array_1a081082b55bb91a71531c4e1f0b63533a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">add</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4N17HASerializerArray8ItemTypeE" title="HASerializerArray::ItemType"><span class="n"><span class="pre">ItemType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">item</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N17HASerializerArray3addE8ItemType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Adds a new element to the array.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>itemP</strong> – Item to add (string). </p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Returns <code class="docutils literal notranslate"><span class="pre">true</span></code> if item has been added to the array successfully. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK17HASerializerArray13calculateSizeEv">
<span id="_CPPv3NK17HASerializerArray13calculateSizeEv"></span><span id="_CPPv2NK17HASerializerArray13calculateSizeEv"></span><span id="HASerializerArray::calculateSizeC"></span><span class="target" id="class_h_a_serializer_array_1acd7c86423ae198910ae141002771c847"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK17HASerializerArray13calculateSizeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the serialized array (JSON representation). </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK17HASerializerArray9serializeEPc">
<span id="_CPPv3NK17HASerializerArray9serializeEPc"></span><span id="_CPPv2NK17HASerializerArray9serializeEPc"></span><span id="HASerializerArray::serialize__cPC"></span><span class="target" id="class_h_a_serializer_array_1a0b18863657136e0019225756d4505a69"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">serialize</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">output</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK17HASerializerArray9serializeEPc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Serializes array as JSON to the given output. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray5clearEv">
<span id="_CPPv3N17HASerializerArray5clearEv"></span><span id="_CPPv2N17HASerializerArray5clearEv"></span><span id="HASerializerArray::clear"></span><span class="target" id="class_h_a_serializer_array_1a0de172ec8af6b157da5a1e07f1c4fa85"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">clear</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N17HASerializerArray5clearEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Clears the array. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray13_progmemItemsE">
<span id="_CPPv3N17HASerializerArray13_progmemItemsE"></span><span id="_CPPv2N17HASerializerArray13_progmemItemsE"></span><span id="HASerializerArray::_progmemItems__bC"></span><span class="target" id="class_h_a_serializer_array_1aad07e80cccf91e360f574f33c55015cd"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_progmemItems</span></span></span><a class="headerlink" href="#_CPPv4N17HASerializerArray13_progmemItemsE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Specifies whether items are stored in the flash memory. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray5_sizeE">
<span id="_CPPv3N17HASerializerArray5_sizeE"></span><span id="_CPPv2N17HASerializerArray5_sizeE"></span><span id="HASerializerArray::_size__uint8_tC"></span><span class="target" id="class_h_a_serializer_array_1a4a9bd301ebf8f4de5f1c6ac859faaa24"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_size</span></span></span><a class="headerlink" href="#_CPPv4N17HASerializerArray5_sizeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The maximum size of the array. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray8_itemsNbE">
<span id="_CPPv3N17HASerializerArray8_itemsNbE"></span><span id="_CPPv2N17HASerializerArray8_itemsNbE"></span><span id="HASerializerArray::_itemsNb__uint8_t"></span><span class="target" id="class_h_a_serializer_array_1a0a32631479f936fa913cb293cb6fe7d4"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_itemsNb</span></span></span><a class="headerlink" href="#_CPPv4N17HASerializerArray8_itemsNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The number of items that were added to the array. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N17HASerializerArray6_itemsE">
<span id="_CPPv3N17HASerializerArray6_itemsE"></span><span id="_CPPv2N17HASerializerArray6_itemsE"></span><span id="HASerializerArray::_items__ItemTypeP"></span><span class="target" id="class_h_a_serializer_array_1a5fa750152eb5997b532587ef66ff7b90"></span><a class="reference internal" href="#_CPPv4N17HASerializerArray8ItemTypeE" title="HASerializerArray::ItemType"><span class="n"><span class="pre">ItemType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_items</span></span></span><a class="headerlink" href="#_CPPv4N17HASerializerArray6_itemsE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the array elements. </p>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-serializer.html"
title="previous chapter">← HASerializer class</a>
</li>
<li class="next">
<a href="ha-utils.html"
title="next chapter">HAUtils class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+560
View File
@@ -0,0 +1,560 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HASerializer class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HASerializerArray class" href="ha-serializer-array.html" />
<link rel="prev" title="HANumeric class" href="ha-numeric.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Utils API</a> &raquo;</li>
<li>HASerializer class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-numeric.html"
title="previous chapter">← HANumeric class</a>
</li>
<li class="next">
<a href="ha-serializer-array.html"
title="next chapter">HASerializerArray class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="haserializer-class">
<h1>HASerializer class<a class="headerlink" href="#haserializer-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv412HASerializer">
<span id="_CPPv312HASerializer"></span><span id="_CPPv212HASerializer"></span><span id="HASerializer"></span><span class="target" id="class_h_a_serializer"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HASerializer</span></span></span><a class="headerlink" href="#_CPPv412HASerializer" title="Permalink to this definition"></a><br /></dt>
<dd><p>This class allows to create JSON objects easily. Its main purpose is to handle configuration of a device type that’s going to be published to the MQTT broker. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-types">Public Types</p>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer9EntryTypeE">
<span id="_CPPv3N12HASerializer9EntryTypeE"></span><span id="_CPPv2N12HASerializer9EntryTypeE"></span><span class="target" id="class_h_a_serializer_1a52e622ec3b8bb97373d98999abe514e8"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">EntryType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer9EntryTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Type of the object’s entry. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE">
<span id="_CPPv3N12HASerializer9EntryType16UnknownEntryTypeE"></span><span id="_CPPv2N12HASerializer9EntryType16UnknownEntryTypeE"></span><span class="target" id="class_h_a_serializer_1a52e622ec3b8bb97373d98999abe514e8a4b639d5c8c1f1b5dcfd4c3c0806901e2"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">UnknownEntryType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer9EntryType16UnknownEntryTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE">
<span id="_CPPv3N12HASerializer9EntryType17PropertyEntryTypeE"></span><span id="_CPPv2N12HASerializer9EntryType17PropertyEntryTypeE"></span><span class="target" id="class_h_a_serializer_1a52e622ec3b8bb97373d98999abe514e8a7a217c953d1bab14c8b9965d895f41a4"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PropertyEntryType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer9EntryType17PropertyEntryTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer9EntryType14TopicEntryTypeE">
<span id="_CPPv3N12HASerializer9EntryType14TopicEntryTypeE"></span><span id="_CPPv2N12HASerializer9EntryType14TopicEntryTypeE"></span><span class="target" id="class_h_a_serializer_1a52e622ec3b8bb97373d98999abe514e8a1a8ec082ba78a59265913658f8324d1f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">TopicEntryType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer9EntryType14TopicEntryTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer9EntryType13FlagEntryTypeE">
<span id="_CPPv3N12HASerializer9EntryType13FlagEntryTypeE"></span><span id="_CPPv2N12HASerializer9EntryType13FlagEntryTypeE"></span><span class="target" id="class_h_a_serializer_1a52e622ec3b8bb97373d98999abe514e8a9f13783a46ffe8e021a1436936bb7773"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FlagEntryType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer9EntryType13FlagEntryTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer8FlagTypeE">
<span id="_CPPv3N12HASerializer8FlagTypeE"></span><span id="_CPPv2N12HASerializer8FlagTypeE"></span><span class="target" id="class_h_a_serializer_1af48ac87d6107bdf5682c2f847fcc1c20"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">FlagType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer8FlagTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The type of a flag for a FlagEntryType. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer8FlagType10WithDeviceE">
<span id="_CPPv3N12HASerializer8FlagType10WithDeviceE"></span><span id="_CPPv2N12HASerializer8FlagType10WithDeviceE"></span><span class="target" id="class_h_a_serializer_1af48ac87d6107bdf5682c2f847fcc1c20aa55ad781fc08255ec1b9ae9e133623fa"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WithDevice</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer8FlagType10WithDeviceE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer8FlagType16WithAvailabilityE">
<span id="_CPPv3N12HASerializer8FlagType16WithAvailabilityE"></span><span id="_CPPv2N12HASerializer8FlagType16WithAvailabilityE"></span><span class="target" id="class_h_a_serializer_1af48ac87d6107bdf5682c2f847fcc1c20ab6eb2bc6b231c4a431cd7124c4f3d9d8"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">WithAvailability</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer8FlagType16WithAvailabilityE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
<dl class="cpp enum">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueTypeE">
<span id="_CPPv3N12HASerializer17PropertyValueTypeE"></span><span id="_CPPv2N12HASerializer17PropertyValueTypeE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199d"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PropertyValueType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Available data types of entries. </p>
<p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE">
<span id="_CPPv3N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE"></span><span id="_CPPv2N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199dadb484af1392ae0fc265cf30f4be9e376"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">UnknownPropertyValueType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType24UnknownPropertyValueTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE">
<span id="_CPPv3N12HASerializer17PropertyValueType22ConstCharPropertyValueE"></span><span id="_CPPv2N12HASerializer17PropertyValueType22ConstCharPropertyValueE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199da70ed2ecab6d1ca6f97f8b6dab3672261"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ConstCharPropertyValue</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE">
<span id="_CPPv3N12HASerializer17PropertyValueType20ProgmemPropertyValueE"></span><span id="_CPPv2N12HASerializer17PropertyValueType20ProgmemPropertyValueE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199da1dbd161613dc5c39802e8e9a7fa9079a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ProgmemPropertyValue</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType20ProgmemPropertyValueE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE">
<span id="_CPPv3N12HASerializer17PropertyValueType16BoolPropertyTypeE"></span><span id="_CPPv2N12HASerializer17PropertyValueType16BoolPropertyTypeE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199da0626b8fa2eb98d45ddab24f2cec0753f"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">BoolPropertyType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType16BoolPropertyTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE">
<span id="_CPPv3N12HASerializer17PropertyValueType18NumberPropertyTypeE"></span><span id="_CPPv2N12HASerializer17PropertyValueType18NumberPropertyTypeE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199da0072fb14f001eb60ec12393ab14dce2a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">NumberPropertyType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType18NumberPropertyTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE">
<span id="_CPPv3N12HASerializer17PropertyValueType17ArrayPropertyTypeE"></span><span id="_CPPv2N12HASerializer17PropertyValueType17ArrayPropertyTypeE"></span><span class="target" id="class_h_a_serializer_1a35cb1cb5fec45dd46c6fad9232d5199da2bfb76b45d3697a1cb1d15cd0e9f30ce"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">ArrayPropertyType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer17PropertyValueType17ArrayPropertyTypeE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t">
<span id="_CPPv3N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t"></span><span id="_CPPv2N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t"></span><span id="HASerializer::HASerializer__HABaseDeviceTypeP.uint8_tC"></span><span class="target" id="class_h_a_serializer_1acec947d4ceff5c135b8e1018d4296ef7"></span><span class="sig-name descname"><span class="n"><span class="pre">HASerializer</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="../device-types/ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">deviceType</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">maxEntriesNb</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer12HASerializerEP16HABaseDeviceTypeK7uint8_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates instance of the serializer for the given device type. Please note that the number JSON object’s entries needs to be known upfront. This approach reduces number of memory allocations.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>deviceType</strong> – The device type that owns the serializer. </p></li>
<li><p><strong>maxEntriesNb</strong> – Maximum number of the output object entries. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializerD0Ev">
<span id="_CPPv3N12HASerializerD0Ev"></span><span id="_CPPv2N12HASerializerD0Ev"></span><span id="HASerializer::~HASerializer"></span><span class="target" id="class_h_a_serializer_1a278c7b4b862407e74a57ff7b95e68338"></span><span class="sig-name descname"><span class="n"><span class="pre">~HASerializer</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializerD0Ev" title="Permalink to this definition"></a><br /></dt>
<dd><p>Frees the dynamic memory allocated by the class. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer12getEntriesNbEv">
<span id="_CPPv3NK12HASerializer12getEntriesNbEv"></span><span id="_CPPv2NK12HASerializer12getEntriesNbEv"></span><span id="HASerializer::getEntriesNbC"></span><span class="target" id="class_h_a_serializer_1a0bfdc9ac369945cf60c902e71c7c6439"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">getEntriesNb</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer12getEntriesNbEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns the number of items that were added to the serializer. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer10getEntriesEv">
<span id="_CPPv3NK12HASerializer10getEntriesEv"></span><span id="_CPPv2NK12HASerializer10getEntriesEv"></span><span id="HASerializer::getEntriesC"></span><span class="target" id="class_h_a_serializer_1a052f3e59212ad7dba3ae7c9911e2c2e7"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">getEntries</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer10getEntriesEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Returns pointer to the serializer’s entries. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType">
<span id="_CPPv3N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType"></span><span id="_CPPv2N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType"></span><span id="HASerializer::set____FlashStringHelperCP.voidCP.PropertyValueType"></span><span class="target" id="class_h_a_serializer_1a337b8f102e8e66286501cfb9eb1dcd16"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">set</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">property</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">value</span></span>, <a class="reference internal" href="#_CPPv4N12HASerializer17PropertyValueTypeE" title="HASerializer::PropertyValueType"><span class="n"><span class="pre">PropertyValueType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">valueType</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer17PropertyValueType22ConstCharPropertyValueE" title="HASerializer::ConstCharPropertyValue"><span class="n"><span class="pre">ConstCharPropertyValue</span></span></a><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer3setEPK19__FlashStringHelperPKv17PropertyValueType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Adds a new entry to the serialized with a type of <code class="docutils literal notranslate"><span class="pre">PropertyEntryType</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>property</strong> – Pointer to the name of the property (progmem string). </p></li>
<li><p><strong>value</strong> – Pointer to the value that’s being set. </p></li>
<li><p><strong>valueType</strong> – The type of the value that’s passed to the method. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer3setEK8FlagType">
<span id="_CPPv3N12HASerializer3setEK8FlagType"></span><span id="_CPPv2N12HASerializer3setEK8FlagType"></span><span id="HASerializer::set__FlagTypeC"></span><span class="target" id="class_h_a_serializer_1ab6621da36ef95e2e516d4333abbff8c5"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">set</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer8FlagTypeE" title="HASerializer::FlagType"><span class="n"><span class="pre">FlagType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">flag</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer3setEK8FlagType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Adds a new entry to the serializer with a type of <code class="docutils literal notranslate"><span class="pre">FlagEntryType</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>flag</strong> – Flag to add. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer5topicEPK19__FlashStringHelper">
<span id="_CPPv3N12HASerializer5topicEPK19__FlashStringHelper"></span><span id="_CPPv2N12HASerializer5topicEPK19__FlashStringHelper"></span><span id="HASerializer::topic____FlashStringHelperCP"></span><span class="target" id="class_h_a_serializer_1a863488f26930a27d0ba9563b9e8f7037"></span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">topic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer5topicEPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Adds a new entry to the serialize with a type of <code class="docutils literal notranslate"><span class="pre">TopicEntryType</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>topic</strong> – The topic name to add (progmem string). </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer13calculateSizeEv">
<span id="_CPPv3NK12HASerializer13calculateSizeEv"></span><span id="_CPPv2NK12HASerializer13calculateSizeEv"></span><span id="HASerializer::calculateSizeC"></span><span class="target" id="class_h_a_serializer_1a68850036a40b01336815967a53f12abf"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateSize</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer13calculateSizeEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the output size of the serialized JSON object. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer5flushEv">
<span id="_CPPv3NK12HASerializer5flushEv"></span><span id="_CPPv2NK12HASerializer5flushEv"></span><span id="HASerializer::flushC"></span><span class="target" id="class_h_a_serializer_1a393c7c33d9e270034771786679952070"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">flush</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer5flushEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Flushes the JSON object to the MQTT stream. Please note that this method only writes the MQTT payload. The MQTT session needs to be opened before. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc">
<span id="_CPPv3N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc"></span><span id="_CPPv2N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc"></span><span id="HASerializer::calculateConfigTopicLength____FlashStringHelperCP.cCP"></span><span class="target" id="class_h_a_serializer_1a00b7034afca0a97610ddc380a88a24d5"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateConfigTopicLength</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">component</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">objectId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer26calculateConfigTopicLengthEPK19__FlashStringHelperPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of a configuration topic for the given component and object ID. The configuration topic has structure as follows: <code class="docutils literal notranslate"><span class="pre">[discovery</span> <span class="pre">prefix]/[component]/[device</span> <span class="pre">ID]_[objectId]/config</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>component</strong> – The name of the HA component (e.g. <code class="docutils literal notranslate"><span class="pre">binary_sensor</span></code>). </p></li>
<li><p><strong>objectId</strong> – The unique ID of a device type that’s going to publish the config. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc">
<span id="_CPPv3N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc"></span><span id="_CPPv2N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc"></span><span id="HASerializer::generateConfigTopic__cP.__FlashStringHelperCP.cCP"></span><span class="target" id="class_h_a_serializer_1a4321df25cc8bb151ee397657258b7e80"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">generateConfigTopic</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">output</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">component</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">objectId</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer19generateConfigTopicEPcPK19__FlashStringHelperPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Generates the configuration topic for the given component and object ID. The topic will be stored in the <code class="docutils literal notranslate"><span class="pre">output</span></code> variable.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>output</strong> – Buffer where the topic will be written. </p></li>
<li><p><strong>component</strong> – The name of the HA component (e.g. <code class="docutils literal notranslate"><span class="pre">binary_sensor</span></code>). </p></li>
<li><p><strong>objectId</strong> – The unique ID of a device type that’s going to publish the config. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper">
<span id="_CPPv3N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper"></span><span id="_CPPv2N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper"></span><span id="HASerializer::calculateDataTopicLength__cCP.__FlashStringHelperCP"></span><span class="target" id="class_h_a_serializer_1ac3d03dd0b3a3c75197e9ec33f94d01b1"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateDataTopicLength</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">objectId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer24calculateDataTopicLengthEPKcPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the given data topic for the given objectId. The data topic has structure as follows: <code class="docutils literal notranslate"><span class="pre">[data</span> <span class="pre">prefix]/[device</span> <span class="pre">ID]_[objectId]/[topic]</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>objectId</strong> – The unique ID of a device type that’s going to publish the data. </p></li>
<li><p><strong>topic</strong> – The topic name (progmem string). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper">
<span id="_CPPv3N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper"></span><span id="_CPPv2N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper"></span><span id="HASerializer::generateDataTopic__cP.cCP.__FlashStringHelperCP"></span><span class="target" id="class_h_a_serializer_1aa72c3347ff7a056d4c002984103d129a"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">generateDataTopic</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">output</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">objectId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer17generateDataTopicEPcPKcPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Generates the data topic for the given object ID. The topic will be stored in the <code class="docutils literal notranslate"><span class="pre">output</span></code> variable.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>output</strong> – Buffer where the topic will be written. </p></li>
<li><p><strong>objectId</strong> – The unique ID of a device type that’s going to publish the data. </p></li>
<li><p><strong>topic</strong> – The topic name (progmem string). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper">
<span id="_CPPv3N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper"></span><span id="_CPPv2N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper"></span><span id="HASerializer::compareDataTopics__cCP.cCP.__FlashStringHelperCP"></span><span class="target" id="class_h_a_serializer_1a15c009b743edf4aa7cd1db63210b5ffc"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">compareDataTopics</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">actualTopic</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">objectId</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">topic</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer17compareDataTopicsEPKcPKcPK19__FlashStringHelper" title="Permalink to this definition"></a><br /></dt>
<dd><p>Checks whether the given topic matches the data topic that can be generated using the given objectId and topicP. This method can be used to check if the received message matches some data topic.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>actualTopic</strong> – The actual topic to compare. </p></li>
<li><p><strong>objectId</strong> – The unique ID of a device type that may be the owner of the topic. </p></li>
<li><p><strong>topic</strong> – The topic name (progmem string). </p></li>
</ul>
</dd>
</dl>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-functions">Private Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer8addEntryEv">
<span id="_CPPv3N12HASerializer8addEntryEv"></span><span id="_CPPv2N12HASerializer8addEntryEv"></span><span id="HASerializer::addEntry"></span><span class="target" id="class_h_a_serializer_1a6ada7fe3415c8e2c6b30838d66301b94"></span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">addEntry</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer8addEntryEv" title="Permalink to this definition"></a><br /></dt>
<dd><p>Creates a new entry in the serializer’s memory. If the limit of entries is hit, the nullptr is returned. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer18calculateEntrySizeEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer18calculateEntrySizeEPK15SerializerEntry"></span><span id="HASerializer::calculateEntrySize__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1ac980505ec6ed67ba65f2c87c5ac8d675"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateEntrySize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer18calculateEntrySizeEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the serialized size of the given entry. Internally, this method recognizes the type of the entry and calls a proper calculate method listed below. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry"></span><span id="HASerializer::calculateTopicEntrySize__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1a6881da54ef4bf88eb773ac66ec5f3fa2"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateTopicEntrySize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer23calculateTopicEntrySizeEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the entry of type <code class="docutils literal notranslate"><span class="pre">TopicEntryType</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType">
<span id="_CPPv3NK12HASerializer17calculateFlagSizeEK8FlagType"></span><span id="_CPPv2NK12HASerializer17calculateFlagSizeEK8FlagType"></span><span id="HASerializer::calculateFlagSize__FlagTypeCC"></span><span class="target" id="class_h_a_serializer_1a2bfa192139e29026fe37e88184f72fcb"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateFlagSize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer8FlagTypeE" title="HASerializer::FlagType"><span class="n"><span class="pre">FlagType</span></span></a><span class="w"> </span><span class="n sig-param"><span class="pre">flag</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer17calculateFlagSizeEK8FlagType" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the entry of type <code class="docutils literal notranslate"><span class="pre">FlagEntryType</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry"></span><span id="HASerializer::calculatePropertyValueSize__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1a03905687d7820c8fad0e5edb623ac09f"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculatePropertyValueSize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer26calculatePropertyValueSizeEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the entry’s value if the entry is <code class="docutils literal notranslate"><span class="pre">PropertyEntryType</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray">
<span id="_CPPv3NK12HASerializer18calculateArraySizeEPK17HASerializerArray"></span><span id="_CPPv2NK12HASerializer18calculateArraySizeEPK17HASerializerArray"></span><span id="HASerializer::calculateArraySize__HASerializerArrayCPC"></span><span class="target" id="class_h_a_serializer_1a9f2bdcab32f7a7e083e15c7c8121c041"></span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">calculateArraySize</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="ha-serializer-array.html#_CPPv417HASerializerArray" title="HASerializerArray"><span class="n"><span class="pre">HASerializerArray</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">array</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer18calculateArraySizeEPK17HASerializerArray" title="Permalink to this definition"></a><br /></dt>
<dd><p>Calculates the size of the array if the property’s value is a type of <code class="docutils literal notranslate"><span class="pre">ArrayPropertyType</span></code>. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer10flushEntryEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer10flushEntryEPK15SerializerEntry"></span><span id="HASerializer::flushEntry__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1a3e7353dc7041874324a4f4395f24669a"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">flushEntry</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer10flushEntryEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Flushes the given entry to the MQTT. Internally this method recognizes the type of the entry and calls a proper flush method listed below. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer15flushEntryValueEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer15flushEntryValueEPK15SerializerEntry"></span><span id="HASerializer::flushEntryValue__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1a59f820d8d3ff2d2a2e3b750cf70a4e31"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">flushEntryValue</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer15flushEntryValueEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Flushes the value of the <code class="docutils literal notranslate"><span class="pre">PropertyEntryType</span></code> entry. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer10flushTopicEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer10flushTopicEPK15SerializerEntry"></span><span id="HASerializer::flushTopic__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1aa25fb91260003ea68788610d5af84ae2"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">flushTopic</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer10flushTopicEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Flushes the entry of type <code class="docutils literal notranslate"><span class="pre">TopicEntryType</span></code> to the MQTT. </p>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry">
<span id="_CPPv3NK12HASerializer9flushFlagEPK15SerializerEntry"></span><span id="_CPPv2NK12HASerializer9flushFlagEPK15SerializerEntry"></span><span id="HASerializer::flushFlag__SerializerEntryCPC"></span><span class="target" id="class_h_a_serializer_1a3642b01084b1aff891bab6b8e3b23424"></span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">flushFlag</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">entry</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK12HASerializer9flushFlagEPK15SerializerEntry" title="Permalink to this definition"></a><br /></dt>
<dd><p>Flushes the entry of type <code class="docutils literal notranslate"><span class="pre">FlagEntryType</span></code> to the MQTT. </p>
</dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-private-members">Private Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer11_deviceTypeE">
<span id="_CPPv3N12HASerializer11_deviceTypeE"></span><span id="_CPPv2N12HASerializer11_deviceTypeE"></span><span id="HASerializer::_deviceType__HABaseDeviceTypeP"></span><span class="target" id="class_h_a_serializer_1aae339a388745f06c14b1137fc6d110c4"></span><a class="reference internal" href="../device-types/ha-base-device-type.html#_CPPv416HABaseDeviceType" title="HABaseDeviceType"><span class="n"><span class="pre">HABaseDeviceType</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_deviceType</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer11_deviceTypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the device type that owns the serializer. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer10_entriesNbE">
<span id="_CPPv3N12HASerializer10_entriesNbE"></span><span id="_CPPv2N12HASerializer10_entriesNbE"></span><span id="HASerializer::_entriesNb__uint8_t"></span><span class="target" id="class_h_a_serializer_1a8fb1587b29433e74937118696445d887"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_entriesNb</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer10_entriesNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>The number of entries added to the serializer. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer13_maxEntriesNbE">
<span id="_CPPv3N12HASerializer13_maxEntriesNbE"></span><span id="_CPPv2N12HASerializer13_maxEntriesNbE"></span><span id="HASerializer::_maxEntriesNb__uint8_t"></span><span class="target" id="class_h_a_serializer_1a6fc2f149387930c2814ff0981bf2c003"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">_maxEntriesNb</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer13_maxEntriesNbE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Maximum number of entries that can be added to the serializer. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer8_entriesE">
<span id="_CPPv3N12HASerializer8_entriesE"></span><span id="_CPPv2N12HASerializer8_entriesE"></span><span id="HASerializer::_entries__SerializerEntryP"></span><span class="target" id="class_h_a_serializer_1a23d226a26172edeb59a82baff1572374"></span><a class="reference internal" href="#_CPPv4N12HASerializer15SerializerEntryE" title="HASerializer::SerializerEntry"><span class="n"><span class="pre">SerializerEntry</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">_entries</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer8_entriesE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the serializer entries. </p>
</dd></dl>
</div>
<dl class="cpp struct">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntryE">
<span id="_CPPv3N12HASerializer15SerializerEntryE"></span><span id="_CPPv2N12HASerializer15SerializerEntryE"></span><span id="HASerializer::SerializerEntry"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry"></span><span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SerializerEntry</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntryE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Representation of a single entry in the object. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntry15SerializerEntryEv">
<span id="_CPPv3N12HASerializer15SerializerEntry15SerializerEntryEv"></span><span id="_CPPv2N12HASerializer15SerializerEntry15SerializerEntryEv"></span><span id="HASerializer::SerializerEntry::SerializerEntry"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry_1aa4a289e81a8c48dee11b1337c3d033ae"></span><span class="k"><span class="pre">inline</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">SerializerEntry</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntry15SerializerEntryEv" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntry4typeE">
<span id="_CPPv3N12HASerializer15SerializerEntry4typeE"></span><span id="_CPPv2N12HASerializer15SerializerEntry4typeE"></span><span id="HASerializer::SerializerEntry::type__EntryType"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry_1a99b8d520fb4a9cfe86de2e0d7bb94c5b"></span><a class="reference internal" href="#_CPPv4N12HASerializer9EntryTypeE" title="HASerializer::EntryType"><span class="n"><span class="pre">EntryType</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">type</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntry4typeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Type of the entry. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntry7subtypeE">
<span id="_CPPv3N12HASerializer15SerializerEntry7subtypeE"></span><span id="_CPPv2N12HASerializer15SerializerEntry7subtypeE"></span><span id="HASerializer::SerializerEntry::subtype__uint8_t"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry_1a1db4acee885aa141f3d6c6c5561c2e54"></span><span class="n"><span class="pre">uint8_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">subtype</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntry7subtypeE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Subtype of the entry. It can be <code class="docutils literal notranslate"><span class="pre">FlagType</span></code>, <code class="docutils literal notranslate"><span class="pre">PropertyValueType</span></code> or <code class="docutils literal notranslate"><span class="pre">TopicType</span></code>. </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntry8propertyE">
<span id="_CPPv3N12HASerializer15SerializerEntry8propertyE"></span><span id="_CPPv2N12HASerializer15SerializerEntry8propertyE"></span><span id="HASerializer::SerializerEntry::property____FlashStringHelperCP"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry_1a0c31c654eb28736f36e14b8fa15f1478"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">__FlashStringHelper</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">property</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntry8propertyE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the property name (progmem string). </p>
</dd></dl>
<dl class="cpp var">
<dt class="sig sig-object cpp" id="_CPPv4N12HASerializer15SerializerEntry5valueE">
<span id="_CPPv3N12HASerializer15SerializerEntry5valueE"></span><span id="_CPPv2N12HASerializer15SerializerEntry5valueE"></span><span id="HASerializer::SerializerEntry::value__voidCP"></span><span class="target" id="struct_h_a_serializer_1_1_serializer_entry_1aa49acec07e91e4b86e91ba6876f1b0ba"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">value</span></span></span><a class="headerlink" href="#_CPPv4N12HASerializer15SerializerEntry5valueE" title="Permalink to this definition"></a><br /></dt>
<dd><p>Pointer to the property value. The value type is determined by <code class="docutils literal notranslate"><span class="pre">subtype</span></code>. </p>
</dd></dl>
</div>
</dd></dl>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-numeric.html"
title="previous chapter">← HANumeric class</a>
</li>
<li class="next">
<a href="ha-serializer-array.html"
title="next chapter">HASerializerArray class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+228
View File
@@ -0,0 +1,228 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>HAUtils class - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="prev" title="HASerializerArray class" href="ha-serializer-array.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li><a href="index.html">Utils API</a> &raquo;</li>
<li>HAUtils class</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="ha-serializer-array.html"
title="previous chapter">← HASerializerArray class</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="hautils-class">
<h1>HAUtils class<a class="headerlink" href="#hautils-class" title="Permalink to this headline"></a></h1>
<dl class="cpp class">
<dt class="sig sig-object cpp" id="_CPPv47HAUtils">
<span id="_CPPv37HAUtils"></span><span id="_CPPv27HAUtils"></span><span id="HAUtils"></span><span class="target" id="class_h_a_utils"></span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">HAUtils</span></span></span><a class="headerlink" href="#_CPPv47HAUtils" title="Permalink to this definition"></a><br /></dt>
<dd><p>This class provides some useful methods to make life easier. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-static-functions">Public Static Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAUtils8endsWithEPKcPKc">
<span id="_CPPv3N7HAUtils8endsWithEPKcPKc"></span><span id="_CPPv2N7HAUtils8endsWithEPKcPKc"></span><span id="HAUtils::endsWith__cCP.cCP"></span><span class="target" id="class_h_a_utils_1a8bef8d49129e7728c17b9a968580a3e1"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">bool</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">endsWith</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">str</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">suffix</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAUtils8endsWithEPKcPKc" title="Permalink to this definition"></a><br /></dt>
<dd><p>Checks whether the given <code class="docutils literal notranslate"><span class="pre">str</span></code> ends with the given <code class="docutils literal notranslate"><span class="pre">suffix</span></code>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>str</strong> – Input string to check. </p></li>
<li><p><strong>suffix</strong> – Suffix to find </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>True if the given suffix is present at the end of the given string. </p>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t">
<span id="_CPPv3N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t"></span><span id="_CPPv2N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t"></span><span id="HAUtils::byteArrayToStr__cP.byteCP.uint16_tC"></span><span class="target" id="class_h_a_utils_1aa27d3fa30125a57b825a85374c9c2fc9"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">byteArrayToStr</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">dst</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">byte</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">src</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAUtils14byteArrayToStrEPcPK4byteK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given byte array into hex string. Each byte will be represented by two bytes, so the output size will be <code class="docutils literal notranslate"><span class="pre">length</span> <span class="pre">*</span> <span class="pre">2</span></code></p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>dst</strong> – Destination where the string will be saved. </p></li>
<li><p><strong>src</strong> – Bytes array to convert. </p></li>
<li><p><strong>length</strong> – Length of the bytes array. </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t">
<span id="_CPPv3N7HAUtils14byteArrayToStrEPK4byteK8uint16_t"></span><span id="_CPPv2N7HAUtils14byteArrayToStrEPK4byteK8uint16_t"></span><span id="HAUtils::byteArrayToStr__byteCP.uint16_tC"></span><span class="target" id="class_h_a_utils_1a5a7b29361c98b6bc437172b17a8eac75"></span><span class="k"><span class="pre">static</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">byteArrayToStr</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">byte</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n sig-param"><span class="pre">src</span></span>, <span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">uint16_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">length</span></span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N7HAUtils14byteArrayToStrEPK4byteK8uint16_t" title="Permalink to this definition"></a><br /></dt>
<dd><p>Converts the given byte array into hex string. This method allocates a new memory.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>src</strong> – Bytes array to convert. </p></li>
<li><p><strong>length</strong> – Length of the bytes array. </p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Newly allocated string containing the hex representation. </p>
</dd>
</dl>
</dd></dl>
</div>
</dd></dl>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="ha-serializer-array.html"
title="previous chapter">← HASerializerArray class</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+185
View File
@@ -0,0 +1,185 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Utils API - ArduinoHA</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../../_static/theme-vendors.js"></script> -->
<script src="../../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="HANumeric class" href="ha-numeric.html" />
<link rel="prev" title="HATagScanner class" href="../device-types/ha-tag-scanner.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-types/index.html">Device types API</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../index.html">API reference</a> &raquo;</li>
<li>Utils API</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../device-types/ha-tag-scanner.html"
title="previous chapter">← HATagScanner class</a>
</li>
<li class="next">
<a href="ha-numeric.html"
title="next chapter">HANumeric class →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="utils-api">
<h1>Utils API<a class="headerlink" href="#utils-api" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="ha-numeric.html">HANumeric class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-serializer.html">HASerializer class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-serializer-array.html">HASerializerArray class</a></li>
<li class="toctree-l1"><a class="reference internal" href="ha-utils.html">HAUtils class</a></li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../device-types/ha-tag-scanner.html"
title="previous chapter">← HATagScanner class</a>
</li>
<li class="next">
<a href="ha-numeric.html"
title="next chapter">HANumeric class →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,200 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Compatible Hardware - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Examples" href="examples.html" />
<link rel="prev" title="Installation" href="installation.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Getting started</a> &raquo;</li>
<li>Compatible Hardware</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="installation.html"
title="previous chapter">← Installation</a>
</li>
<li class="next">
<a href="examples.html"
title="next chapter">Examples →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="compatible-hardware">
<h1>Compatible Hardware<a class="headerlink" href="#compatible-hardware" title="Permalink to this headline"></a></h1>
<p>The library uses the Arduino Ethernet Client API for interacting with the network hardware.
It should work fine as long as the <cite>Client</cite> class is available.</p>
<p>Here is the list of devices on which the library was tested:</p>
<ul class="simple">
<li><p>Arduino Uno</p></li>
<li><p>Arduino Mega</p></li>
<li><p>Arduino Nano</p></li>
<li><p>Arduino Pro Mini</p></li>
<li><p>Arduino Nano 33 IoT</p></li>
<li><p>NodeMCU</p></li>
<li><p>Controllino Mega (Pure)</p></li>
<li><p>Controllino Maxi (Pure)</p></li>
<li><p>ESP-01</p></li>
<li><p>ESP32-CAM</p></li>
<li><p>Sonoff Dual R2</p></li>
<li><p>Sonoff Dual R3</p></li>
<li><p>Sonoff Basic</p></li>
<li><p>Sonoff Mini</p></li>
<li><p>Tuya Wi-Fi switch module</p></li>
<li><p>Tuya Wi-Fi curtain module</p></li>
</ul>
<p>Please note that it’s not the complete list of supported devices.
You may try to use the library on any device that uses Arduino core.</p>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="installation.html"
title="previous chapter">← Installation</a>
</li>
<li class="next">
<a href="examples.html"
title="next chapter">Examples →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,265 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Examples - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Library" href="../library/index.html" />
<link rel="prev" title="Compatible Hardware" href="compatible-hardware.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Getting started</a> &raquo;</li>
<li>Examples</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="compatible-hardware.html"
title="previous chapter">← Compatible Hardware</a>
</li>
<li class="next">
<a href="../library/index.html"
title="next chapter">Library →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="examples">
<h1>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h1>
<table class="colwidths-given examples-table docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 75%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Example</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/binary-sensor/binary-sensor.ino">Binary sensor</a></p></td>
<td><p>Using the binary sensor as a door contact sensor.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/button/button.ino">Button</a></p></td>
<td><p>Adding simple buttons to the Home Assistant panel.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/esp32-cam/esp32-cam.ino">Camera</a></p></td>
<td><p>Publishing the preview from the ESP32-CAM module.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/cover/cover.ino">Cover</a></p></td>
<td><p>Controlling a window cover (open / close / stop).</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/multi-state-button/multi-state-button.ino">Device trigger</a></p></td>
<td><p>Implementation of a simple wall switch that reports press and hold states.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/fan/fan.ino">Fan</a></p></td>
<td><p>Controlling a simple fan (state + speed).</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/hvac/hvac.ino">HVAC</a></p></td>
<td><p>HVAC controller with multiple modes, power control and target temperature.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/lock/lock.ino">Lock</a></p></td>
<td><p>A simple door lock that’s controlled by the Home Assistant.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/light/light.ino">Light</a></p></td>
<td><p>A simple light that allows changing brightness, color temperature and RGB color.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/number/number.ino">Number</a></p></td>
<td><p>Adding an interactive numeric slider in the Home Assistant panel.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/scene/scene.ino">Scene</a></p></td>
<td><p>Adding a custom scene in the Home Assistant panel.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/select/select.ino">Select</a></p></td>
<td><p>A dropdown selector that’s displayed in the Home Assistant panel.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/sensor/sensor.ino">Sensor</a></p></td>
<td><p>A simple sensor that reports a state in a string representation (open / opening / close).</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/sensor-analog/sensor-analog.ino">Analog sensor</a></p></td>
<td><p>Reporting the analog pin’s voltage to the Home Assistant.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/sensor-integer/sensor-integer.ino">Integer sensor</a></p></td>
<td><p>Reporting the device’s uptime to the Home Assistant.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/led-switch/led-switch.ino">Switch</a></p></td>
<td><p>The LED that’s controlled by the Home Assistant.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/multi-switch/multi-switch.ino">Multi-switch</a></p></td>
<td><p>Multiple switches controlled by the Home Assistant.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/tag-scanner/tag-scanner.ino">Tag scanner</a></p></td>
<td><p>Scanning RFID tags using the MFRC522 module.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/availability/availability.ino">Availability</a></p></td>
<td><p>Reporting entities’ availability (online / offline) to the Home Assistant.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/advanced-availability/advanced-availability.ino">Advanced availability</a></p></td>
<td><p>Advanced availability reporting with MQTT LWT (Last Will and Testament).</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/mqtt-advanced/mqtt-advanced.ino">MQTT advanced</a></p></td>
<td><p>Subscribing to custom topics and publishing custom messages.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/mqtt-with-credentials/mqtt-with-credentials.ino">MQTT with credentials</a></p></td>
<td><p>Establishing connection with a MQTT broker using the credentials.</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/nodemcu/nodemcu.ino">NodeMCU (ESP8266)</a></p></td>
<td><p>Basic example for ESP8266 devices.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/nano33iot/nano33iot.ino">Arduino Nano 33 IoT</a></p></td>
<td><p>Basic example for Arduino Nano 33 IoT (SAMD family).</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/mdns/mdns.ino">mDNS discovery</a></p></td>
<td><p>Make your ESP8266 discoverable via the mDNS.</p></td>
</tr>
</tbody>
</table>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="compatible-hardware.html"
title="previous chapter">← Compatible Hardware</a>
</li>
<li class="next">
<a href="../library/index.html"
title="next chapter">Library →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+191
View File
@@ -0,0 +1,191 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Getting started - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Prerequisites" href="prerequisites.html" />
<link rel="prev" title="ArduinoHA documentation" href="../../index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li>Getting started</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../../index.html"
title="previous chapter">← ArduinoHA documentation</a>
</li>
<li class="next">
<a href="prerequisites.html"
title="next chapter">Prerequisites →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="getting-started">
<h1>Getting started<a class="headerlink" href="#getting-started" title="Permalink to this headline"></a></h1>
<p>Welcome to the ArduinoHA library!
This documentation is a step-by-step guide that presents all features of the library.
If you feel that there is anything unclear don’t hesitate to open a new GitHub discussion.</p>
<p>Have fun!</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="prerequisites.html">Prerequisites</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="installation.html#arduino-ide">Arduino IDE</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html#makeesparduino">makeEspArduino</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../../index.html"
title="previous chapter">← ArduinoHA documentation</a>
</li>
<li class="next">
<a href="prerequisites.html"
title="next chapter">Prerequisites →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,204 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Installation - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Compatible Hardware" href="compatible-hardware.html" />
<link rel="prev" title="Prerequisites" href="prerequisites.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting started</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Getting started</a> &raquo;</li>
<li>Installation</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="prerequisites.html"
title="previous chapter">← Prerequisites</a>
</li>
<li class="next">
<a href="compatible-hardware.html"
title="next chapter">Compatible Hardware →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<p>There are two ways to install the library depending on your project.
If you’re using Arduino IDE to compile your project you only need to install the library into the IDE.</p>
<p>The second method is meant for more advanced users that use <em>makeEspArduino</em> for building the project for ESP32/ESP8266 devices.</p>
<section id="arduino-ide">
<h2>Arduino IDE<a class="headerlink" href="#arduino-ide" title="Permalink to this headline"></a></h2>
<p>To install the library into your Arduino IDE you can use Library Manager (available from IDE version 1.6.2).
Open the IDE and click to the “Sketch” menu and then <em>Include Library &gt; Manage Libraries</em>.</p>
<img alt="../../_images/manage-libraries.png" class="align-center" src="../../_images/manage-libraries.png" style="width: 500px;" />
<p>Type “home-assistant-integration” in the search field, select the latest version of the library from the dropdown and then click <em>Install</em>.</p>
<img alt="../../_images/library-search.png" class="align-center" src="../../_images/library-search.png" style="width: 500px;" />
<p>For other installation methods please refer to <a class="reference external" href="https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries">Arduino documentation</a>.</p>
</section>
<section id="makeesparduino">
<h2>makeEspArduino<a class="headerlink" href="#makeesparduino" title="Permalink to this headline"></a></h2>
<p>The library can be installed in an environment managed by <a class="reference external" href="https://github.com/plerup/makeEspArduino">makeEspArduino</a>.
The best approach is to add the library and its dependency as submodules in the project as follows:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">git</span><span class="w"> </span><span class="n">submodule</span><span class="w"> </span><span class="n">add</span><span class="w"> </span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/dawidchyrzynski/arduino-home-assistant.git arduino-home-assistant</span>
<span class="n">cd</span><span class="w"> </span><span class="n">arduino</span><span class="o">-</span><span class="n">home</span><span class="o">-</span><span class="n">assistant</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">git</span><span class="w"> </span><span class="n">checkout</span><span class="w"> </span><span class="n">tags</span><span class="o">/</span><span class="mf">2.0.0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">cd</span><span class="w"> </span><span class="p">..</span><span class="w"></span>
<span class="n">git</span><span class="w"> </span><span class="n">submodule</span><span class="w"> </span><span class="n">add</span><span class="w"> </span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/knolleary/pubsubclient.git pubsubclient</span>
<span class="n">cd</span><span class="w"> </span><span class="n">pubsubclient</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">git</span><span class="w"> </span><span class="n">checkout</span><span class="w"> </span><span class="n">tags</span><span class="o">/</span><span class="n">v2</span><span class="mf">.8</span><span class="w"></span>
</pre></div>
</div>
<p>Then you just need to add one extra line in your <cite>Makefile</cite>:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="nl">LIBS</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="n">$</span><span class="p">(</span><span class="n">ROOT</span><span class="p">)</span><span class="o">/</span><span class="n">arduino</span><span class="o">-</span><span class="n">home</span><span class="o">-</span><span class="n">assistant</span><span class="w"> </span><span class="n">$</span><span class="p">(</span><span class="n">ROOT</span><span class="p">)</span><span class="o">/</span><span class="n">pubsubclient</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="prerequisites.html"
title="previous chapter">← Prerequisites</a>
</li>
<li class="next">
<a href="compatible-hardware.html"
title="next chapter">Compatible Hardware →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,181 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Prerequisites - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Installation" href="installation.html" />
<link rel="prev" title="Getting started" href="index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Getting started</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="../library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Getting started</a> &raquo;</li>
<li>Prerequisites</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Getting started</a>
</li>
<li class="next">
<a href="installation.html"
title="next chapter">Installation →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="prerequisites">
<h1>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h1>
<p>ArduinoHA uses MQTT protocol over TCP to communicate with your Home Assistant instance.
The MQTT broker is not installed by default so you will need to install an extra HA addon in order to get the integration working.</p>
<p>The recommended setup method is to use the <a class="reference external" href="https://github.com/home-assistant/addons/blob/master/mosquitto/DOCS.md">Mosquitto Brokker addon</a>.
After installing the addon your HA instance acts as a broker for all devices you’re going to integrate with it.</p>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Getting started</a>
</li>
<li class="next">
<a href="installation.html"
title="next chapter">Installation →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,265 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Availability reporting - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Connection parameters" href="connection-params.html" />
<link rel="prev" title="Device configuration" href="device-configuration.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Availability reporting</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="device-configuration.html"
title="previous chapter">← Device configuration</a>
</li>
<li class="next">
<a href="connection-params.html"
title="next chapter">Connection parameters →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="availability-reporting">
<h1>Availability reporting<a class="headerlink" href="#availability-reporting" title="Permalink to this headline"></a></h1>
<p>Home Assistant allows to track online/offline states of devices and device types.
In this way controls available in the panel will be displayed as disabled if a device is offline.</p>
<p>The library allows to expose state of the entire device (i.e. shared availability) or specific type (sensor, switch, light, etc.).
By default this feature is not enabled to save resources (RAM and flash) but you can easily turn it on as shown below.</p>
<section id="shared-availability">
<h2>Shared availability<a class="headerlink" href="#shared-availability" title="Permalink to this headline"></a></h2>
<p>I highly recommend to use shared availability feature as it allows to utilize MQTT LWT.
Basically, shared availability allows to control availability of all types related to a specific device.
For example: if your device has 5 switches and 2 buttons you can control their availability in the HA panel using a single method call.</p>
<p>See example below showing how to enable shared availability of the device.
By default, the device is considered online but you can control its state manually using <code class="docutils literal notranslate"><span class="pre">HADevice::setAvailability(bool</span> <span class="pre">online)</span></code> method.
In most cases you won’t need to control availability manually as the library takes care of availability as long as the device is powered on.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="s">&quot;myUniqueID&quot;</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">enableSharedAvailability</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// device.setAvailability(false); // changes default state to offline</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="w"> </span><span class="c1">// device.setAvailability(true); // you can control availability manually if you want</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="mqtt-lwt">
<h2>MQTT LWT<a class="headerlink" href="#mqtt-lwt" title="Permalink to this headline"></a></h2>
<p>The shared availability feature is considered a complete solution only if it’s used with MQTT LWT feature.
Without LWT if the device is powered off then Home Assistant displays it as online.
That’s because availability tracking relies on MQTT messages and if you cut off power of your device then its not capable of publishing the offline message.</p>
<p>When LWT feature is enabled the device becomes offline in the HA panel even if you cut off power supply.
This solution is implemented by MQTT broker that automatically publishes the message when the TCP connection to the device is lost.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="s">&quot;myUniqueID&quot;</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">enableSharedAvailability</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">enableLastWill</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="device-type-s-availability">
<h2>Device type’s availability<a class="headerlink" href="#device-type-s-availability" title="Permalink to this headline"></a></h2>
<p>There also a way to control availability of specific device types.
Each type can be controlled separately as shown below.
Please note that this solution requires shared availability to be disabled and it’s not supported by LWT.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="n">HASwitch</span><span class="w"> </span><span class="nf">mySwitch</span><span class="p">(</span><span class="s">&quot;mySwitchId&quot;</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// this line enables availability for your switch</span>
<span class="w"> </span><span class="n">mySwitch</span><span class="p">.</span><span class="n">setAvailability</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span><span class="w"> </span><span class="c1">// you can also set it to false</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="w"> </span><span class="c1">// you can control availability at runtime as follows:</span>
<span class="w"> </span><span class="n">mySwitch</span><span class="p">.</span><span class="n">setAvailability</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span><span class="w"> </span><span class="c1">// online</span>
<span class="w"> </span><span class="n">mySwitch</span><span class="p">.</span><span class="n">setAvailability</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span><span class="w"> </span><span class="c1">// offline</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="device-configuration.html"
title="previous chapter">← Device configuration</a>
</li>
<li class="next">
<a href="connection-params.html"
title="next chapter">Connection parameters →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+208
View File
@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Compiler macros - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="API reference" href="../api/index.html" />
<link rel="prev" title="MQTT advanced features" href="mqtt-advanced.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Compiler macros</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="mqtt-advanced.html"
title="previous chapter">← MQTT advanced features</a>
</li>
<li class="next">
<a href="../api/index.html"
title="next chapter">API reference →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="compiler-macros">
<h1>Compiler macros<a class="headerlink" href="#compiler-macros" title="Permalink to this headline"></a></h1>
<p>The library supports couple of macros that are defined in the <cite>ArduinoHADefines.h</cite> file.
You can uncomment them in this specific file or provide flags directly to compiler (for example: via Makefile).</p>
<section id="debug-mode">
<h2>Debug mode<a class="headerlink" href="#debug-mode" title="Permalink to this headline"></a></h2>
<p>Debug mode unlocks logging feature in the library.
Logs may be useful for debugging the communication with the Home Assistant.</p>
<p>To enable debug mode you need to defined <cite>ARDUINOHA_DEBUG</cite> macro.</p>
</section>
<section id="code-optimization">
<h2>Code optimization<a class="headerlink" href="#code-optimization" title="Permalink to this headline"></a></h2>
<p>Defining one of the macros listed below results in truncating the corresponding device type.
It may be useful if you want to save some flash memory occupied by virtual tables of those classes.</p>
<ul class="simple">
<li><p><cite>EX_ARDUINOHA_BINARY_SENSOR</cite></p></li>
<li><p><cite>EX_ARDUINOHA_BUTTON</cite></p></li>
<li><p><cite>EX_ARDUINOHA_CAMERA</cite></p></li>
<li><p><cite>EX_ARDUINOHA_COVER</cite></p></li>
<li><p><cite>EX_ARDUINOHA_DEVICE_TRACKER</cite></p></li>
<li><p><cite>EX_ARDUINOHA_DEVICE_TRIGGER</cite></p></li>
<li><p><cite>EX_ARDUINOHA_FAN</cite></p></li>
<li><p><cite>EX_ARDUINOHA_HVAC</cite></p></li>
<li><p><cite>EX_ARDUINOHA_LIGHT</cite></p></li>
<li><p><cite>EX_ARDUINOHA_LOCK</cite></p></li>
<li><p><cite>EX_ARDUINOHA_NUMBER</cite></p></li>
<li><p><cite>EX_ARDUINOHA_SCENE</cite></p></li>
<li><p><cite>EX_ARDUINOHA_SELECT</cite></p></li>
<li><p><cite>EX_ARDUINOHA_SENSOR</cite></p></li>
<li><p><cite>EX_ARDUINOHA_SWITCH</cite></p></li>
<li><p><cite>EX_ARDUINOHA_TAG_SCANNER</cite></p></li>
</ul>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="mqtt-advanced.html"
title="previous chapter">← MQTT advanced features</a>
</li>
<li class="next">
<a href="../api/index.html"
title="next chapter">API reference →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,219 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Connection parameters - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Discovery" href="discovery.html" />
<link rel="prev" title="Availability reporting" href="availability-reporting.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Connection parameters</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="availability-reporting.html"
title="previous chapter">← Availability reporting</a>
</li>
<li class="next">
<a href="discovery.html"
title="next chapter">Discovery →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="connection-parameters">
<h1>Connection parameters<a class="headerlink" href="#connection-parameters" title="Permalink to this headline"></a></h1>
<p><a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> class exposes a few variants of the <code class="docutils literal notranslate"><span class="pre">begin</span></code> method that allows specifying the MQTT connection parameters.
<strong>This method should be called only once and at the end of the setup logic.</strong>
The example below presents all possible variants. Pick one that meets your requirements.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Connection to the MQTT broker is established asynchronously.
The <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt::begin</span></a> method just sets the parameters of the connection.
The connection attempt is made during the loop cycle.</p>
</div>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// anoymous connection on default port 1883</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// anoymous connection on port 8888</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="mi">8888</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// connection with credentials on default port 1883</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// connection with credentials on port 8888</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="mi">8888</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// you can also use hostname in all variants</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;mybroker.local&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="availability-reporting.html"
title="previous chapter">← Availability reporting</a>
</li>
<li class="next">
<a href="discovery.html"
title="next chapter">Discovery →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
@@ -0,0 +1,275 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Device configuration - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Availability reporting" href="availability-reporting.html" />
<link rel="prev" title="Introduction" href="introduction.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Device configuration</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="introduction.html"
title="previous chapter">← Introduction</a>
</li>
<li class="next">
<a href="availability-reporting.html"
title="next chapter">Availability reporting →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="device-configuration">
<h1>Device configuration<a class="headerlink" href="#device-configuration" title="Permalink to this headline"></a></h1>
<p><a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice</span></a> 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.</p>
<p>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.</p>
<p>The supported properties are:</p>
<ul class="simple">
<li><p>unique ID*</p></li>
<li><p>name</p></li>
<li><p>software version</p></li>
<li><p>manufacturer</p></li>
<li><p>model</p></li>
</ul>
<section id="unique-id">
<h2>Unique ID<a class="headerlink" href="#unique-id" title="Permalink to this headline"></a></h2>
<p>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.</p>
<p>There are three different ways to set the ID of the device.
You can pick one depending on your needs.</p>
<section id="providing-string-const-char-to-the-hadevice-constructor">
<h3>1) Providing string (const char*) to the <a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice</span></a> constructor<a class="headerlink" href="#providing-string-const-char-to-the-hadevice-constructor" title="Permalink to this headline"></a></h3>
<p>Try to keep the ID simple (alphanumeric characters) and short.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="s">&quot;myUniqueID&quot;</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="providing-byte-array-to-the-hadevice-constructor">
<h3>2) Providing byte array to the <a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice</span></a> constructor<a class="headerlink" href="#providing-byte-array-to-the-hadevice-constructor" title="Permalink to this headline"></a></h3>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="c1">// use your own unique bytes sequence</span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="using-hadevice-setuniqueid-method-during-the-setup">
<h3>3) Using <a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice::setUniqueId</span></a> method during the setup<a class="headerlink" href="#using-hadevice-setuniqueid-method-during-the-setup" title="Permalink to this headline"></a></h3>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="n">device</span><span class="p">;</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// any length is acceptable</span>
<span class="w"> </span><span class="n">byte</span><span class="w"> </span><span class="n">myId</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x05</span><span class="p">,</span><span class="w"> </span><span class="mh">0xb4</span><span class="p">,</span><span class="w"> </span><span class="mh">0xc6</span><span class="p">,</span><span class="w"> </span><span class="mh">0x9f</span><span class="p">,</span><span class="w"> </span><span class="mh">0xbe</span><span class="p">,</span><span class="w"> </span><span class="mh">0xce</span><span class="p">,</span><span class="w"> </span><span class="mh">0x8c</span><span class="p">,</span><span class="w"> </span><span class="mh">0x1f</span><span class="p">,</span><span class="w"> </span><span class="mh">0xc7</span><span class="p">};</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setUniqueId</span><span class="p">(</span><span class="n">myId</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">myId</span><span class="p">));</span><span class="w"> </span><span class="c1">// the input array is cloned internally</span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
<section id="device-properties">
<h2>Device properties<a class="headerlink" href="#device-properties" title="Permalink to this headline"></a></h2>
<p>Each property has its corresponding setter method in the <a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice</span></a> class.
Please note that all these methods accept const char pointer whose <strong>content is not copied</strong>.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="s">&quot;myUniqueId&quot;</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setName</span><span class="p">(</span><span class="s">&quot;Bedroom Light Controller&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setSoftwareVersion</span><span class="p">(</span><span class="s">&quot;1.0.0&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setManufacturer</span><span class="p">(</span><span class="s">&quot;Developer Corp.&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setModel</span><span class="p">(</span><span class="s">&quot;ABC-123&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="introduction.html"
title="previous chapter">← Introduction</a>
</li>
<li class="next">
<a href="availability-reporting.html"
title="next chapter">Availability reporting →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+312
View File
@@ -0,0 +1,312 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Device types - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="MQTT security" href="mqtt-security.html" />
<link rel="prev" title="Discovery" href="discovery.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Device types</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="discovery.html"
title="previous chapter">← Discovery</a>
</li>
<li class="next">
<a href="mqtt-security.html"
title="next chapter">MQTT security →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="device-types">
<h1>Device types<a class="headerlink" href="#device-types" title="Permalink to this headline"></a></h1>
<p>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.</p>
<p>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.</p>
<section id="limitations">
<h2>Limitations<a class="headerlink" href="#limitations" title="Permalink to this headline"></a></h2>
<p>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.</p>
<p>By default, the maximum number of device types is 6.
You can increase the limit using the <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> class constructor as follows:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">,</span><span class="w"> </span><span class="mi">12</span><span class="p">);</span><span class="w"> </span><span class="c1">// &lt;------------ 12 is a new limit of device types</span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your setup logic goes here</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your loop logic goes here</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
<p>Please note that this limit cannot be changed at runtime.</p>
</section>
<section id="supported-device-types">
<h2>Supported device types<a class="headerlink" href="#supported-device-types" title="Permalink to this headline"></a></h2>
<table class="colwidths-given supported-device-types-table docutils align-default">
<colgroup>
<col style="width: 25%" />
<col style="width: 15%" />
<col style="width: 60%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Device type</p></th>
<th class="head"><p>Supported</p></th>
<th class="head"><p>Documentation</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Binary sensor</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-binary-sensor.html"><span class="doc">HABinarySensor</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Button</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-button.html"><span class="doc">HAButton</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Camera</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-camera.html"><span class="doc">HACamera</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Cover</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-cover.html"><span class="doc">HACover</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Device tracker</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-device-tracker.html"><span class="doc">HADeviceTracker</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Device trigger</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-device-trigger.html"><span class="doc">HADeviceTrigger</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Fan</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-fan.html"><span class="doc">HAFan</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Humidifier</p></td>
<td><p>❌</p></td>
<td><p>–</p></td>
</tr>
<tr class="row-even"><td><p>HVAC</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-hvac.html"><span class="doc">HAHVAC</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Light</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-light.html"><span class="doc">HALight</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Lock</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-lock.html"><span class="doc">HALock</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Number</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-number.html"><span class="doc">HANumber</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Scene</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-scene.html"><span class="doc">HAScene</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Select</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-select.html"><span class="doc">HASelect</span></a></p></td>
</tr>
<tr class="row-even"><td><div class="line-block">
<div class="line">Sensor (text)</div>
</div>
</td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-sensor.html"><span class="doc">HASensor</span></a></p></td>
</tr>
<tr class="row-odd"><td><div class="line-block">
<div class="line">Sensor (number)</div>
</div>
</td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-sensor-number.html"><span class="doc">HASensorNumber</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Switch</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-switch.html"><span class="doc">HASwitch</span></a></p></td>
</tr>
<tr class="row-odd"><td><p>Tag scanner</p></td>
<td><p>✅</p></td>
<td><p><a class="reference internal" href="../api/device-types/ha-tag-scanner.html"><span class="doc">HATagScanner</span></a></p></td>
</tr>
<tr class="row-even"><td><p>Vacuum</p></td>
<td><p>❌</p></td>
<td><p>–</p></td>
</tr>
</tbody>
</table>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="discovery.html"
title="previous chapter">← Discovery</a>
</li>
<li class="next">
<a href="mqtt-security.html"
title="next chapter">MQTT security →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+215
View File
@@ -0,0 +1,215 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Discovery - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Device types" href="device-types.html" />
<link rel="prev" title="Connection parameters" href="connection-params.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Discovery</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="connection-params.html"
title="previous chapter">← Connection parameters</a>
</li>
<li class="next">
<a href="device-types.html"
title="next chapter">Device types →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="discovery">
<h1>Discovery<a class="headerlink" href="#discovery" title="Permalink to this headline"></a></h1>
<p>The library automatically maintains connection to the MQTT broker and takes care of the discovery process.
Each device type that you create (sensor, switch, light, fan, etc.) is automatically registered in MQTT manager.
Whenever connection with the MQTT broker is acquired the configuration of all device types is pushed to the Home Assistant.</p>
<p>There is one basic rule that you need to follow: device types need to be constructed after <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> class.
That’s because device types are relying on <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> instance internally.</p>
<section id="topics-prefix">
<h2>Topics prefix<a class="headerlink" href="#topics-prefix" title="Permalink to this headline"></a></h2>
<p>In some cases you may need to change prefix of MQTT topics.
There are two types of topics utilized by the library:</p>
<ul class="simple">
<li><p><strong>discovery topic</strong> - used for publishing device types’ configuration (default: <code class="docutils literal notranslate"><span class="pre">homeassistant</span></code>)</p></li>
<li><p><strong>data topic</strong> - used for publishing states, data, etc. (default: <code class="docutils literal notranslate"><span class="pre">aha</span></code>)</p></li>
</ul>
<p>The discovery topic’s prefix can be changed using <code class="docutils literal notranslate"><span class="pre">HAMqtt::setDiscoveryPrefix(const</span> <span class="pre">char*</span> <span class="pre">prefix)</span></code> method.
The data topic’s prefix can be changed using <code class="docutils literal notranslate"><span class="pre">HAMqtt::setDataPrefix(const</span> <span class="pre">char*</span> <span class="pre">prefix)</span></code> method</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="c1">// register your device types here</span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">setDiscoveryPrefix</span><span class="p">(</span><span class="s">&quot;myCustomPrefix&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">setDataPrefix</span><span class="p">(</span><span class="s">&quot;myDataPrefix&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="connection-params.html"
title="previous chapter">← Connection parameters</a>
</li>
<li class="next">
<a href="device-types.html"
title="next chapter">Device types →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+222
View File
@@ -0,0 +1,222 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Library - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Introduction" href="introduction.html" />
<link rel="prev" title="Examples" href="../getting-started/examples.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li>Library</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="../getting-started/examples.html"
title="previous chapter">← Examples</a>
</li>
<li class="next">
<a href="introduction.html"
title="next chapter">Introduction →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="library">
<h1>Library<a class="headerlink" href="#library" title="Permalink to this headline"></a></h1>
<p>This chapter describes basic all of the library’s core.
Solid understanding of foundations will allow you to utilize full potential of the library.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a><ul>
<li class="toctree-l2"><a class="reference internal" href="introduction.html#arduino-boilerplate">Arduino Boilerplate</a></li>
<li class="toctree-l2"><a class="reference internal" href="introduction.html#esp32-esp8266-boilerplate">ESP32/ESP8266 Boilerplate</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="device-configuration.html">Device configuration</a><ul>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html#unique-id">Unique ID</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html#device-properties">Device properties</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="availability-reporting.html">Availability reporting</a><ul>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html#shared-availability">Shared availability</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html#mqtt-lwt">MQTT LWT</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html#device-type-s-availability">Device type’s availability</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l1"><a class="reference internal" href="discovery.html">Discovery</a><ul>
<li class="toctree-l2"><a class="reference internal" href="discovery.html#topics-prefix">Topics prefix</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="device-types.html">Device types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="device-types.html#limitations">Limitations</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html#supported-device-types">Supported device types</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mqtt-security.html">MQTT security</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html#ssl-connection">SSL connection</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a><ul>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html#callbacks">Callbacks</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html#subscriptions">Subscriptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html#publishing-a-message">Publishing a message</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="compiler-macros.html">Compiler macros</a><ul>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html#debug-mode">Debug mode</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html#code-optimization">Code optimization</a></li>
</ul>
</li>
</ul>
</div>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="../getting-started/examples.html"
title="previous chapter">← Examples</a>
</li>
<li class="next">
<a href="introduction.html"
title="next chapter">Introduction →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+251
View File
@@ -0,0 +1,251 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>Introduction - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Device configuration" href="device-configuration.html" />
<link rel="prev" title="Library" href="index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>Introduction</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Library</a>
</li>
<li class="next">
<a href="device-configuration.html"
title="next chapter">Device configuration →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="introduction">
<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h1>
<p>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:</p>
<ol class="arabic simple">
<li><p><a class="reference internal" href="../api/core/ha-device.html"><span class="doc">HADevice</span></a> and <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> instances need to be initialized once globally or as a part of another global object.</p></li>
<li><p><a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt::begin</span></a> needs to be called at the end of setup logic. It provides MQTT broker credentials that will be used for a connection.</p></li>
<li><p><a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt::loop</span></a> method needs to be called periodically (it doesn’t need to be called on each tick).</p></li>
<li><p>Device types need to be initialized after <a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> class (it will be described later in the documentation).</p></li>
</ol>
<p>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.</p>
<section id="arduino-boilerplate">
<h2>Arduino Boilerplate<a class="headerlink" href="#arduino-boilerplate" title="Permalink to this headline"></a></h2>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your setup logic goes here</span>
<span class="w"> </span><span class="c1">// MQTT broker connection (use your data here)</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your loop logic goes here</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="esp32-esp8266-boilerplate">
<h2>ESP32/ESP8266 Boilerplate<a class="headerlink" href="#esp32-esp8266-boilerplate" title="Permalink to this headline"></a></h2>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ESP8266WiFi.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">WiFiClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="n">device</span><span class="p">;</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[</span><span class="n">WL_MAC_ADDR_LENGTH</span><span class="p">];</span><span class="w"></span>
<span class="w"> </span><span class="n">WiFi</span><span class="p">.</span><span class="n">macAddress</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">device</span><span class="p">.</span><span class="n">setUniqueId</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="w"> </span><span class="c1">// you can skip this part if you&#39;re already maintaining the connection logic</span>
<span class="w"> </span><span class="n">WiFi</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;MyNetworkSSID&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;MyPassword&quot;</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">status</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">WL_CONNECTED</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">delay</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span><span class="w"> </span><span class="c1">// waiting for the connection</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your setup logic goes here</span>
<span class="w"> </span><span class="c1">// MQTT broker connection (use your data here)</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// your loop logic goes here</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="index.html"
title="previous chapter">← Library</a>
</li>
<li class="next">
<a href="device-configuration.html"
title="next chapter">Device configuration →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+279
View File
@@ -0,0 +1,279 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>MQTT advanced features - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Compiler macros" href="compiler-macros.html" />
<link rel="prev" title="MQTT security" href="mqtt-security.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>MQTT advanced features</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="mqtt-security.html"
title="previous chapter">← MQTT security</a>
</li>
<li class="next">
<a href="compiler-macros.html"
title="next chapter">Compiler macros →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="mqtt-advanced-features">
<h1>MQTT advanced features<a class="headerlink" href="#mqtt-advanced-features" title="Permalink to this headline"></a></h1>
<section id="callbacks">
<h2>Callbacks<a class="headerlink" href="#callbacks" title="Permalink to this headline"></a></h2>
<p><a class="reference internal" href="../api/core/ha-mqtt.html"><span class="doc">HAMqtt</span></a> class exposes some useful callbacks that you can bind to.
Please take a look at the example below.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">onMessage</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">topic</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">uint8_t</span><span class="o">*</span><span class="w"> </span><span class="n">payload</span><span class="p">,</span><span class="w"> </span><span class="kt">uint16_t</span><span class="w"> </span><span class="n">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// this method will be called each time the device receives an MQTT message</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">onConnected</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// this method will be called when connection to MQTT broker is established</span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">onMessage</span><span class="p">(</span><span class="n">onMessage</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">onConnected</span><span class="p">(</span><span class="n">onConnected</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="subscriptions">
<h2>Subscriptions<a class="headerlink" href="#subscriptions" title="Permalink to this headline"></a></h2>
<p>You can also subscribe to a custom topic using <code class="docutils literal notranslate"><span class="pre">HAMqtt::subscribe(const</span> <span class="pre">char*</span> <span class="pre">topic)</span></code> method.
The subscription needs to be made each time a connection to the MQTT broker is established.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">onMessage</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="o">*</span><span class="w"> </span><span class="n">topic</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">uint8_t</span><span class="o">*</span><span class="w"> </span><span class="n">payload</span><span class="p">,</span><span class="w"> </span><span class="kt">uint16_t</span><span class="w"> </span><span class="n">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">strcmp</span><span class="p">(</span><span class="n">topic</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;myTopic&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// message on &quot;myTopic&quot; received</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">onConnected</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">subscribe</span><span class="p">(</span><span class="s">&quot;myTopic&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">onMessage</span><span class="p">(</span><span class="n">onMessage</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">onConnected</span><span class="p">(</span><span class="n">onConnected</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
<section id="publishing-a-message">
<h2>Publishing a message<a class="headerlink" href="#publishing-a-message" title="Permalink to this headline"></a></h2>
<p>HAMqtt class also exposes the method that allows to publish custom messages.</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">mac</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">Ethernet</span><span class="p">.</span><span class="n">maintain</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span><span class="w"></span>
<span class="w"> </span><span class="c1">// Publishing the non-retained message:</span>
<span class="w"> </span><span class="c1">// mqtt.publish(&quot;customTopic&quot;, &quot;customPayload&quot;);</span>
<span class="w"> </span><span class="c1">// Publishing the retained message:</span>
<span class="w"> </span><span class="c1">// mqtt.publish(&quot;customTopic&quot;, &quot;customPayload&quot;, true);</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="mqtt-security.html"
title="previous chapter">← MQTT security</a>
</li>
<li class="next">
<a href="compiler-macros.html"
title="next chapter">Compiler macros →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+211
View File
@@ -0,0 +1,211 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>MQTT security - ArduinoHA</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/theme.css " type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="../../_static/theme-vendors.js"></script> -->
<script src="../../_static/theme.js" defer></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="MQTT advanced features" href="mqtt-advanced.html" />
<link rel="prev" title="Device types" href="device-types.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="../../index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Library</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="device-types.html">Device types</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="../api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Library</a> &raquo;</li>
<li>MQTT security</li>
</ul>
<ul class="page-nav">
<li class="prev">
<a href="device-types.html"
title="previous chapter">← Device types</a>
</li>
<li class="next">
<a href="mqtt-advanced.html"
title="next chapter">MQTT advanced features →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="mqtt-security">
<h1>MQTT security<a class="headerlink" href="#mqtt-security" title="Permalink to this headline"></a></h1>
<p>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.</p>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p>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.</p>
</div>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;Ethernet.h&gt;</span><span class="cp"></span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;ArduinoHA.h&gt;</span><span class="cp"></span>
<span class="n">byte</span><span class="w"> </span><span class="n">mac</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mh">0x00</span><span class="p">,</span><span class="w"> </span><span class="mh">0x10</span><span class="p">,</span><span class="w"> </span><span class="mh">0xFA</span><span class="p">,</span><span class="w"> </span><span class="mh">0x6E</span><span class="p">,</span><span class="w"> </span><span class="mh">0x38</span><span class="p">,</span><span class="w"> </span><span class="mh">0x4A</span><span class="p">};</span><span class="w"></span>
<span class="n">EthernetClient</span><span class="w"> </span><span class="n">client</span><span class="p">;</span><span class="w"></span>
<span class="n">HADevice</span><span class="w"> </span><span class="nf">device</span><span class="p">(</span><span class="n">mac</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">mac</span><span class="p">));</span><span class="w"></span>
<span class="n">HAMqtt</span><span class="w"> </span><span class="nf">mqtt</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">device</span><span class="p">);</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">setup</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="w"> </span><span class="c1">// replace username and password with your credentials</span>
<span class="w"> </span><span class="n">mqtt</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="s">&quot;192.168.1.50&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;username&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;password&quot;</span><span class="p">);</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
<span class="kt">void</span><span class="w"> </span><span class="nf">loop</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// ...</span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
<section id="ssl-connection">
<h2>SSL connection<a class="headerlink" href="#ssl-connection" title="Permalink to this headline"></a></h2>
<p>On ESP32/ESP8266 you can use <code class="docutils literal notranslate"><span class="pre">WiFiClientSecure</span></code> client to establish encrypted connection between your device and Home Assistant.
Please take a look at <a class="reference external" href="https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/mqtt-with-ssl/mqtt-with-ssl.ino">this example</a>.</p>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="prev">
<a href="device-types.html"
title="previous chapter">← Device types</a>
</li>
<li class="next">
<a href="mqtt-advanced.html"
title="next chapter">MQTT advanced features →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
+1599
View File
File diff suppressed because it is too large Load Diff
+279
View File
@@ -0,0 +1,279 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>ArduinoHA documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/theme.css " type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="_static/theme-vendors.js"></script> -->
<script src="_static/theme.js" defer></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Getting started" href="documents/getting-started/index.html" />
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="#" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="documents/getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="#">Docs</a> &raquo;</li>
<li>ArduinoHA documentation</li>
</ul>
<ul class="page-nav">
<li class="next">
<a href="documents/getting-started/index.html"
title="next chapter">Getting started →</a>
</li>
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<section id="arduinoha-documentation">
<h1>ArduinoHA documentation<a class="headerlink" href="#arduinoha-documentation" title="Permalink to this headline"></a></h1>
<p>ArduinoHA allows to integrate an Arduino/ESP based device with Home Assistant using MQTT.
The library is designed to use as low resources (RAM/flash) as possible.
Initially, it was optimized to work on Arduino Uno with Ethernet Shield,
but I successfully use it on ESP8266/ESP8255 boards in my projects.</p>
<section id="features">
<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>Two-way communication (state reporting and command execution)</p></li>
<li><p>MQTT discovery (device is added to the Home Assistant panel automatically)</p></li>
<li><p>MQTT Last Will and Testament</p></li>
<li><p>Support for custom MQTT messages (publishing and subscribing)</p></li>
<li><p>Auto reconnect with MQTT broker</p></li>
<li><p>Reporting availability (online/offline states) of a device</p></li>
<li><p>Doxygen documentation</p></li>
<li><p>Covered by unit tests (AUnit + EpoxyDuino + AUniter)</p></li>
</ul>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="documents/getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/installation.html">Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/getting-started/installation.html#arduino-ide">Arduino IDE</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/getting-started/installation.html#makeesparduino">makeEspArduino</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/library/introduction.html">Introduction</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/introduction.html#arduino-boilerplate">Arduino Boilerplate</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/introduction.html#esp32-esp8266-boilerplate">ESP32/ESP8266 Boilerplate</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-configuration.html">Device configuration</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/device-configuration.html#unique-id">Unique ID</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/device-configuration.html#device-properties">Device properties</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/availability-reporting.html">Availability reporting</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/availability-reporting.html#shared-availability">Shared availability</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/availability-reporting.html#mqtt-lwt">MQTT LWT</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/availability-reporting.html#device-type-s-availability">Device type’s availability</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/discovery.html">Discovery</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/discovery.html#topics-prefix">Topics prefix</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-types.html">Device types</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/device-types.html#limitations">Limitations</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/device-types.html#supported-device-types">Supported device types</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-security.html">MQTT security</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/mqtt-security.html#ssl-connection">SSL connection</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-advanced.html">MQTT advanced features</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/mqtt-advanced.html#callbacks">Callbacks</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/mqtt-advanced.html#subscriptions">Subscriptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/mqtt-advanced.html#publishing-a-message">Publishing a message</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/compiler-macros.html">Compiler macros</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/library/compiler-macros.html#debug-mode">Debug mode</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/library/compiler-macros.html#code-optimization">Code optimization</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/api/core/index.html">Core API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/api/core/ha-device.html">HADevice class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/core/ha-mqtt.html">HAMqtt class</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/device-types/index.html">Device types API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-base-device-type.html">HABaseDeviceType class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-binary-sensor.html">HABinarySensor class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-button.html">HAButton class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-camera.html">HACamera class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-cover.html">HACover class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-device-tracker.html">HADeviceTracker class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-device-trigger.html">HADeviceTrigger class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-fan.html">HAFan class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-hvac.html">HAHVAC class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-light.html">HALight class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-lock.html">HALock class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-number.html">HANumber class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-scene.html">HAScene class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-select.html">HASelect class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-sensor.html">HASensor class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-sensor-number.html">HASensorNumber class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-switch.html">HASwitch class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/device-types/ha-tag-scanner.html">HATagScanner class</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/utils/index.html">Utils API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="documents/api/utils/ha-numeric.html">HANumeric class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/utils/ha-serializer.html">HASerializer class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/utils/ha-serializer-array.html">HASerializerArray class</a></li>
<li class="toctree-l3"><a class="reference internal" href="documents/api/utils/ha-utils.html">HAUtils class</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</section>
</section>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
<li class="next">
<a href="documents/getting-started/index.html"
title="next chapter">Getting started →</a>
</li>
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
</body>
</html>
BIN
View File
Binary file not shown.
+185
View File
@@ -0,0 +1,185 @@
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Search - ArduinoHA</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/theme.css " type="text/css" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<!-- sphinx script_files -->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/custom.js"></script>
<!-- bundled in js (rollup iife) -->
<!-- <script src="_static/theme-vendors.js"></script> -->
<script src="_static/theme.js" defer></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="#" />
<script type="text/javascript" src="searchindex.js" defer></script>
<script type="text/javascript" id="searchindexloader"></script>
</head>
<body>
<div id="app">
<div class="theme-container" :class="pageClasses"><navbar @toggle-sidebar="toggleSidebar">
<router-link to="index.html" class="home-link">
<span class="site-name">ArduinoHA</span>
</router-link>
<div class="links">
<navlinks class="can-hide">
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks>
</div>
</navbar>
<div class="sidebar-mask" @click="toggleSidebar(false)">
</div>
<sidebar @toggle-sidebar="toggleSidebar">
<navlinks>
<div class="nav-item">
<a href="https://github.com/dawidchyrzynski/arduino-home-assistant"
class="nav-link external">
Github <outboundlink></outboundlink>
</a>
</div>
</navlinks><div id="searchbox" class="searchbox" role="search">
<div class="caption"><span class="caption-text">Quick search</span>
<div class="searchformwrapper">
<form class="search" action="#" method="get">
<input type="text" name="q" />
<input type="submit" value="Search" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div><div class="sidebar-links" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Docs</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="documents/getting-started/index.html">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/getting-started/examples.html">Examples</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/library/index.html">Library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/library/introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-configuration.html">Device configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/availability-reporting.html">Availability reporting</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/connection-params.html">Connection parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/discovery.html">Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/device-types.html">Device types</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-security.html">MQTT security</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/mqtt-advanced.html">MQTT advanced features</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/library/compiler-macros.html">Compiler macros</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documents/api/index.html">API reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documents/api/core/index.html">Core API</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/device-types/index.html">Device types API</a></li>
<li class="toctree-l2"><a class="reference internal" href="documents/api/utils/index.html">Utils API</a></li>
</ul>
</li>
</ul>
</div>
</sidebar>
<page>
<div class="body-header" role="navigation" aria-label="navigation">
<ul class="breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Search</li>
</ul>
<ul class="page-nav">
</ul>
</div>
<hr>
<div class="content" role="main" v-pre>
<h1 id="search-documentation">Search</h1>
<div id="fallback" class="admonition warning">
<p>
Please activate JavaScript to enable the search
functionality.
</p>
</div>
<p>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
<span id="search-progress" style="padding-left: 10px"></span>
</form>
<div id="search-results">
</div>
</div>
<div class="page-nav">
<div class="inner"><ul class="page-nav">
</ul><div class="footer" role="contentinfo">
&#169; Copyright 2022, Dawid Chyrzynski.
<br>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 4.5.0 with <a href="https://github.com/schettino72/sphinx_press_theme">Press Theme</a> 0.8.0.
</div>
</div>
</div>
</page>
</div></div>
<script type="text/javascript">
$('#fallback').hide();
</script>
</body>
</html>
File diff suppressed because one or more lines are too long
+31
View File
@@ -0,0 +1,31 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
# Build Github pages
github:
@make clean
@rm -rf xml
@doxygen source/Doxyfile
@make html
@mkdir -p ../docs
@rm -rf ../docs/*
@touch ../docs/.nojekyll
@cp -a build/html/. ../docs
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+17
View File
@@ -0,0 +1,17 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
exhale = "0.3.4"
breathe = "4.34.0"
sphinx = "5.0.2"
lxml = "4.8.0"
sphinx-press-theme = "0.8.0"
sphinxcontrib-email = "0.3.5"
[dev-packages]
[requires]
python_version = "3.9"
+389
View File
@@ -0,0 +1,389 @@
{
"_meta": {
"hash": {
"sha256": "06cbc4b751660842e50f1cd113469dcedc03e5f6ed5be43ab74f58b69b09e7f1"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.9"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"alabaster": {
"hashes": [
"sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359",
"sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"
],
"version": "==0.7.12"
},
"babel": {
"hashes": [
"sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51",
"sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"
],
"markers": "python_version >= '3.6'",
"version": "==2.10.3"
},
"beautifulsoup4": {
"hashes": [
"sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30",
"sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"
],
"markers": "python_version >= '3.6'",
"version": "==4.11.1"
},
"breathe": {
"hashes": [
"sha256:48804dcf0e607a89fb6ad88c729ef12743a42db03ae9489be4ef8f7c4011774a",
"sha256:ac0768a5e84addad3e632028fe67749c567aba2b29088493b64c2c1634bcdba1"
],
"index": "pypi",
"version": "==4.34.0"
},
"certifi": {
"hashes": [
"sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d",
"sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"
],
"markers": "python_version >= '3.6'",
"version": "==2022.6.15"
},
"charset-normalizer": {
"hashes": [
"sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5",
"sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"
],
"markers": "python_version >= '3.6'",
"version": "==2.1.0"
},
"docutils": {
"hashes": [
"sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125",
"sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==0.17.1"
},
"exhale": {
"hashes": [
"sha256:0871fa29ff9ac91c14e0dd69ad40db798068b4407e2e7ba5f650e07cedd6f365",
"sha256:8fe83b2d96ef41e0f921b865c1bf46c40c6907cbeff0207ab9b445fd54539a16"
],
"index": "pypi",
"version": "==0.3.4"
},
"idna": {
"hashes": [
"sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff",
"sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
],
"markers": "python_version >= '3.5'",
"version": "==3.3"
},
"imagesize": {
"hashes": [
"sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b",
"sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.4.1"
},
"importlib-metadata": {
"hashes": [
"sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670",
"sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"
],
"markers": "python_version < '3.10'",
"version": "==4.12.0"
},
"jinja2": {
"hashes": [
"sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852",
"sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"
],
"markers": "python_version >= '3.7'",
"version": "==3.1.2"
},
"lxml": {
"hashes": [
"sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318",
"sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c",
"sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b",
"sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000",
"sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73",
"sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d",
"sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb",
"sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8",
"sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2",
"sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345",
"sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94",
"sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e",
"sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b",
"sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc",
"sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a",
"sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9",
"sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc",
"sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387",
"sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb",
"sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7",
"sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4",
"sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97",
"sha256:49a866923e69bc7da45a0565636243707c22752fc38f6b9d5c8428a86121022c",
"sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67",
"sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627",
"sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7",
"sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd",
"sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3",
"sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7",
"sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130",
"sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b",
"sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036",
"sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785",
"sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca",
"sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91",
"sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc",
"sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536",
"sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391",
"sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3",
"sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d",
"sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21",
"sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3",
"sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d",
"sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29",
"sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715",
"sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed",
"sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25",
"sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c",
"sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785",
"sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837",
"sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4",
"sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b",
"sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2",
"sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067",
"sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448",
"sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d",
"sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2",
"sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc",
"sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c",
"sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5",
"sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84",
"sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8",
"sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf",
"sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7",
"sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e",
"sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb",
"sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b",
"sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3",
"sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad",
"sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8",
"sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f"
],
"index": "pypi",
"version": "==4.9.1"
},
"markupsafe": {
"hashes": [
"sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003",
"sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88",
"sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5",
"sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7",
"sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a",
"sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603",
"sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1",
"sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135",
"sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247",
"sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6",
"sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601",
"sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77",
"sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02",
"sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e",
"sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63",
"sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f",
"sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980",
"sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b",
"sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812",
"sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff",
"sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96",
"sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1",
"sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925",
"sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a",
"sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6",
"sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e",
"sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f",
"sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4",
"sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f",
"sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3",
"sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c",
"sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a",
"sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417",
"sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a",
"sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a",
"sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37",
"sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452",
"sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933",
"sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a",
"sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"
],
"markers": "python_version >= '3.7'",
"version": "==2.1.1"
},
"packaging": {
"hashes": [
"sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
"sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
],
"markers": "python_version >= '3.6'",
"version": "==21.3"
},
"pygments": {
"hashes": [
"sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb",
"sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"
],
"markers": "python_version >= '3.6'",
"version": "==2.12.0"
},
"pyparsing": {
"hashes": [
"sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb",
"sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
],
"markers": "python_full_version >= '3.6.8'",
"version": "==3.0.9"
},
"pytz": {
"hashes": [
"sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7",
"sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"
],
"version": "==2022.1"
},
"requests": {
"hashes": [
"sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983",
"sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
],
"markers": "python_version >= '3.7' and python_version < '4'",
"version": "==2.28.1"
},
"six": {
"hashes": [
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926",
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==1.16.0"
},
"snowballstemmer": {
"hashes": [
"sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1",
"sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"
],
"version": "==2.2.0"
},
"soupsieve": {
"hashes": [
"sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759",
"sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"
],
"markers": "python_version >= '3.6'",
"version": "==2.3.2.post1"
},
"sphinx": {
"hashes": [
"sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6",
"sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"
],
"index": "pypi",
"version": "==4.5.0"
},
"sphinx-press-theme": {
"hashes": [
"sha256:2884caab1dc01ecb11d158d4dd6d3179e2dd97cd48516c769cc27360272e62b3",
"sha256:ddf877d414a2c66e13396d726115aa3f0c94d1ac9133b4df028c261bf388ab25"
],
"index": "pypi",
"version": "==0.8.0"
},
"sphinxcontrib-applehelp": {
"hashes": [
"sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a",
"sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"
],
"markers": "python_version >= '3.5'",
"version": "==1.0.2"
},
"sphinxcontrib-devhelp": {
"hashes": [
"sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e",
"sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"
],
"markers": "python_version >= '3.5'",
"version": "==1.0.2"
},
"sphinxcontrib-email": {
"hashes": [
"sha256:2387fc0691f3a4ed9c0b7d32acce5a42495340cc45f6e759a1b38e1eb86fe888",
"sha256:74738235afd602b7f692d2b62b4582034e8bb32dbcaa7ecab34be985d8bae590"
],
"index": "pypi",
"version": "==0.3.5"
},
"sphinxcontrib-htmlhelp": {
"hashes": [
"sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07",
"sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"
],
"markers": "python_version >= '3.6'",
"version": "==2.0.0"
},
"sphinxcontrib-jsmath": {
"hashes": [
"sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178",
"sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"
],
"markers": "python_version >= '3.5'",
"version": "==1.0.1"
},
"sphinxcontrib-qthelp": {
"hashes": [
"sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72",
"sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"
],
"markers": "python_version >= '3.5'",
"version": "==1.0.3"
},
"sphinxcontrib-serializinghtml": {
"hashes": [
"sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd",
"sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"
],
"markers": "python_version >= '3.5'",
"version": "==1.1.5"
},
"urllib3": {
"hashes": [
"sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14",
"sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
"version": "==1.26.9"
},
"zipp": {
"hashes": [
"sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad",
"sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"
],
"markers": "python_version >= '3.7'",
"version": "==3.8.0"
}
},
"develop": {}
}
+41
View File
@@ -0,0 +1,41 @@
# Documentation
This document describes how to generate documentation of the library from the sources.
If you're looking for the documentation please [follow this link](#).
## Prerequsites
1. Doxygen
2. Python 3.9+
3. Pipenv
## Installation
The first time setup is required before generating the documentation. Follow these steps:
1. Open terminal in the `docsrc` directory
2. Run `pipenv install`
### Apple Silicon M1
On Apple M1 processors you may get this error when trying to build the documentation: `Could not parse the contents of index.xml as an xml.`
Most likely this issue is caused by an architecture mismatch of the `lxml` package.
To fix this issue open the Pipenv shell by running `pipenv shell` and follow these steps:
1. Run `pip uninstall lxml`
2. Run `arch -arm64 pip install lxml --no-binary lxml`
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.
## Github pages
In order to build the documentation that's going to be published as Github pages run `make github`.
The generated HTML build will be automatically moved to the `docs` directory.
+35
View File
@@ -0,0 +1,35 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)
if "%1" == "" goto help
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd
File diff suppressed because it is too large Load Diff
+90
View File
@@ -0,0 +1,90 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- Project information -----------------------------------------------------
project = 'ArduinoHA'
copyright = '2022, Dawid Chyrzynski'
author = 'Dawid Chyrzynski'
# The full version, including alpha/beta/rc tags
release = '2.0.0'
# -- General configuration ---------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'breathe',
'sphinx.ext.extlinks',
'sphinxcontrib.email'
]
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['templates']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []
# Setup the breathe extension
breathe_projects = {
'ArduinoHA': '../xml'
}
breathe_default_project = 'ArduinoHA'
breathe_show_include = True
breathe_default_members = ('members', 'undoc-members')
# Tell sphinx what the primary language being documented is.
primary_domain = 'cpp'
# Tell sphinx what the pygments highlight language should be.
highlight_language = 'cpp'
extlinks = {
'example': ('https://github.com/dawidchyrzynski/arduino-home-assistant/tree/main/examples/', None)
}
# -- Options for HTML output -------------------------------------------------
html_scaled_image_link = False
html_copy_source = False
html_theme = 'press-ext'
html_theme_path = ['themes']
html_title = 'ArduinoHA'
html_sidebars = {'**': ['util/searchbox.html', 'sidetoc.html']}
html_theme_options = {
'external_links': [
('Github', 'https://github.com/dawidchyrzynski/arduino-home-assistant')
]
}
html_js_files = [
'custom.js'
]
html_css_files = [
'custom.css'
]
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named 'default.css' will overwrite the builtin 'default.css'.
html_static_path = ['static']
# -- Extension ---------------------------------------------------------------
email_automode = False
@@ -0,0 +1,9 @@
HADevice class
==============
.. doxygenclass:: HADevice
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HAMqtt class
============
.. doxygenclass:: HAMqtt
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,7 @@
Core API
========
.. toctree::
ha-device
ha-mqtt
@@ -0,0 +1,9 @@
HABaseDeviceType class
======================
.. doxygenclass:: HABaseDeviceType
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HABinarySensor class
====================
.. doxygenclass:: HABinarySensor
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HAButton class
==============
.. doxygenclass:: HAButton
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HACamera class
==============
.. doxygenclass:: HACamera
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HACover class
=============
.. doxygenclass:: HACover
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HADeviceTracker class
=====================
.. doxygenclass:: HADeviceTracker
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HADeviceTrigger class
=====================
.. doxygenclass:: HADeviceTrigger
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HAFan class
===========
.. doxygenclass:: HAFan
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HAHVAC class
============
.. doxygenclass:: HAHVAC
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HALight class
=============
.. doxygenclass:: HALight
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HALock class
============
.. doxygenclass:: HALock
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HANumber class
==============
.. doxygenclass:: HANumber
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HAScene class
=============
.. doxygenclass:: HAScene
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HASelect class
==============
.. doxygenclass:: HASelect
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HASensorNumber class
====================
.. doxygenclass:: HASensorNumber
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:
@@ -0,0 +1,9 @@
HASensor class
==============
.. doxygenclass:: HASensor
:project: ArduinoHA
:members:
:protected-members:
:private-members:
:undoc-members:

Some files were not shown because too many files have changed in this diff Show More