Situation
Es passiert gelegentlich, dass ein Ereignis mehrmals hintereinander auftritt. Wenn es eine Nachricht auslöst, würde es diese mit jedem Auftreten auslösen.
Lösung
Folgendes Beispiel zeigt die Entprellung von solchem mehrfachen Nachrichtenversand.
Das Ereignis wird der icom Data Suite signalisiert, indem ein Schalter an Eingang 2.1 geschlossen wird. Das Schließen des Eingangs setzt einen Merker. Das Setzen dieses Merkers sendet dann die Nachricht und startet einen Timer. Kein weiterer Nachrichtenversand ist möglich so lange der Timer läuft, da die Nachricht nur versendet wird, wenn der Merker wieder von 0 auf 1 wechselt. Der Ablauf des Timers setzt den Merker zurück. Er kann dann wieder durch das Ereignis zum Auslösen der Nachricht gesetzt werden.
Es wird vorausgesetzt, dass Sie Zugriff auf das Web-Interface der icom Data Suite haben. Der Router muss SMS versenden können. Der Schalter ist mit Eingang 2.1 des Routers verbunden.
Das Web-Interface der icom Data Suite mit einem Browser aufrufen:
192.168.1.10 oder ids.local (Voreinstellung)
Benutzername: insys (Voreinstellung)
Kennwort: icom (Voreinstellung)
Im Menü Datenpunkte → Digitale I/Os unter Eingang einen neuen Eingang hinzufügen ():
Beschreibung: Eingang 2.1
Eingang: 2.1
Auf Einstellungen speichern klicken.
Im Menü Datenpunkte → Merker einen neuen Merker hinzufügen:
Beschreibung: trigger message
Typ: Bit
Auf Einstellungen speichern klicken.
Im Menü Datenpunkte → Timer einen neuen Timer hinzufügen () und diesen bearbeiten ():
Beschreibung: message delay timer
Typ: Countdown, ausgelöst alle 3 Minuten
Auf Einstellungen speichern klicken.
Im Menü Nachrichten → Kontakte einen neuen Kontakt () hinzufügen und diesen bearbeiten ():
Realer Name: den Namen des Verantwortlichen eingeben
Rufnummer: die Mobiltelefonnummer des verantwortlichen Empfängers eingeben
Bitte beachten Sie!
Es wird empfohlen, die Rufnummer im internationaler Schreibweise in der Form +491701234567 einzugeben.
Auf Einstellungen speichern klicken.
Im Menü Nachrichten → SMS einen neuen Meldung hinzufügen () und diese bearbeiten ():
Beschreibung: input closed message
Modem: lte2
Empfänger: den Verantwortlichen als Kontakt auswählen
Text: Eingang 2.1 wurde geschlossen
Im Menü Ereignisse ein neues Ereignis, das den Merker setzt, der den Nachrichtenversand und den Start des Verzögerungs-Timers auslöst, hinzufügen () und dieses bearbeiten ():
Beschreibung: set 'trigger message' flag if input is closed
Ereignis: Digitaler Datenpunkt hat sich geändert
Datenpunkt: input1 und Wechsel auf LOW (logisch 0)
Bitte beachten Sie!
Die Eingänge des Routers können eine unterschiedliche Logik haben. Dies trifft nur auf Eingang 1 einer Einsteckkarte mit Stromversorgung zu.
Aktion: Digitalen Datenpunkt setzen
Datenpunkt: flag1 - trigger message auf 1 setzen
Auf Einstellungen speichern klicken.
Im Menü Ereignisse ein neues Ereignis, das den Verzögerungs-Timer startet, der den Auslösemerker nach Ablauf zurücksetzt, hinzufügen () und dieses bearbeiten ():
Beschreibung: start delay timer if 'trigger message' flag is set
Ereignis: Digitaler Datenpunkt hat sich geändert
Datenpunkt: flag1 und Wechsel auf 1
Aktion: Timer starten und stoppen
Timer: timer1 - message delay timer starten
Auf Einstellungen speichern klicken.
Im Menü Ereignisse ein neues Ereignis, das die Benachrichtigung sendet, hinzufügen () und dieses bearbeiten ():
Beschreibung: send message if 'trigger message' flag is set
Ereignis: Digitaler Datenpunkt hat sich geändert
Datenpunkt: flag1 und Wechsel auf 1
Aktion: Nachricht versenden
Nachricht … versenden: sms1 - input closed message
Auf Einstellungen speichern klicken.
Im Menü Ereignisse ein neues Ereignis, das den Auslösemerker zurücksetzt, damit das nächste Ereignis wieder einen Nachrichtenversand über diesen Merker auslösen kann, hinzufügen () und dieses bearbeiten ():
Beschreibung: reset 'trigger message' flag if 'message delay timer' expires
Ereignis: Timer ist abgelaufen
Timer: timer1 - message delay timer
Aktion: Digitalen Datenpunkt setzen
Datenpunkt: flag1 - trigger message auf 0 setzen
Auf Einstellungen speichern klicken.
Das Profil aktivieren ().
Eingang 1 schließen, um zu prüfen, ob die SMS wie beabsichtigt versendet wird.
Eingang 1 innerhalb der Verzögerungszeit wieder schließen, um zu verifizieren, dass die SMS nicht erneut gesendet wird.
Eingang 1 nach Ablauf der Verzögerungszeit wieder schließen, um zu prüfen, ob die SMS wieder gesendet wird.
Fehlersuche
Das Installationshandbuch des Routers zu Rate ziehen und den Anschluss und die Logik des verwendeten Eingangs prüfen.
Um eine SMS durch die icom Data Suite versenden zu können, muss das Modem im Router die SMS Center Nummer des Providers kennen. Diese wird üblicherweise von der SIM-Karte ausgelesen. Wenn keine Nummer auf der SIM-Karte gespeichert ist, muss diese im Menü Interfaces → Slot 2: LTE im Web-Interface des Routers eingetragen werden.
Ressourcen
Folgende ASCII-Konfiguration kann per Copy & Paste übernommen werden. Dabei ist zu beachten, dass die einzelnen Parameter entsprechend der eigenen Anwendung anzupassen sind. Bei nummerierten Parameter ist die korrekte Nummerierung zu beachten. Außerdem ist zu beachten, dass keine bestehenden Parameter mit derselben Nummer überschrieben werden. Eine ordentliche Funktionalität kann nur gewährleistet werden, wenn das geöffnete Profil zuvor aus den Werkseinstellungen erzeugt wurde.
ASCII-Konfiguration
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