Added setSleepBetweenSendSleepOrWait() to control when setSleepBetweenSend() is configured if the node should only wait (default) or sleep or wait depending on the duration set (fixes #456)
Fixed Interrupt Debounce not working since _last_interrupt_millis was never updated (fixes #465)
Added support for unit prefix consistently across all the sensors (fixes #492 #436):
Child constructor can now accept a unit_prefixparameter. Setter and getter are also provided (setUnitPrefix() / getUnitPrefix()). Users can set custom unit prefix by calling setUnitPrefix() of the Child class (e.g. analog.children.get()->setUnitPrefix("%")). Sensors developers can set the unit prefix directly within their code
Added setSendUnitPrefix() to NodeManager class. If set (default to false), a prefix is sent once for each child just before sending the first value
If the prefix is not explicitly set to the child, getDefaultUnitPrefix() of the NodeManager class returns a reasonable default based on the sensor presentation and type
Added support for requesting initial value to the controller (fixes #436):
Child constructor can now accept a request_initial_valueparameter (default to false). Setter and getter are also provided (setRequestInitialValue() / getRequestInitialValue()). Users can ask NodeManager to request the inital value by calling setRequestInitialValue(true) of the Child class (e.g. relay.children.get()->setRequestInitialValue(true)). Sensors developers can set custom default directly within their code
During setup() in the Sensor class for every child with request_initial_value set a request() is sent to the controller. Response will be handled as any standard inbound message by onReceive() without any change to the code
If a request is sent for at least one child, setup() will wait for 2 seconds before proceeding
Added option to enable/disable sensors remotely (fixes #500):
All sensors have to be declared in the sketch regardless if enabled or not (constructors just set variables, don't do any action). This has a cost in terms of memory utilization but this capability is for boards with large memory and runtime lifecycle cannot be managed differently
Presentation is done for all the sensors since we need a child_id allocated to receive enable/disable requests for the sensors
Setup and Loop are not called unless a sensor is enabled (the default)
Added _enabledvariable to Sensor class (default to true) and setEnabled() / getEnabled() functions
When setEnabled() is called, if the sensor has to be enabled, setup() is called first, then interrupts are riconfigured. If the sensors has to be disabled, just interrupts are riconfigured
setEnabled() can be also called remotely by setting NODEMANAGER_OTA_CONFIGURATION to ON and sending a V_CUSTOM message to the configuration child 200 with value 28,0 or 28,1 (e.g. through SensorConfiguration)
Added setPersistEnabledSensors() to Node class allowing to save enable/disable status flag in EEPROM (requires NODEMANAGER_EEPROMset to ON)
Throw compilation error if SensorSignal is included but MY_SIGNAL_REPORT_ENABLED is not defined (fixes #504)
Fixed gateway wrongly reporting its own sensors if the child_id overlaps with the reporting child of a remote board (fixes #457)
setSleepBetweenSendSleepOrWait()
to control whensetSleepBetweenSend()
is configured if the node should only wait (default) or sleep or wait depending on the duration set (fixes #456)_last_interrupt_millis
was never updated (fixes #465)unit_prefix
parameter. Setter and getter are also provided (setUnitPrefix()
/getUnitPrefix()
). Users can set custom unit prefix by callingsetUnitPrefix()
of the Child class (e.g.analog.children.get()->setUnitPrefix("%")
). Sensors developers can set the unit prefix directly within their codesetSendUnitPrefix()
to NodeManager class. If set (default to false), a prefix is sent once for each child just before sending the first valuegetDefaultUnitPrefix()
of the NodeManager class returns a reasonable default based on the sensor presentation and typerequest_initial_value
parameter (default to false). Setter and getter are also provided (setRequestInitialValue()
/getRequestInitialValue()
). Users can ask NodeManager to request the inital value by callingsetRequestInitialValue(true)
of the Child class (e.g.relay.children.get()->setRequestInitialValue(true)
). Sensors developers can set custom default directly within their codesetup()
in the Sensor class for every child withrequest_initial_value
set arequest()
is sent to the controller. Response will be handled as any standard inbound message byonReceive()
without any change to the code_enabled
variable to Sensor class (default to true) andsetEnabled()
/getEnabled()
functionssetEnabled()
is called, if the sensor has to be enabled, setup() is called first, then interrupts are riconfigured. If the sensors has to be disabled, just interrupts are riconfiguredsetEnabled()
can be also called remotely by settingNODEMANAGER_OTA_CONFIGURATION
toON
and sending a V_CUSTOM message to the configuration child 200 with value28,0
or28,1
(e.g. through SensorConfiguration)setPersistEnabledSensors()
to Node class allowing to save enable/disable status flag in EEPROM (requiresNODEMANAGER_EEPROM
set toON
)MY_SIGNAL_REPORT_ENABLED
is not defined (fixes #504)