Schreiben von Werten mittels SMS, MQTT und Cloud Control
  • 12 Sep 2024
  • pdf

Schreiben von Werten mittels SMS, MQTT und Cloud Control

  • pdf

Artikel-Zusammenfassung

Werte der icom Data Suite können auf verschiedene Arten gesetzt werden.

1. Situation

Der Wert eines analogen Merkers der icom Data Suite soll mittels SMS, MQTT und Cloud Control geschrieben werden.

2. Lösung

Es wird ein Ereignis definiert, dass eine Aktion auslöst, sobald eine Nachricht erhalten wird, die einen bestimmten Text enthält. Die Aktion setzt dann einen Analogwert auf einen Wert, der aus dem Nachrichtentext entnommen wird.

Es wird vorausgesetzt, dass Sie Zugriff auf das Web-Interface der icom Data Suite haben. Der Router muss über eine Internet-Verbindung verfügen.

2.1. Schreiben eines Werts mittels SMS

Es wird vorausgesetzt, dass der Router SMS empfangen kann.

  1. Rufen Sie das Web-Interface der icom Data Suite auf:

  2. Fügen sie im Menü DatenpunkteMerker einen neuen Merker hinzu ():

    • Beschreibung: analogue test flag

    • Typ: Unsigned Integer

  3. Klicken Sie auf Einstellungen speichern.

  4. IFügen sie im Menü Ereignis ein neues Ereignis hinzufügen () und dieses bearbeiten ():

    • Ereignis: SMS wurde empfangen

    • Beschreibung: set value by SMS message

    • Von Kontakt: leave empty

    • Mit SMS-Text: Set value to:

    • Aktion: Analogen Datenpunkt setzen

    • Datenpunkt: setzen auf Wert aus Nachricht zwischen to: und

      Bitte beachten Sie!

      Wenn das Feld Von Kontakt leer ist, wird jede SMS unabhängig vom Kontakt akzeptiert. Einen Kontakt im Menü NachrichtenKontakte konfigurieren, um den Empfang auf einen bestimmten Kontakt zu beschränken.
      Es werden nur SMS-Nachrichten ausgewertet, die mit exakt dem im Feld Mit SMS-Text eingegebenen Text beginnen; bei der Auswertung wird Groß- und Kleinschreibung berücksichtigt.
      Dazu sind die Textstrings vor und hinter dem Wert der Nachricht anzugeben. Befindet sich der Wert am Anfang oder Ende der Nachricht, ist nur der jeweils abgrenzende Textstring anzugeben; Groß- und Kleinschreibung wird berücksichtigt, Leerzeichen werden ignoriert.

  5. Auf Einstellungen speichern klicken.

  6. Das Profil aktivieren ().

  7. Senden Sie eine SMS, die den Text Set value to: 23 (oder eine andere vorzeichenbehaftete Ganzzahl) enthält, an den Router und prüfen Sie im Menü StatusAktuelle Werte der icom Data Suite, ob sich der Wert entsprechend geändert hat.

2.2. Schreiben eines Werts mittels MQTT

Es wird vorausgesetzt, dass Sie über einen funktionierenden MQTT-Broker und ein weiteres Gerät als MQTT-Client verfügen.

  1. Rufen sie das Web-Interface der icom Data Suite auf:

  2. Fügen sie im Menü DatenpunkteMerker einen neuen Merker hinzu ():

    • Beschreibung: analogue test flag

    • Typ: Unsigned Integer

  3. Klicken Sie auf Einstellungen speichern.

  4. Fügen sie im Menü NachrichtenMQTT einen neuen Broker hinzu () und bearbeiten Sie diesen ():

    • Beschreibung: test broker

    • Server: geben Sie die Server-URL Ihres MQTT-Brokers ein(Daten vom MQTT-Broker anfordern; für Testzwecke kann auch ein freier MQTT-Broker verwendet werden)

    • Port: geben Sie den Server-Port Ihres MQTT-Brokers ein

  5. Klicken Sie auf Einstellungen speichern.

  6. Fügen sie im Menü Ereignis ein neues Ereignis hinzu () und bearbeiten Sie dieses ():

    • Beschreibung: set value by MQTT message

    • Ereignis: MQTT-Nachricht wurde empfangen

    • Von MQTT-Broker: wählen Sie den oben hinzugefügten Broker aus

    • Topic: einen Topic eingeben, wie z.B. test/set

    • Text: Set value to:

    • QoS: 0

    • Aktion: Analogen Datenpunkt setzen

    • Datenpunkt: setzen auf Wert aus Nachricht zwischen to: und

      Bitte beachten Sie!

      Topics von MQTT-Nachrichten sind hierarchisch aufgebaut und nutzen den Schrägstrich (/) als Trennzeichen der Ebenen.
      Es werden nur MQTT-Nachrichten ausgewertet, die mit exakt dem im Feld Text eingegebenen Text beginnen; bei der Auswertung wird Groß- und Kleinschreibung berücksichtigt.
      Die QoS-Einstellung hängt von den Anforderungen der Anwendung ab, muss aber in der Nachricht übereinstimmen.
      Dazu sind die Textstrings vor und hinter dem Wert der Nachricht anzugeben. Befindet sich der Wert am Anfang oder Ende der Nachricht, ist nur der jeweils abgrenzende Textstring anzugeben; Groß- und Kleinschreibung wird berücksichtigt, Leerzeichen werden ignoriert.

  7. Klicken Sie auf Einstellungen speichern.

  8. Aktivieren Sie das Profil ().

  9. Senden Sie eine MQTT-Nachricht an den Broker mit demselben Topic und dem Inhalt Set value to: 23 (oder einer anderen vorzeichenbehaftete Ganzzahl) vom anderen MQTT-Client aus und prüfen Sie im Menü StatusAktuelle Werte der icom Data Suite, ob sich der Wert entsprechend geändert hat.

2.3. Schreiben eines Werts mittels Cloud Control

Es wird vorausgesetzt, dass Sie über einen Cumulocity Cloud Account von INSYS icom verfügen.

  1. Rufen sie das Web-Interface der icom Data Suite auf:

  2. Fügen sie im Menü DatenpunkteMerker einen neuen Merker hinzu ():

    • Beschreibung: analogue test flag

    • Typ: Unsigned Integer

  3. Klicken Sie auf Einstellungen speichern.

  4. Fügen sie im Menü NachrichtenCumulocity einen neuen Server hinzu () und bearbeiten Sie diesen ():

    • Beschreibung: cumulocity server

    • Protokoll: HTTPS

    • Server: die Server-URL Ihres Cumulocity-Servers eingeben (von Cumulocity anfordern)

    • Gerätename: einen beschreibenden Namen für Ihr Gerät angeben

    • Selbstregistrierung: (sehe den Cumulocity Device Guide zur Registrierung eines Geräts wenn dies noch nicht registriert ist)

  5. Klicken Sie auf Einstellungen speichern.

  6. Fügen sie im Menü MeldungenCumulocity eine neue Meldung hinzufügen () und bearbeiten Sie diese ():

    Bitte beachten Sie!

    Diese Nachricht definiert, welche Datenpunkte in Cloud Control verfügbar sind und überträgt den Wert der ausgewählten Datenpunkte an Cloud Control.

    • Beschreibung: cloud control message

    • Klasse: Cloud Control

    • Datenpunkte: markieren Sie den oben hinzugefügten analogue test flag

  7. Klicken Sie auf Einstellungen speichern.

  8. Fügen sie im Menü DatenpunkteTimer einen neuen Timer hinzu () und bearbeiten Sie diesen ():

    • Beschreibung: message send interval

    • Typ: Intervall, jede 1 Stunde ausgelöst

  9. Klicken Sie auf Einstellungen speichern.

  10. Fügen sie im Menü Ereignisse ein neues Ereignis hinzu () und bearbeiten Sie dieses ():

    Bitte beachten Sie!

    Dieses Ereignis löst einen regelmäßigen Versand der Cloud Control-Nachricht aus.

    • Beschreibung: send cloud control message

    • Ereignis: Timer ist abgelaufen

    • Timer:  message send interval

    • Aktion: Nachricht versenden

    • Nachricht …​ versenden: cloud control message

  11. Klicken Sie auf Einstellungen speichern.

  12. Aktivieren Sie das Profil ().

  13. Öffnen Sie ein weiteres Browser-Fenster oder -Tab und melden Sie sich an Ihrem Cumulocity-Konto an.

  14. Klicken Sie auf Andere Applikationen () rechts oben und wählen Sie NSYS icom aus.

  15. Klicken Sie auf Alle Geräte () im Menü links und wählen Sie Ihr INSYS-Router aus der Geräteliste aus.

  16. Wählen Sie den Bildschirm Cloud Control () aus und gehen Sie zu dem zu ändernden Datenpunkt.

  17. Geben Sie den neuen Wert für diesen Datenpunkt im Feld New Value ein und klicken Sie auf Send Value Update.

  18. Verifizieren sie die Änderung des Werts im Menü StatusAktuelle Werte der icom Data Suite.

  19. Klicken Sie auf Request Value Update und Refresh View () in Cloud Control, um den neuen Wert auch in Cloud Control zu sehen. Dadurch wird eine sofortige Aktualisierung der Werte unabhängig von der regulären Cloud Control-Nachricht ausgelöst.

3. Fehlersuche

  • 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ü InterfacesSlot 2: LTE im Web-Interface des Routers eingetragen werden.

  • Um eine SMS durch die icom Data Suite empfangen zu können, müssen eingehende SMS in den Container weitergeleitet werden. Die Checkbox SMS in die Container weiterleiten muss im Menü AdministrationContainer im Web-Interface des Routers markiert sein.

  • Wenn im INSYS-Router, auf dem die icom Data Suite läuft,  IP-Filter aktiviert sind, prüfen, ob eine Filterregel im Menü NetzfilterIP-Filter im Web-Interface des Routers vorhanden ist, die den Empfang von MQTT-Nachrichten erlaubt.

  • Der Status einer MQTT- oder Cumulocity-Verbindung kann im Menü StatusAktuelle Werte verifiziert werden.

  • Die Cloud Control-Nachricht muss mindestens einmal gesendet werden, bevor der/die mit dieser Nachricht übertragene(n) Datenpunkt(e) in Cloud Control erscheint/erscheinen. Dies dient dazu, sicherzustellen, dass nur diese Datenpunkte modifiziert werden können, die erlaubt sind, indem sie mit der Cloud Control-Nachricht gesendet werden.

4. 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.flags.flag.add
datapoints.flags.flag[1].name=flag1
datapoints.flags.flag[1].active=1
datapoints.flags.flag[1].description=analogue test flag
datapoints.flags.flag[1].type=unsigned_int

datapoints.timer.timer.add
datapoints.timer.timer[1].name=timer1
datapoints.timer.timer[1].active=1
datapoints.timer.timer[1].description=message send interval
datapoints.timer.timer[1].type=interval
datapoints.timer.timer[1].interval_hh=1

messages.mqtt.broker.add
messages.mqtt.broker[1].active=1
messages.mqtt.broker[1].name=mqttBrkr1
messages.mqtt.broker[1].description=test broker
messages.mqtt.broker[1].server=broker-url.com
messages.mqtt.broker[1].port=1883
messages.mqtt.broker[1].username=
messages.mqtt.broker[1].password=
messages.mqtt.broker[1].client_id=
messages.mqtt.broker[1].use_ssl_tls=0
messages.mqtt.broker[1].verify_peer=0
messages.mqtt.broker[1].verify_host=0

messages.cumulocity.server.add
messages.cumulocity.server[1].active=1
messages.cumulocity.server[1].name=c8yServ1
messages.cumulocity.server[1].description=cumulocity server
messages.cumulocity.server[1].protocol=https
messages.cumulocity.server[1].server=tenant.cumulocity.com
messages.cumulocity.server[1].verify_peer=0
messages.cumulocity.server[1].verify_host=0
messages.cumulocity.server[1].device_name=INSYS Smart Device
messages.cumulocity.server[1].self_registration=1
messages.cumulocity.server[1].username=serial_number
messages.cumulocity.server[1].password=
messages.cumulocity.server[1].device_id=

messages.cumulocity.server[1].feed.add
messages.cumulocity.server[1].feed[1].message_active=1
messages.cumulocity.server[1].feed[1].message_name=c8yMsg1
messages.cumulocity.server[1].feed[1].message_description=cloud control message
messages.cumulocity.server[1].feed[1].message_class=cloudcontrol
messages.cumulocity.server[1].feed[1].message_datapoints=flag1
messages.cumulocity.server[1].feed[1].message_buffer=0

events.event.add
events.event[1].active=1
events.event[1].description=set value by SMS message
events.event[1].event_type=ev_sms
events.event[1].event_sms_contact=
events.event[1].event_sms_text=-----BEGIN event_sms_text-----Set value to:-----END event_sms_text-----
events.event[1].event_mqtt_broker=---
events.event[1].action_type=act_analog
events.event[1].action_analog_datapoint=flag1
events.event[1].action_analog_set=by_message
events.event[1].action_analog_message_escape_start=to:
events.event[1].action_analog_message_escape_end=

events.event.add
events.event[2].active=1
events.event[2].description=set value by MQTT message
events.event[2].event_type=ev_mqtt
events.event[2].event_mqtt_broker=mqttBrkr1
events.event[2].event_mqtt_topic=test/set
events.event[2].event_mqtt_text=-----BEGIN event_mqtt_text-----Set value to:-----END event_mqtt_text-----
events.event[2].event_mqtt_qos=0
events.event[2].action_type=act_analog
events.event[2].action_analog_datapoint=flag1
events.event[2].action_analog_set=by_message
events.event[2].action_analog_message_escape_start=to:
events.event[2].action_analog_message_escape_end=

events.event.add
events.event[3].active=1
events.event[3].description=send cloud control message
events.event[3].event_type=ev_timer
events.event[3].event_timer_name=timer1
events.event[3].action_type=act_message
events.event[3].action_message=c8yMsg1


War dieser Artikel hilfreich?