@@ -595,6 +595,11 @@ int Sensor::getInterruptPin() {
595
595
}
596
596
#endif
597
597
598
+ // enable/disable reporting to the gateway
599
+ void Sensor::setReporting (bool value) {
600
+ _reporting = value;
601
+ }
602
+
598
603
// After how many seconds the sensor will report back its measure
599
604
void Sensor::setReportIntervalSeconds (int value) {
600
605
_report_timer->start (value,SECONDS);
@@ -713,7 +718,7 @@ void Sensor::loop(MyMessage* message) {
713
718
if (_samples_interval > 0 ) _node->sleepOrWait (_samples_interval);
714
719
}
715
720
// send the value back to the controller
716
- child->sendValue (message != nullptr );
721
+ if (_reporting) child->sendValue (message != nullptr );
717
722
// reset the counters
718
723
child->reset ();
719
724
}
@@ -3304,6 +3309,9 @@ Display::Display(NodeManager& node_manager, int child_id): Sensor(node_manager)
3304
3309
// We don't need any sensors, but we need a child, otherwise the loop will never be executed
3305
3310
children.allocateBlocks (1 );
3306
3311
new ChildString (this , _node->getAvailableChildId (child_id), S_INFO, V_TEXT,_name);
3312
+ // prevent reporting to the gateway at each display update
3313
+ setReporting (false );
3314
+ _report_timer->unset ();
3307
3315
}
3308
3316
// setter/getter
3309
3317
void Display::setCaption (const char * value) {
@@ -4354,6 +4362,7 @@ void SensorConfiguration::onReceive(MyMessage* message) {
4354
4362
case 17 : sensor->setReportIntervalSeconds (request.getValueInt ()); break ;
4355
4363
case 19 : sensor->setReportIntervalHours (request.getValueInt ()); break ;
4356
4364
case 20 : sensor->setReportIntervalDays (request.getValueInt ()); break ;
4365
+ case 21 : sensor->setReporting (request.getValueInt ()); break ;
4357
4366
default : return ;
4358
4367
}
4359
4368
} else {
0 commit comments