- 01 Oct 2024
- Print
- PDF
Debouncing the Dispatch of Multiple Messages
- Updated on 01 Oct 2024
- Print
- PDF
Situation
It often happens that an event is occurring a few times in a row. If it triggers a message, it would trigger it with every occurrence.
Solution
The following example shows how to debounce such a multiple message dispatch.
The event is signalled to the icom Data Suite by closing a switch on input 2.1. The closure of the switch sets a flag. Setting of this flag dispatches then the message and starts a timer. No further message dispatch is possible as long as the timer is running since the message will only be dispatched when the flag changes from 0 to 1 again. The expiry of the timer resets the flag. It can then be set again by the event to trigger the message.
It is prerequisite that you have access to the web interface of the icom Data Suite. The router must be functional for SMS dispatch. The switch is connected to input 2.1 of the router.
Open the web interface of the icom Data Suite using a browser:
192.168.1.10 or ids.local (default)
User name: insys (default)
Password: icom (default)
In the Data points → Digital I/Os menu under Inputs, add a new input ():
Description: Input 2.1
Input: 2.1
Click on Save settings.
In the Datapoints → Flags menu, add a new flag:
Description: trigger message
Type: Bit
Click on Save settings.
In the Datapoints → Timer menu, add a new timer () and edit it ():
Description: message delay timer
Type: Countdown, triggered after 3 minutes
Click on Save settings.
In the Messages → Contacts menu, add a new contact () and edit it ():
Real name: enter the name of the supervisor
Phone number: enter the mobile phone number of the supervisor recipient
Please note!
It is recommended to enter the phone number in international notation in the form +491701234567.
Click on Save settings.
In the Messages → SMS menu, add a new message () and edit it ():
Description: input closed message
Modem: lte2
Recipient: select the supervisor as contact
Text: Input 2.1 has been closed
In the Events menu, add a new event, which sets the flag that triggers message dispatch and delay timer start, () and edit it ():
Description: set 'trigger message' flag if input is closed
Event: Digital data point has changed
Data point: input1 and Changed to LOW (Boolean 0)
Please note!
The inputs of the router may have a different logic. This applies only to input 1 of a plug-in card with power supply.
Action: Set digital data point
Data point: flag1 - trigger message set to 1
Click on Save settings.
In the Events menu, add a new event, which starts the delay timer that resets the trigger flag upon expiry, () and edit it ():
Description: start delay timer if 'trigger message' flag is set
Event: Digital data point has changed
Data point: flag1 and Changed to 1
Action: Start or stop timer
Timer: timer1 - message delay timer start
Click on Save settings.
In the Events menu, add a new event, which sends the notification message, () and edit it ():
Description: send message if 'trigger message' flag is set
Event: Digital data point has changed
Data point: flag1 and Changed to 1
Action: Send message
Send message: sms1 - input closed message
Click on Save settings.
In the Events menu, add a new event, which resets the trigger flag that the next event can trigger a message dispatch again via this flag, () and edit it ():
Description: reset 'trigger message' flag if 'message delay timer' expires
Event: Timer expired
Timer: timer1 - message delay timer
Action: Set digital data point
Data point: flag1 - trigger message set to 0
Click on Save settings.
Activate the profile ().
Close Input 1 to check whether the SMS is sent as intended.
Close Input 1 again within the delay time to verify that the SMS is not sent again.
Close Input 1 again after the delay time has expired to check that the SMS is sent again.
Troubleshooting
Refer to the installation manual of the router and check the connection and logic of the input used.
In order to be able to send an SMS by the icom Data Suite, the modem in the router must know the SMS center number of the provider. This is usually read out from the SIM card. If no number is stored on the SIM card, this must be entered in the Interfaces → Slot 2: LTE menu in the web interface of the router.
Resources
The following ASCII configuration can be taken over using copy & paste. It must be observed that the individual parameters need to be adapted to the own application. Correct numbering must be observed for numbered parameters. Moreover, it must be observed that no existing parameters with the same number will be overwritten. A proper functionality can only be ensured if the opened profile has been created from default settings before.
ASCII configuration
datapoints.digital_ios.inputs.input.add
datapoints.digital_ios.inputs.input[1].name=input1
datapoints.digital_ios.inputs.input[1].active=1
datapoints.digital_ios.inputs.input[1].description=Input 2.1
datapoints.digital_ios.inputs.input[1].input=2.1
datapoints.flags.flag.add
datapoints.flags.flag[1].name=flag1
datapoints.flags.flag[1].active=1
datapoints.flags.flag[1].description=trigger message
datapoints.flags.flag[1].type=bit
datapoints.timer.timer.add
datapoints.timer.timer[1].name=timer1
datapoints.timer.timer[1].active=1
datapoints.timer.timer[1].description=message delay timer
datapoints.timer.timer[1].type=countdown
datapoints.timer.timer[1].countdown_hh=
datapoints.timer.timer[1].countdown_mm=3
datapoints.timer.timer[1].countdown_ss=
messages.contacts.contact.add
messages.contacts.contact[1].active=1
messages.contacts.contact[1].name=contact1
messages.contacts.contact[1].real_name=supervisor
messages.contacts.contact[1].email_address=
messages.contacts.contact[1].phone_number=+4917xxxxxxxx
messages.sms.sms.add
messages.sms.sms[1].active=1
messages.sms.sms[1].name=sms1
messages.sms.sms[1].description=input closed message
messages.sms.sms[1].recipient=contact1
messages.sms.sms[1].modem=lte2
messages.sms.sms[1].text=-----BEGIN text-----Input 2.1 has been closed-----END text-----
events.event.add
events.event[1].active=1
events.event[1].description=set 'trigger message' flag if input is closed
events.event[1].event_type=ev_digital
events.event[1].event_digital_datapoint=input1
events.event[1].event_digital_change=to_zero
events.event[1].event_digital_initial_check=0
events.event[1].action_type=act_digital
events.event[1].action_digital_datapoint=flag1
events.event[1].action_digital_change=to_one
events.event.add
events.event[2].active=1
events.event[2].description=start delay timer if 'trigger message' flag is set
events.event[2].event_type=ev_digital
events.event[2].event_digital_datapoint=flag1
events.event[2].event_digital_change=to_one
events.event[2].event_digital_initial_check=0
events.event[2].action_type=act_timer
events.event[2].event_action_timer_name=timer1
events.event[2].event_action_timer_change=start
events.event.add
events.event[3].active=1
events.event[3].description=send message if 'trigger message' flag is set
events.event[3].event_type=ev_digital
events.event[3].event_digital_datapoint=flag1
events.event[3].event_digital_change=to_one
events.event[3].event_digital_initial_check=0
events.event[3].action_type=act_message
events.event[3].action_message=sms1
events.event.add
events.event[4].active=1
events.event[4].description=reset 'trigger message' flag if 'message delay timer' expires
events.event[4].event_type=ev_timer
events.event[4].event_timer_name=timer1
events.event[4].action_type=act_digital
events.event[4].action_digital_datapoint=flag1
events.event[4].action_digital_change=to_zero