Betrieb

Auslesen und Übertragen von Zählerdaten

Tipp

Das Übertragen von Daten verbraucht deutlich mehr Energie als das Auslesen des Zählers. Bei batteriebetriebenen Geräten empfiehlt sich daher ein längeres Übertragungsintervall als Ausleseintervall, um eine angemessene Datenauflösung zu erzielen.

Übertragung von Zählerdaten

Zählerdaten können entweder mit MQTT-SN oder LwM2M Send übertragen werden. Die Protokolle können nicht gleichzeitig verwendet, aber über LwM2M oder die Elvaco OTC App konfiguriert werden. Der Inhalt der übertragenen Daten bleibt unabhängig vom ausgewählten Transportprotokoll gleich. Bei einer geplanten Zählerdatenübertragung werden die gesendeten Daten durch das ausgewählte Nachrichtenformat festgelegt. Noch nicht gesendete Zählerdaten im Modul werden gemäß der ausgewählten Wiederherstellungsstrategie übertragen (First in First out (FiFO) oder Last in First out (LiFo)).

Zählerdatenübertragung mit MQTT-SN

Bei Verwendung von MQTT-SN werden Zählerdatennachrichten in einem MQTT-SN-Topic veröffentlicht. Das Topic kann über die LwM2M-Ressource 33905/./11 oder die Elvaco OTC App remote konfiguriert werden.

Zählerdatenübertragung mit LwM2M Send

Bei Verwendung von LwM2M Send als Protokoll für die Zählerdatenübertragung werden die Daten im LwM2M-Objekt 33911 veröffentlicht.

Zeiterfassung

Das Modul ist auf die Uhr des Zählers angewiesen, um die Zeit zu halten. Es wird davon ausgegangen, dass die Zeit im Zähler in der Standard-Ortszeit (keine Sommerzeit) angegeben ist. Bei der Zeitsynchronisation im Zähler-mit der Elvaco OTC-App wird immer die lokale Standardzeit verwendet, auch wenn die Sommerzeit in Kraft ist. Die vom Modul gesendeten zeitgestempelten Zählerdaten können durch Angabe des Konfigurationsparameters "UTC-Offset" so eingestellt werden, dass sie in UTC gesendet werden. Der UTC-Offset wird vor der Übertragung vom Zeitstempel abgezogen. Wenn sich der Zähler in Schweden befindet, wo die MEZ (mitteleuropäische Zeit) gilt, sollte der UTC-Offset auf +60 (+1h) eingestellt sein. In diesem Fall wird um 12.00 Uhr ein Telegramm mit dem Zeitstempel 11.00 gesendet, da dies die entsprechende UTC-Zeit ist. Ein Zähler in New York (USA) sollte einen UTC-Offset von „-300“ (-5h) haben usw. Ein UTC-Offset von „0“ bedeutet, dass die Zählerzeit unverändert verwendet wird.

Wenn der Zähler auf Sommerzeit eingestellt ist, ignoriert das Modul diese Einstellung und verwendet die Standardzeit. Daher kann die Uhrzeit auf dem Zählerdisplay von der Uhrzeit im Telegramm oder in der Elvaco OTC App abweichen.

Synchronisation

Alle Zeitpläne werden mit einer Uhr synchronisiert. Ein Auslesezeitplan von 60 Minuten wird auf volle Stunden synchronisiert, beispielsweise 11:00, 12:00 und 13:00. Bei 120 Minuten ergeben sich 12:00, 14:00 und 16:00. Wenn die Zeit im Modul oder Zähler synchronisiert wird, erfolgt eine Neuplanung, sodass die nächste Zählerauslesung gemäß der aktualisierten Zeit durchgeführt wird. Die Zähleruhr kann periodisch (automatisch) oder manuell synchronisiert werden. Eine periodische Synchronisierung wird empfohlen, damit die Uhr nicht zu stark abweicht.

Periodische Synchronisationsoptionen
  • Netzwerkzeit (Standardeinstellung)

Optionen für die manuelle Synchronisation
  • Über NFC mit der Elvaco OTC App

  • Über LwM2M mit Ressource 3/./13

  • Einstellen der Zähleruhr im Zähler

Um den Fall zu behandeln, dass die Zeitsynchronisation die Zeit über eine zuvor geplante Ablesung hinaus "verschiebt" (z.B. 23.58 → 00.02), wird das Modul immer eine Ablesung und Übertragung eines neuen Wertes vornehmen, wenn die Zeit synchronisiert wird. Das Gerät wird daher eine zusätzliche Auslesung senden, die auf der Serverseite ausgeblendet werden kann.

Randomisierte Übertragungen

Um zu verhindern, dass eine große Anzahl von Geräten Daten genau zur gleichen Zeit überträgt, sollten die Geräte vor der Datenübertragung eine zufällige Verzögerung aufweisen. Die Verzögerung ist entweder über die Elvaco OTC-App und die NFC-Schnittstelle oder aus der Ferne über ein Geräteverwaltungssystem konfigurierbar.

Zählerauslesungen erfolgen immer zur vollen Stunde, beispielsweise um 11.00 Uhr und 13.00 Uhr. Übertragungen können zu anderen Zeiten stattfinden, werden jedoch anhand eines festgelegten Übertragungsintervalls (Ttransmit) für volle Stunden geplant. Die folgende Abbildung veranschaulicht dies. Die Übertragungen werden für den Zeitpunkt T1 geplant. Das tatsächliche Ttransmit ist ein zufälliger Zeitpunkt zwischen (T1 + Toffset) und (T1 + Toffset + Tdelay).

TÜbertragung, TOffset and TVerzögerung sind Parameter im Produkt.

Bedingungen

  • TOffset + TVerzögerung <= TÜbertragung

Dies sollte vom Gerät und der OTC-App überprüft werden.

  • Wenn Ttransmit auf einen Wert unter Toffset + Tdelay reduziert wird, muss Toffset auf 0 gesetzt werden und Tdelay = Ttransmit gelten.

CMi61-serie_Transmission_ conditions

Datenübertragung

Wenn Daten nicht gesendet werden können, z. B. aufgrund von Netzwerkproblemen, gibt es eine Reihe von Wiederholungsversuchen, nach denen das Gerät aufgibt und die Anzeige als "nicht gesendet" in seinem Speicher belässt. Beim nächsten Übertragungsversuch werden nicht gesendete Daten erneut gesendet (wenn möglich). Die erneute Übertragung kann durch FIFO oder LIFO erfolgen.

Regeln für die erneute Übertragung umfassen das maximale Alter der Daten, die Reihenfolge der Daten, die Anzahl der erneut übertragenen Daten/das Übertragungsintervall.

Beispiel 10. Beispiel 1:

Ein Gerät wird folgendermaßen konfiguriert:

  • Nachrichtenkodierung: M-Bus

  • Automatische Upload-Reihenfolge: FIFO

  • Messintervall: 60 Minuten

  • Übertragungsintervall: 60 Minuten

  • Sende-Offset: 15 Minuten

  • Übertragungsverzögerung: 30 Minuten

  • Maximale Uploads pro Übertragung: 4

  • Upload Höchstalter 72h

Ein Netzwerkproblem führte dazu, dass das Modul 5 Tage lang offline war, während es weiterhin Messdaten las und speicherte. Wenn es dem Gerät gelingt, online zu gehen, findet das folgende Szenario statt.

  • Das Gerät beginnt mit der Übertragung von Messdaten, die 3 Tage alt sind (FIFO-Auftrag)

  • Das Gerät sendet 4 Messtelegramme pro Stunde, zu einer zufällig gewählten Zeit zwischen Minute 15 und 45

  • Jedes Telegramm enthält eine einzelne Anzeige, insgesamt 4 Anzeigen pro Sendung

  • Das Gerät benötigt ungefähr 1 Tag, um "aufzuholen" und eine Messung pro Stunde zu senden


Beispiel 11. Beispiel 2:

Ein Gerät wird folgendermaßen konfiguriert:

  • Nachrichtenkodierung: SenML/CBOR/M-Bus

  • Automatische Upload-Reihenfolge: FIFO

  • Messintervall: 60 Minuten

  • Übertragungsintervall: 60 Minuten

  • Sende-Offset: 15 Minuten

  • Übertragungsverzögerung: 30 Minuten

  • Maximale Uploads pro Übertragung: 4

  • Upload Höchstalter 72h

  • Maximale Nutzlastgröße des Geräts: 12 (Anzeigen pro Telegramm)

Ein Netzwerkproblem führte dazu, dass das Modul 5 Tage lang offline war, während es weiterhin Messdaten las und speicherte. Wenn es dem Gerät gelingt, online zu gehen, findet das folgende Szenario statt.

  • Das Gerät beginnt mit der Übertragung von Messdaten, die 3 Tage alt sind (FIFO-Auftrag)

  • Das Gerät sendet 4 Messtelegramme pro Stunde, zu einer zufällig gewählten Zeit zwischen Minute 15 und 45

  • Jedes Telegramm enthält 12 Zählerstände, insgesamt also 4 x 12 = 48 Zählerstände pro Übertragung

  • Das Gerät benötigt ungefähr 2 Stunden, um "aufzuholen" und eine Messung pro Stunde zu senden


Messmodus

CMi6160 kann in zwei verschiedenen Modi betrieben werden: zählergesteuert oder modulgesteuert. Die Auswahl des Modus bestimmt, welche Optionen für die vom Modul zu sendenden Daten verfügbar sind. Informationen zum Wechseln zwischen den Modi finden Sie im LwM2M-Objekt „Elvaco MCM Config“ (Objekt-ID 33906, Ressource 68). Im zählergesteuerten Modus wird die Nutzlast durch die Einstellungen im Zähler bestimmt. Im modulgesteuerten Modus bestimmen die Moduleinstellungen, welche Daten gesendet werden.

Zählergesteuert: Transparent

Im zählergesteuerten Modus wird das im Diehl SHARKY- oder SCYLAR-Zähler festgelegte kundenspezifische Telegramm transparent und unverändert gesendet. Dieses Telegramm ist in der Regel bei der Lieferung im Zähler vorkonfiguriert, kann jedoch auch vor Ort angepasst werden. In diesem Modus wird die Nachrichtenkodierung automatisch auf SenML/CBOR eingestellt, um größere kundenspezifische Telegramme zu übertragen. Da Diehl SHARKY und SCYLAR das M-Bus-Protokoll verwenden, liegt auch die in den SenML/CBOR-Paketen übertragene Nutzlast im M-Bus-Format vor.

Modulgesteuert: Voreingestellt

Im modulgesteuerten Modus hängen die gesendeten Daten vom ausgewählten Nachrichtenformat ab. CMi6160 bietet die beiden Nachrichtenformate Standard und Tariff. Eine vollständige Liste der in den einzelnen Formaten enthaltenen Datensätze finden Sie in Abschnitt Nachrichtenformate.

Zähleralarmüberwachung

Übertragung von Zähleralarmen

Zähleralarme werden über das ausgewählte Transportprotokoll MQTT-SN oder LwM2M Send übertragen. Der Inhalt der übertragenen Daten ist unabhängig vom ausgewählten Transportprotokoll identisch. Wenn ein Alarm ausgelöst wird, entspricht die Nachricht dem ausgewählten Format und die erweiterten Fehlercodes werden angehängt. Noch nicht gesendete Zählerdaten im Modul werden gleichzeitig mit dem Alarm übertragen.

Übertragung von Zähleralarmen mit MQTT-SN

Bei Verwendung von MQTT-SN werden Alarmmeldungen getrennt von der normalen Zählerdatenübertragung in einem eigenen Topic veröffentlicht. Das Alarm-Topic kann über die LwM2M-Ressource 33906/./67 konfiguriert werden.

Übertragung von Zähleralarmen mit LwM2M Send

Bei Verwendung von LwM2M Send werden die Alarmmeldungen in einer eigenen Instanz des Zählerdatenobjekts 33911 veröffentlicht.

Verwalten der Alarmbitmasken

Jedes Bit in der Alarmmaske ist direkt einem Zählerfehler zugeordnet. Die verschiedenen Alarmmasken zur Steuerung der Alarmüberwachung verwenden dieselbe Zuordnung. In den folgenden Abschnitten wird beschrieben, wie die einzelnen Bitmasken verwaltet und interpretiert werden.

Bitmaske zum Aktivieren der Alarmfunktion

Die Überwachung eines Alarms wird aktiviert, indem das Bit auf „high“ (1) gesetzt wird. Um den Alarm stumm zu schalten, das heißt das Auslösen von Alarmmeldungen zu verhindern, wird das Bit auf „low“ (0) gesetzt. Die folgende Tabelle enthält Beispiele für Bitmaskeneinstellungen für unterschiedliche Verhaltensweisen.

Tabelle 130. Beispiele für Bitmasken zum Aktivieren der Alarmfunktion

Binär

Hex

Interpretation

0b1111 1111 1111 1111

0xFFFF

Alle Alarme werden überwacht

0b0

0x0

Es werden keine Alarme überwacht.

0b0001 1100 0001

0x1C1

Die Alarmbits 0, 6, 7 und 8 werden überwacht.


Maske für die automatische Alarmrücksetzung

In der Praxis ermöglicht die Maske für die automatische Alarmrücksetzung, erneut auf einen zurückgesetzten Zähleralarm zu reagieren, beispielsweise nach einer natürlichen Rücksetzung, weil sich der Zähler erholt hat oder repariert wurde, oder nach einer manuellen Rücksetzung. Wenn in dieser Maske keine Alarme aktiviert sind, kann ein bestimmter Alarm während der Lebensdauer des Moduls höchstens zweimal gesendet werden: einmal beim Setzen und einmal bei einer möglichen Rücksetzung. Die Auswahl der automatisch zurückzusetzenden Alarme erfolgt wie bei der Bitmaske zum Aktivieren der Alarmfunktion.

Tabelle 131. Beispiele für die Maske zur automatischen Alarmrücksetzung und die Alarmrücksetz-Bitmasken

Binär

Hex

Interpretation

0b1111 1111 1111 1111

0xFFFF

Alle Alarme in der Alarmmaske werden zurückgesetzt.

0b0

0x0

Kein Alarm in der Alarmmaske wird zurückgesetzt (für das manuelle Zurücksetzen der Alarmmaske nicht relevant).

0b0001 1100 0001

0x1C1

Die Alarmbits 0, 6, 7 und 8 werden zurückgesetzt, sobald das Hysteresekriterium erfüllt ist.


Alarmrücksetz-Bitmaske

Eine manuelle Rücksetzung kann jederzeit durchgeführt werden, sodass das Modul erneut auf Zähleralarme reagieren kann. Die Auswahl der manuell zurückzusetzenden Alarme erfolgt wie bei der Bitmaske zum Aktivieren der Alarmfunktion.

Tabelle 132. Alarmrücksetz-Bitmasken

Binär

Hex

Interpretation

0b1111 1111 1111 1111

0xFFFF

Alle Alarme in der Alarmmaske werden zurückgesetzt.

0b0

0x0

Kein Alarm in der Alarmmaske wird zurückgesetzt (für das manuelle Zurücksetzen der Alarmmaske nicht relevant).

0b0001 1100 0001

0x1C1

Die Alarmbits 0, 6, 7 und 8 werden zurückgesetzt.


Interpretation von Zählerfehlern

In der folgenden Tabelle sind die verfügbaren Zählerfehler und ihre Zuordnung zur Bitmaske aufgeführt.

Beispiel für eine Zähleralarm-Nutzlast

Bei Verwendung des Nachrichtenformats Tariff kann eine typische Nutzlast wie folgt aussehen:

04139C2E0000023B0000325A0000325E0000841006000000008420FD320000000001FD1750

Wenn dieselbe Nutzlast als Alarmmeldung gesendet wird, werden die erweiterten Fehlercodes an die Nutzlast angehängt:

04139C2E0000023B0000325A0000325E0000841006000000008420FD320000000001FD175002FD180800

Die erweiterten Zählercodes werden durch M-Bus-DIF/VIF 2FD18, Error Mask, identifiziert; darauf folgen die beiden Fehlerbytes 0x0800. Da M-Bus Little-Endian-Kodierung verwendet, lautet die vollständige Fehlermaske 0b0000 0000 0000 1000. Dies bedeutet, dass Fehlerbit 3 gesetzt ist und ein Problem mit den Temperaturmessungen vorliegt (siehe Tabelle zur Interpretation von Zählerfehlern).

Systemprotokoll des Moduls

Während der Lebensdauer des Moduls müssen möglicherweise verschiedene Ereignisse protokolliert werden, beispielsweise zur Analyse seines Verhaltens und seines allgemeinen Zustands. Das integrierte Systemprotokoll kann so konfiguriert werden, dass solche Ereignisse entsprechend ihrem Schweregrad gespeichert und gemeldet werden.

Zur Steuerung des Systemprotokolls stehen zwei Einstellungen zur Verfügung: Syslog storage level und Syslog auto-upload level. Die Speicherebene bestimmt, welche Ereignisse protokolliert und im Modul gespeichert werden. Die Ebene für den automatischen Upload legt abhängig vom Schweregrad fest, welche Ereignisse automatisch vom Modul gesendet werden. Dadurch können kritische Ereignisse gespeichert werden, ohne sie zwingend zu senden, was Datenverkehr und Stromverbrauch reduziert. Neue Systemprotokolleinträge mit einer entsprechenden Protokollierungsebene werden zusammen mit der nächsten Zählerdatenübertragung gesendet.

Anmerkung

Eine vollständige Übersicht der LwM2M-Ressourcen für das Systemprotokoll des Moduls finden Sie im LwM2M-Objekt „Elvaco Syslog Config“ (Objekt-ID: 33918).

Die folgenden Tabellen zeigen die verfügbaren Protokollierungsebenen und die implementierten Ereignisse, die protokolliert werden können.

Tabelle 134. Unterstützte Protokollierungsebenen

Protokollierungsebene

Name der Protokollierungsebene

Beschreibung

Anmerkung

0

DEBUG

Zur Fehlerbehebung bei unerwartetem Geräte- oder Serververhalten.

Im normalen Betrieb wird empfohlen, Debug-Ereignisse weder zu speichern noch zu senden.

1

INFO

Informative normale Ereignisse

2

NOTICE

Benachrichtigungen zum normalen Betrieb

3

WARNING

Warnprotokolle

4

ERROR

Fehlerprotokolle

5

CRITICAL

Protokolle kritischer Fehler

Variiert

Variiert

Die Protokollierungsebene wird anhand des Inhalts des Protokolleintrags bestimmt.

Variable Protokollierungsebene, die beispielsweise für Konfigurationsänderungen verwendet wird. Einige Änderungen können unterschiedlich sensibel sein. Sensiblere Protokolleinträge erhalten eine höhere Protokollierungsebene.


Die folgende Tabelle enthält alle Einträge, die im Gerät protokolliert werden können. Die Spalte ganz rechts gibt an, ob der Systemprotokolleintrag aus einer Konfigurationsänderung stammt. Neben der Protokollierungsebene kann diese Kategorisierung bei der Interpretation der Protokolle auf dem empfangenden Server hilfreich sein.

Tabelle 135. Unterstützte Protokollelemente und zugehörige Protokollierungsebene

Eintrag

Protokolldaten

Protokollierungsebene

Ist Konfigurationsänderung

Product activation

Grund für die Aktivierung (Taste, falls zutreffend, NFC, Aktivierung bei Durchfluss usw.)

NOTICE

NO

Successful timesync

INFO

NO

Unsuccessful time sync

Fehlgeschlagene Zeitsynchronisierungen

WARNING

NO

Modem restarts

INFO

NO

Successful connections to Bootstrap, DM, MDM

INFO

NO

Failed connections to Network, Bootstrap, DM, MDM

Netzwerkablehnungen, fehlgeschlagene DTLS-Handshakes usw.

WARNING

NO

Startup cause

Grund/Ursache des Starts, z. B. Watchdog, Brownout oder Soft-Reset (z. B. Taste, NFC, LwM2M, Konsole). Die Ebene kann von der Ursache abhängen.

NOTICE

NO

Changed SIM

Änderung der ICCID

WARNING

NO

Successful FW Upgrade

  • Quelle

  • Ziel (z. B. Haupt-FW oder Modem-FW)

WARNING

NO

Unsuccessful FW Upgrade

  • Quelle

  • Ziel (z. B. Haupt-FW oder Modem-FW)

  • Fehlerursache

WARNING

NO

Config reset with result

  • Quelle (NFC, Konsole, DM)

  • Typ (Werkseinstellung, gespeichert)

  • Erfolgreich/fehlgeschlagen

CRITICAL

NO

Unsuccessful NFC writes

Grund für den Fehler

  • Nicht erkannte Daten werden ignoriert

  • Falsches Produkt

  • Falscher PAK

  • PAK fehlt

WARNING

NO

Failed staged settings

  • URI des Bootstrap-Servers

  • Funkbänder

  • APN-Modus und manueller APN

  • Manuelles PLMN

  • Suche nach dem Heimat-PLMN beim Roaming

  • Grund für den Fehler protokollieren

WARNING

NO

DeviceEnable

Aktivierungsquelle

WARNING

YES

DevEUI

Neu und alt

WARNING

YES

NfcCfgOpen

WARNING

YES

NfcAutoLockEnable

WARNING

YES

NfcAutoLockTimeout

WARNING

YES

MessageEncoding

INFO

YES

MessageType

INFO

YES

NfcEnabled

WARNING

YES

NdefUserText1

INFO

YES

NdefUserText2

INFO

YES

HwModel

WARNING

YES

ConsoleEnable

Protokollieren, um den aktuellen Status der Konsole zu ermitteln.

WARNING

YES

HwRevision

WARNING

YES

MeterMaxRetries

INFO

YES

MeterCustomerNo

WARNING

YES

MeterIdentificationSource

INFO

YES

TraceLogLevels

WARNING

YES

ApnMode

WARNING

YES

ManualApn

WARNING

YES

BootstrapIp

WARNING

YES

BootstrapHostName

WARNING

YES

BootstrapPort

WARNING

YES

BootstrapSecurityMode

WARNING

YES

NbIotTimer3412

WARNING

YES

NbIotTimer3324

WARNING

YES

NbIotEdrx

WARNING

YES

NbIotEdrxMode

WARNING

YES

NbIotUsePSM

WARNING

YES

NbIotRadioBand

WARNING

YES

MqttSnConnectionMode

WARNING

YES

MqttSnTopic

WARNING

YES

LwM2MQueueMode

WARNING

YES

NbIotTxOffset

WARNING

YES

NbIotTxDelay

WARNING

YES

NbIotUploadsPerTx

WARNING

YES

ManualPlmn

WARNING

YES

NbIotDtlsMaxRewinds

WARNING

YES

NbIotDtlsMinTimeout

WARNING

YES

NbIotDtlsMaxTimeout

WARNING

YES

NbIotMqttsnCommTimeout

WARNING

YES

NbIotMqttsnCommAttempts

WARNING

YES

NbIotMdmCommFailures

WARNING

YES

NbIotCoapAckTimeout

WARNING

YES

NbIotCoapMaxRetransmit

WARNING

YES

NbIotIowaDtlsMinTimeout

INFO

YES

NbIotIowaDtlsMaxTimeout

INFO

YES

NbIotIowaCommRetryCount

WARNING

YES

NbIotIowaCommRetryDelay

WARNING

YES

NbIotIowaCommSeqRetryCount

WARNING

YES

NbIotIowaCommSeqRetryDelay

WARNING

YES

NbIotNwkConnMaxHoldoff

WARNING

YES

NbIotNwkSearchPeriod

WARNING

YES

NbIotModemRestartBackoff

WARNING

YES

NbIotMdmReconnectBackoff

WARNING

YES

NbIotLwM2MResumeBackoff

WARNING

YES

NbIotAutoUploadAgeLimit

WARNING

YES

NbIotAutoUploadOrder

WARNING

YES

Lwm2mBsUri

WARNING

YES

Lwm2mBsSecurityMode

WARNING

YES

Lwm2mUri

WARNING

YES

Lwm2mSecurityMode

WARNING

YES

Lwm2mLifetime

WARNING

YES

MqttsnUri

WARNING

YES

MqttsnSecurityMode

WARNING

YES

TimeSyncSource

Den neuen Wert protokollieren. Relevant für die Bestimmung der Qualität der im Protokoll verwendeten Zeitstempel.

WARNING

YES

NbIotUploadProtocol

WARNING

YES

NbIotEnableRai

WARNING

YES

PowerSource

WARNING

YES

NbIotAllowedRadioBands

WARNING

YES

MqttKeepaliveTimeout

WARNING

YES

LwM2MForcedQueueMode

WARNING

YES

NbIotRoamHomePlmnSearch

WARNING

YES

NbIotSyslogLevel

WARNING

YES

NbIotSyslogMqttSnTopic

WARNING

YES

NbIotSyslogAutoUploadLevel

WARNING

YES

NbIotSyslogAutoUploadAgeLimit

WARNING

YES

NbIotAlarmFuncEnableBitmask

WARNING

YES

NbIotAlarmMaskResetPeriod

WARNING

YES

NbIotAlarmHysteresis

WARNING

YES

NbIotAlarmAutoResetBitmask

WARNING

YES

NbIotAlarmTxDelayMax

WARNING

YES

NbIotEmcTestMode

WARNING

YES

NbIotAlarmMqttSnTopic

WARNING

YES

MeasurementMode

WARNING

YES

TxInterval

INFO

YES

MeterId

Sowohl Ausgangs- als auch Zielwert protokollieren. Relevant für die Nachverfolgung von Zählerwechseln oder Problemen bei der Zählerkommunikation.

WARNING

YES

UTCOffset

INFO

YES

TimestampRounding

INFO

YES

ModemConfigured

INFO

YES

ReadoutInterval

INFO

YES

ReportInterval

INFO

YES

Meter data readout

DEBUG

NO

Meter data transmission

DEBUG

NO

Found long payload

WARNING

NO

Meter data readout error

Statuscode

WARNING

NO

No valid timestamp from meter

NOTICE

NO

Readout skipped on time change

Alte und neue Zeit

NOTICE

NO

Performing readout on time change

Alte und neue Zeit

INFO

NO

Stored [type] credentials for [address]

[Typ] BS, DM usw. [Adresse] Server-URI

NOTICE

NO

Unsupported encrypted meter communication

ERROR

NO


Übertragung des Systemprotokolls

Das Systemprotokoll des Moduls kann über MQTT-SN oder LwM2M Send übertragen werden. Welches Protokoll verwendet wird, hängt vom ausgewählten Transportprotokoll für die Zählerdaten ab. Der Inhalt der übertragenen Daten bleibt unabhängig davon gleich. Wenn im Modul ein Systemprotokolleintrag gespeichert wird, dessen Systemprotokollebene für das Senden konfiguriert ist, wird er zusammen mit der nächsten Zählerdatenübertragung gesendet. Alle noch nicht gesendeten Protokolleinträge, die gesendet werden sollen, werden einbezogen.

Übertragung des Systemprotokolls mit MQTT-SN

Bei Verwendung von MQTT-SN werden Systemprotokolleinträge getrennt von den normalen Zählerdaten in einem eigenen Topic gesendet. Das Systemprotokoll-Topic kann über die LwM2M-Ressource 33918/./0 konfiguriert werden.

Übertragung des Systemprotokolls mit LwM2M Send

Bei Verwendung von LwM2M Send werden die Systemprotokolleinträge in einer eigenen Instanz des Zählerdatenobjekts 33911 veröffentlicht.

Dekodieren des Systemprotokolls

Unabhängig davon, ob das Systemprotokoll über MQTT-SN oder LwM2M Send gesendet wird, ist die Nutzlast gemäß dem SenML-Datenmodell strukturiert und mit CBOR kodiert. Die Systemprotokollmeldung selbst wird als ASCII-Zeichenfolge im SenML-Datensatz gespeichert.

Eine vollständige Beschreibung der Kodierung von SenML/CBOR-Paketen finden Sie in Abschnitt SenML/CBOR. Das folgende Beispiel zeigt vereinfacht, wie eine Systemprotokollmeldung von der Roh-Nutzlast bis zur menschenlesbaren Meldung dekodiert wird.

  1. Roh-Nutzlast (Referenz):

    82A200615602190200A322C11A699337A002020858335B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F203835373435303430

  2. Roh-Nutzlast dekodieren (z. B. mit https://cbor.me/):

    [{0: "V", 2: 512}, {-3: 1(1771255712), 2: 2, 8: h'5B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F203835373435303430'}]

  3. Datensatz im Paket identifizieren:

    5B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F2038353734353034305B636F6E6E48646C725D204D444D55706C6F61646564

  4. Datensatz als ASCII-Zeichenfolge dekodieren:

    [config] Meter id changed from 85727160 to 85745040

Nachrichtenkodierung

Das Produkt hat drei Optionen, wenn es um die Nachrichtencodierung geht:

  • M-Bus

  • JSON

  • SenML/CBOR

M-Bus

Bei Verwendung des M-Bus als Nachrichtenkodierungsverfahren werden die Daten in Dateninformationsblöcke (DIB) unterteilt, die ein Dateninformationsfeld (DIF-Code), ein Wertinformationsfeld (VIF-Code) und ein Datenfeld (DATA) umfassen, in dem die eigentliche Nutzlast gespeichert wird (in der folgenden Abbildung veranschaulicht).

M-Bus_DIB_structure_.png

DIB-Struktur

Die nachstehende Tabelle enthält ausführliche Beispiele für die Kodierung von Daten bei Verwendung der Nachrichtenkodierung M-Bus.

Tabelle 136. Nutzlast, M-Bus-kodierte Nachricht

DIB

Feld

Größe

Datentyp

Beschreibung

1

Datum/Uhrzeit

6 Bytes

INT32

Datum und Uhrzeit des Messgerätes (JJ-MM-TT hh:mm)

Entsprechend OBIS 9.36

046Dxxxxxxxx

Bit 31-28 = Jahreshöchstwert*

Bit 27-24 = Monat

Bit 23-21 = Jahrestiefstwert*

Bit 20-16 = Tag

Bit 15 = Sommerzeit-Flag**

Bit 14-13 = Jahrhundert

Bit 12-8 = Stunde

Bit 7 = Fehler-Flag

Bit 6 = für zukünftige Verwendung reserviert***

Bit 5-0 = Minute

*Das Jahr wird durch die Kombination des Feldes Jahreshöchstwert und Jahrestiefstwert ausgelesen. Zum Beispiel: Jahreshöchstwert = 0010 und Jahrestiefstwert = 010 =&gt; Jahr = 0010010

**0 = Standardzeit, 1 = Sommerzeit

***0 = Zeitstempel ist gültig, 1 = Zeitstempel ist nicht gültig

2

Meter ID

6 Bytes

Gemäß dem Identifikationsfeld von M-Bus EN 13757-3

Meter ID

0C78xxxxxxxx

3

Energie

6-7 Bytes

INT32

Energieverbrauch (Wh, J)

0406xxxxxxxx = xxxxxxxx * 0.001 MWh (kWh)

0407xxxxxxxx = xxxxxxxx * 0.01 MWh

04FB00xxxxxxxx = xxxxxxxx * 0.1 MWh

04FB01xxxxxxxx = xxxxxxxx MWh

040Exxxxxxxx = xxxxxxxx * 0.001 GJ (MJ)

040Fxxxxxxxx = xxxxxxxx * 0.01 GJ

04FB08xxxxxxxx = xxxxxxxx * 0.1 GJ

04FB09xxxxxxxx = xxxxxxxx GJ

4

Volumen

6 Bytes

INT32

Volumen (m3)

0413xxxxxxxx = xxxxxxxx * 0.001 m3

0414xxxxxxxx = xxxxxxxx * 0.01 m3

0415xxxxxxxx = xxxxxxxx * 0.1 m3

0416xxxxxxxx = xxxxxxxx m3

5

Leistung

4 Bytes

INT16

Leistung (W)

022Bxxxxxx = xxxxxx * 0.001 kW (W)

022Cxxxxxx = xxxxxx * 0.01 kW

022Dxxxxxx = xxxxxx * 0.1 kW

022Exxxxxx = xxxxxx kW

6

Durchfluss

4 Bytes

INT16

Durchfluss (m3/h)

023Bxxxxxx = xxxxxx * 0.001 m3/h

023Cxxxxxx = xxxxxx * 0.01 m3/h

023Dxxxxxx = xxxxxx * 0.1 m3/h

023Exxxxxx = xxxxxx m3/h

7

Vorlauftemperatur

4 Bytes

INT16

Vorlauftemperatur (°C)

025Axxxx = xxxx * 0.1 °C

025Bxxxx = xxxx * °C

8

Rücklauftemperatur

4 Bytes

INT16

Rücklauftemperatur (°C)

025Exxxx = xxxx * 0.1 °C

025Fxxxx = xxxx °C

9

Fehler-Flags

5 Bytes

INT16

Fehler- und Warnungs-Flags

02FD17xxxx

Weitere Informationen zu Fehlerkennzeichen finden Sie im aktuellen Zählerhandbuch

10

Tarif 1

Energie

7 Bytes

INT32

Tarif 1 Energieverbrauch (Wh, J)

841003xxxxxxxx = xxxxxxxx Wh

841003xxxxxxxx = xxxxxxxx * 10 Wh

841003xxxxxxxx = xxxxxxxx * 100 Wh

841003xxxxxxxx = xxxxxxxx kWh

841003xxxxxxxx = xxxxxxxx *10 kWh

841003xxxxxxxx = xxxxxxxx MJ

841003xxxxxxxx = xxxxxxxx * 10 MJ

11

Tarif 2

Energie

7 Bytes

INT32

Tarif 2 Energieverbrauch (Wh, J)

842003xxxxxxxx = xxxxxxxx Wh

842003xxxxxxxx = xxxxxxxx * 10 Wh

842003xxxxxxxx = xxxxxxxx * 100 Wh

842003xxxxxxxx = xxxxxxxx kWh

842003xxxxxxxx = xxxxxxxx *10 kWh

842003xxxxxxxx = xxxxxxxx MJ

842003xxxxxxxx = xxxxxxxx * 10 MJ

12

Tarif 3

Energie

7 Bytes

INT32

Tarif 3 Energieverbrauch (Wh, J)

843003xxxxxxxx = xxxxxxxx Wh

843003xxxxxxxx = xxxxxxxx * 10 Wh

843003xxxxxxxx = xxxxxxxx * 100 Wh

843003xxxxxxxx = xxxxxxxx kWh

843003xxxxxxxx = xxxxxxxx *10 kWh

843003xxxxxxxx = xxxxxxxx MJ

843003xxxxxxxx = xxxxxxxx * 10 MJ

13

Fehlende Zeit

6 Bytes

INT32

3C22xxxxxxxx = xxxxxxxx Stunden

3C23xxxxxxxx = xxxxxxxx Tage


JSON

Bei Verwendung der JSON-Nachrichtenkodierung bestehen die gesendeten Nachrichten aus einem Objekt mit einer Liste von Schlüssel-Wert-Paaren. Beispiele für die Bezeichnungen der einzelnen Werttypen und Einheiten sind in der nachstehenden Tabelle aufgeführt. Die Werte werden als Zahlen oder Zeichenfolgen codiert und die Einheiten werden als Zeichenfolgen codiert. JSON bietet eine für den Menschen lesbare Datenkodierung, die allerdings nicht so kompakt ist wie z. B. SenML/CBOR.

Tabelle 137. Nutzlast, JSON-kodierte Nachricht

Feld

JSON-Schlüssel

Zähler-ID

ID

Zählerdatum/Uhrzeit

TS

Energie

E

Energieeinheit

U

Volumen

V

Volumeneinheit

VU

Leistung

P

Leistungseinheit

PU

Durchfluss

F

Durchflusseinheit

FU

Vorlauftemperatur

FT

Einheit der Vorlauftemperatur

TU

Rücklauftemperatur

RT

Rücklauftemperatureinheit

RU

Fehler-Flags

EF

Energie Tarif 1

T1

Energieeinheit Tarif 1

U1

Energie Tarif 2

T2

Energieeinheit Tarif 2

U2

Energie Tarif 3

T3

Energieeinheit Tarif 3

U3

Fehlende Zeit

MT

Fehlende Zeiteinheit

MU

Erweiterte Informationen

I


Beispiel Nutzlast, JSON

{"TS":"2025-08-27T07:36:01Z "," ID":81493511, "E":0, "U":"kWh", "V":0, "VU":"m3", "P":5012, "PU":"W", "F":212, "FU":"l/h", "FT":30.1, "TU":"C", "RT":22.5, "RU": "C", "I":"0x0010", "EF":"0x70"}

SenML/CBOR

Bei batteriebetriebenen Geräten wird empfohlen, mehrere Messungen im selben UDP-Frame zu senden, um Energie zu sparen. Hierzu werden SenML (Sensor Measurement Lists) und CBOR (Concise Binary Object Representation) verwendet, um eine Messliste zu definieren.

Die Idee ist, eine Liste von Messungen zu senden, wobei der erste Eintrag die Basiszeit für alle Auslesungen (die nur einen Offset angeben müssen) und die für alle Auslesungen gemeinsame Zähler-ID enthält. Die anderen Datensätze in der Liste enthalten möglicherweise weniger ausgelesene Felder, um Platz zu sparen. Das Format erlaubt es, alle Daten für jede Auslesung zu senden. In diesem Fall ist die Einsparung (in Form von Bytes) geringer und liegt darin, dass weniger Telegramme gesendet werden, einige Daten nicht für jede Auslesung übertragen werden müssen (wie die Zähler-ID) und Zeitstempel effizienter gehandhabt werden können. SenML/CBOR bietet auch eine Möglichkeit, Listen von Messwerten effizient zu strukturieren.

Elvaco verwendet die SenML/CBOR/M-Bus-Datendarstellung, um Zählerdaten kompakt und selbstbeschreibend zu übertragen. Die übertragenen Daten werden als Paket bezeichnet, das einen Datensatz pro Messung enthält.

Anmerkung

SenML, CBOR und M-Bus sind separate Standards. Dieser Abschnitt beschreibt, wie Produkte diese drei Standards in Kombination verwenden können, um mehrere Messwerte in einem kompakten Format darzustellen, das sich für die Funkübertragung über beispielsweise NB-IoT eignet.

Aufbau des SenML-Pakets

Zählerauslesedaten werden als SenML gesendet, d. H. eine Liste (aka Array) von Auslesewerten (Datensätzen), kodiert mit CBOR. Jeder Datensatz ist eine Zuordnung von Schlüssel-Wert-Paaren mit SenML.

Anmerkung

Jedes Produkt, welches das SenML/CBOR-Format verwendet, muss die folgenden Anforderungen erfüllen. Darüber hinaus ist der genaue Inhalt der enthaltenen Datenwerte, das Format der Zähler-ID usw. anzugeben. Diese Angabe allein reicht also nicht aus, um einen Parser für ein bestimmtes Produkt zu erstellen.

Basiszeit

Base time wird verwendet, um eine Referenzzeit festzulegen.

  • Zeitstempel werden immer nach SenML (d. h. UNIX-Zeit) kodiert (SenML-Etikett -1 „Basiszeit“, SenML-Definition des Zeitfeldes)

  • Dieser Wert muss im ersten Datensatz des Packs enthalten sein

  • Alle anderen Werte haben einen Zeitwert, der zur Basiszeit addiert wird, um den genauen Zeitpunkt der Auslesung zu bestimmen

Basisname

Base name wird verwendet, um die MeterID (Zähleridentifikation im M-Bus) für Produkte darzustellen, die Messdaten für einen Zähler liefern.

  • Wenn der Basisname verwendet wird

    • Dieser Wert MUSS im ersten Datensatz der Packung enthalten sein

    • Dies wird als String-Array dargestellt (CBOR Major Type 3 - SenML-Label -2 "Basisname")

      • Das Produkt muss das genaue Format für dieses Feld angeben, da es je nach Art des verwendeten "Zählers" variieren kann. Bei einem M-Bus-Format sind es typischerweise die M-Bus-Daten ohne DIF/VIF.

    • Für die verbleibenden Zählerauslesewerte wird kein Name festgelegt, nur Werte, die zu einem einzelnen Zähler gehören, können in einem Paket dargestellt werden.

  • Wenn die zu sendenden Auslesungen unterschiedliche MeterIDs enthalten (z. B. wenn ein Modul zwischen Zählern verschoben wird), dürfen sie NICHT im selben SenML-Paket gesendet werden

    • Alle Werte innerhalb eines SenML-Pakets MÜSSEN sich auf dieselbe MeterID beziehen

    • Die Datenwerte DÜRFEN KEINEN Namenwert enthalten, der den Namen für jeden Wert weiter spezifiziert.

  • Der Basisname DARF NICHT für SenML-Pakete verwendet werden, die Daten für mehrere Zähler enthalten. In solchen Fällen muss jeder Datensatz die MeterID des Zählers enthalten.

Datenwerte
  • Die tatsächlichen Werte des Zählers können mit mehreren Methoden kodiert werden, z. B. M-Bus.

  • Der erste Datensatz kann auch ein Datenwertfeld enthalten, das mehr Informationen enthält als die übrigen Datensätze im Paket. Dies soll mehr Informationen für das erste Lesen enthalten und dann nur eine Teilmenge von Werten für die verbleibenden Datensätze, um Platz zu sparen. (SenML-Label 8 - "Datenwert")

Andere Werte
  • (Basis-)Einheit wird nicht verwendet, da die Einheit durch die M-Bus-Daten spezifiziert wird

  • Ein "Encoder-Version-Feld" wird in einem separaten Datensatz verwendet, um den Typ und die Version der kodierten Nutzdaten zu definieren.

Zusätzliche Datensätze

Alle Datensätze im SenML-Paket sollen Messwerte enthalten. Wenn zusätzliche Informationen im selben Paket übertragen werden müssen, können zusätzliche Datensätze hinzugefügt werden. Für diese Datensätze ist das Namensfeld zu verwenden, indem ein Name mit mindestens einem Zeichen definiert wird. In SenML werden der Basisname und die Namensfelder angehängt, um den endgültigen Datensatznamen zu erhalten.

Der Name muss mindestens ein Zeichen außerhalb von [A-F, a-f, 0-9] enthalten. Dies kennzeichnet eine nicht hexadezimale Darstellung. Da die Zähler-ID normalerweise dezimal oder hexadezimal ist, lässt sich so die Gültigkeit des Datensatznamens leichter prüfen. Wenn ein Parser einen Datensatz mit einem solchen Namensfeld nicht erkennt, muss er den Datensatz ignorieren.

Die folgenden zusätzlichen Datensätze werden derzeit verwendet:

Datensatz

Namensfeld

Kommentar

Encoder Typ & Version

„V“

In diesem Feld können Versionen für den Inhalt des Messfeldes definiert werden.

Erweiterte Fehlerinformationen

„I“

Dieser Datensatz ermöglicht das Senden erweiterter Informationen zu einer Messung, beispielsweise Fehlerinformationen.

Encodertyp & Versionierung

In der folgenden Tabelle werden zulässige Encodertypen und -versionen definiert. Die Informationen werden in einem speziellen Datensatz "Encoder Version field" übermittelt.

  • Dieses Feld kapselt sowohl die Codierung der Daten als auch die Versionierung

  • Es enthält keinen Zeitstempel

  • Es ist als SenML-Wert codiert

  • Es hat ein Namensfeld mit dem einzelnen Buchstaben „V“

  • Wenn beim Parsen eine ungültige Version gefunden wird, stoppt das Parsen mit einem Fehler

  • Der Wert ist als UINT16 zu interpretieren

    • Das erste Byte ist der Encodertyp und das zweite ist die Encoderversion, die beide als UINT8 interpretiert werden.

      Beispiel: Der Wert 0x0102 bezeichnet den Kodierertyp 0x01 und die Kodiererversion 0x02.

    • Die definierten gültigen Kodierertypen und -versionen sind in der folgenden Tabelle aufgeführt.

    • Die Größe des gesamten Datensatzes beträgt maximal 7 Byte

  • Wenn der Datensatz ausgeschlossen ist, beträgt der Kodierertyp 0 und die Kodiererversion 0.

Kodierertyp

Kodiererversion

Daten

Kommentar

0 (M-Bus)

0

0x0000

M-Bus-Kodierung von Nutzlastdaten. Jeder Datensatz enthält alle DIF/VIF/Werte nach M-Bus.

Beachten Sie, dass M-Bus die erste Bytereihenfolge LSB für die Daten verwendet und auch hier beibehalten werden soll.

1 (Gateway)

0

0x0100

Gateway für Zählerdaten, d. h. Daten für mehrere Zähler befinden sich in einem einzigen Paket. Die Nutzlast kann je nach verwendeter Schnittstelle unterschiedliche Typen aufweisen. Beispiele für Nutzlastformate sind unverschlüsselte oder verschlüsselte M-Bus-Daten mit zusätzlichen Metadaten.

Dieser Kodierertyp ist derzeit für Elvaco-Produkte zur Zähleranbindung nicht relevant.

2 (Syslog)

0

0x0200

Als hexadezimale ASCII-Zeichenfolge kodierte Syslog-Datennachricht.

Schlüssel 2 gibt die Protokollierungsebene an. Einzelheiten zu den Werten der einzelnen Ebenen finden Sie im Abschnitt zum Systemprotokoll des Moduls.

3 (Transparent M-Bus)

0

0x0300

Transparente M-Bus-Daten. Die Nutzlast enthält ein vollständiges (kabelgebundenes) M-Bus-Telegramm einschließlich Header und CRC. Dieser Kodierertyp ist relevant, wenn der zählergesteuerte Messmodus Transparent verwendet wird.

4 (Benutzerdefiniertes Format)

0

0x0400

Benutzerdefiniertes Nachrichtenformat. Die Nutzlast enthält M-Bus-kodierte Daten; die zurückgegebenen Felder wurden im Gerät konfiguriert. Header und CRC sind nicht enthalten.

Die Zähler-ID ist Bestandteil der M-Bus-Daten und nicht des Basisnamens.

Erweiterte Informationen

Dieser Datensatz dient zum Senden erweiterter Informationen, die nicht als Teil der normalen Zählerauslesedaten gesendet werden können. Ein typischer Anwendungsfall sind zusätzliche Fehlercodes vom Zähler oder Gerät.

  • Das Format der erweiterten Informationen hängt vom ausgewählten Kodierer ab. Siehe Tabelle unten.

  • Die detaillierte Interpretation der Informationen ist produktspezifisch. Beispielsweise gelten die Fehlercodes eines Zählers jeweils für diesen bestimmten Zähler, auch wenn sie mit M-Bus kodiert sind.

  • Die Information wird als SenML-Datenwert kodiert.

  • Sie enthält ein Feld Name mit dem Wert „I“.

  • Sie muss einen Zeitstempel enthalten.

    • Der Zeitstempel kann mit dem eines anderen Zählerdatensatzes übereinstimmen. In diesem Fall gelten die beiden Datensätze als zum selben Zeitpunkt erfasst.

  • Die erweiterten Informationen sind ein optionaler Datensatz.

Kodierertyp

Kodiererversion

Format der erweiterten Fehlerinformationen

0 (M-Bus)

0

M-Bus-Kodierung von Nutzlastdaten. Jeder Datensatz enthält alle DIF/VIF/Werte nach M-Bus.

Beachten Sie, dass M-Bus für die Daten die Byte-Reihenfolge LSB zuerst verwendet und diese auch hier beibehalten werden muss.

1 (Gateway)

0

Für Elvaco-Module zur Zähleranbindung nicht relevant.

2 (Syslog)

0

Noch nicht definiert

3 (Transparent M-Bus)

0

M-Bus-Kodierung von Nutzlastdaten. Jeder Datensatz enthält alle DIF/VIF/Werte nach M-Bus.

Beachten Sie, dass M-Bus für die Daten die Byte-Reihenfolge LSB zuerst verwendet und diese auch hier beibehalten werden muss.

Beispiel für Transparent M-Bus und erweiterte Informationen

Das folgende Beispiel zeigt ein Datenpaket mit zwei Datensätzen: Der erste enthält transparente M-Bus-Daten, der zweite mit „I“ gekennzeichnete erweiterte Informationen.

1  83                                      # array(3)
2  
3  ** Record for defining encoder and version **
4  
5     A2                      # map(2)
6        00                   # unsigned(0)   ## Key 1: Name
7        61                   # text(1)       ## Value 1:
8           56                # "V"           ## "V" = version
9        02                   # unsigned(2)   ## Key 2: Value
10       19 0300              # unsigned(768) ## Value 2: enc=3, ver=0
11 
12 ** first record of the pack **
13     
14    A2                      # map(2)
15       22                   # negative(2)          ## Key 1: Base Time
16       C1                   # tag(1)               ## Value 1:
17          1A 6835B149       # unsigned(1748349257) ## 2025-05-27T12:28:33+00:00
18       08                   # unsigned(8)          ## Key 2: Data value
19       58 36                # bytes(54)            ## Value 2: M-Bus telegram
20          6830306808007274
21          031961A51140048B
22          0000000C06080000  # Payload data, line breaks added for readbility
23          00046D220C3B350C
24          13377400008C10FD
25          32000000008C2013
26          000000006D16
27 
28 ** second record of the pack, containing extended information **
29 
30    A3                      # map(3)
31       00                   # unsigned(0)          ## Key 1: Name
32       61                   # text(1)              ## Value 1:
33          49                # "I"                  ## "I" = extended information
34       08                   # unsigned(8)          ## Key 2: Data value
35       45                   # bytes(5)             ## Value 2: M-Bus data
36          02FD187000        # "\u0002\xFD\u0018p\u0000"
37       06                   # unsigned(6)          ## Key 3: Timestamp
38       00                   # unsigned(0)          ## Value 3: Relative time 0

Validatoren

Unter https://cbor.me/ gibt es einen Validator für CBOR. Beachten Sie, dass er weder SenML noch M-Bus versteht.

Anmerkung

Im Validator wurde ein kleiner Fehler in der hexadezimalen Interpretation von negativen Zahlen identifiziert. Bitte beachten Sie dies, wenn Sie den Validator verwenden.

Konfiguration

SenML/CBOR ist als Nachrichtenkodierung zu betrachten. Es definiert, wie die Nachrichten kodiert werden, aber nicht den tatsächlichen Inhalt der Nachrichten (welche Felder aus dem Zähler enthalten sind). SenML/CBOR/M-Bus ist eine solche Kodierung, aber es könnte mehrere geben, die auf dieser SenML/CBOR-Spezifikation basieren, und das obige Encoderversionsfeld definiert genau, welcher Typ und welche Version verwendet wird.

Der Inhalt der Nachricht wird durch das Nachrichtenformat definiert. Das Nachrichtenformat legt fest, welche Felder sowohl im ersten als auch im nachfolgenden Datensatz des SenML-Pakets enthalten sein sollen.

Die Anzahl der in einem Paket enthaltenen Datensätze wird durch die Auslese- und Sendeintervalle festgelegt. Weitere Informationen finden Sie unter Planen von Auslesungen. Wenn das Ausleseintervall 120 Minuten und das Übertragungsintervall 1440 Minuten beträgt, werden insgesamt 12 Anzeigen einbezogen.

Beschränkungen der Nachrichtengröße

Jedes Produkt kann unterschiedliche maximale Nutzlastgrößen in einem einzigen Telegramm haben. Je nach Konfiguration (z. B. DTLS oder nicht) kann auch die Nettonutzlastgröße variieren. Daher muss das Gerät so viele Telegramme "füllen", wie zum Senden der Daten erforderlich sind. Es ist Sache des Benutzers, eine Konfiguration zu definieren, die einen vernünftigen Kompromiss zwischen Stromverbrauch (weniger Telegramme senden) und funktionalen Anforderungen (viele Daten werden gesendet) bietet.

Wenn ein Gerät mit einem Nachrichtenformat und vielen Auslesungen konfiguriert ist, passen die Daten möglicherweise nicht in ein einzelnes Telegramm. In solchen Fällen müssen mehrere Telegramme gesendet werden und jedes Telegramm muss vollständig selbstbeschreibend sein, d.h. Zähler-ID, Zeitstempel usw. enthalten.

Beispiel 1:

Parameter

Wert

Ausleseintervall

60

Übertragungsintervall

1440 (täglich)

Nachrichtenkodierung

SenML/CBOR/M-Bus Version 0

Nachrichtenformat

Standard

Max. Übertragungen pro Tag

3

Dieses Beispiel führt zur Übertragung einer Nachricht pro Tag mit 24 Messwerten, die alle den Inhalt haben, der im Standardnachrichtenformat definiert ist. Die Daten werden mit SenML/CBOR/M-Bus kodiert. Maximal 3 nicht gesendete solche Nachrichten werden jedes Mal gesendet (wenn die Nachrichten aus irgendeinem Grund nicht "letztes Mal" gesendet wurden). Die maximal übertragenen Nachrichten pro Tag betragen also 3 (mit 3x24=72 Messwerten, die 3 Tage abdecken)

Beispiel 2:

Parameter

Wert

Ausleseintervall

120

Übertragungsintervall

720

Nachrichtenkodierung

SenML/CBOR/M-Bus Version 0

Nachrichtenformat

Tarif

Max. Übertragungen pro Tag

2

Dieses Beispiel führt zur Übertragung einer Nachricht alle 12 Stunden mit 6 Lesevorgängen, die alle den im Nachrichtenformat "Tarif" definierten Inhalt aufweisen. Die Daten werden mit SenML/CBOR/M-Bus kodiert. Maximal 2 nicht gesendete solche Nachrichten werden jedes Mal gesendet (wenn die Nachrichten aus irgendeinem Grund nicht "letztes Mal" gesendet wurden), so dass die maximal übertragenen Nachrichten pro Tag 4 sind (mit 4x6 = 24 Messwerten, die 2 Tage abdecken).

Sicherheits- und Zugriffssteuerung

Tabelle 138. Einstellungen zur Steuerung des lokalen Zugriffs auf das Gerät

LwM2M-Ressource

Einstellung

Beschreibung

33906/./4

NFC aktiviert

Boolesch. Schaltet die NFC-Schnittstelle des Geräts ein oder aus. Wenn sie deaktiviert ist, kann das Gerät nicht lokal konfiguriert werden.

33906/./5

NFC-Konfiguration gesperrt

Boolesch. Schaltet das NFC-Konfigurationsschloss ein oder aus. Wenn es aktiviert ist, kann das Gerät ohne den PAK nicht lokal konfiguriert werden.


Automatisches NFC-Konfigurationsschloss

Tabelle 139. Einstellungen zur Steuerung des automatischen NFC-Konfigurationsschlosses

LwM2M-Ressource

Einstellung

Beschreibung

33906/./71

Automatisches NFC-Konfigurationsschloss aktivieren

Boolesch. Schaltet das automatische NFC-Konfigurationsschloss ein oder aus. Wenn es eingeschaltet ist, wird das Konfigurationsschloss nach Ablauf der Zeitüberschreitung für die automatische Sperre aktiviert. Der Timer startet, sobald das Gerät aktiviert wurde.

33906/./72

Zeitüberschreitung des automatischen NFC-Konfigurationsschlosses

Zeit in Minuten. Legt fest, nach wie vielen Minuten nach der Aktivierung das Konfigurationsschloss aktiviert wird. Hierfür muss das automatische NFC-Konfigurationsschloss aktiviert sein.


Reset-Verfahren

Neustart des Moduls

  1. Halten Sie die Drucktaste 5–15 Sekunden gedrückt.

  2. Lassen Sie die Taste los, wenn die grüne LED aufleuchtet.

Led_indications_mcm_reboot__switch_off_.png

Ausschalten des Moduls

  1. Halten Sie die Drucktaste 15–20 Sekunden gedrückt.

  2. Lassen Sie die Taste los, wenn die rote LED aufleuchtet.

Led_indications_mcm_reboot__switch_off_.png

Zurücksetzen auf die Werkseinstellungen

Beim Zurücksetzen auf die Werkseinstellungen werden die Geräteeinstellungen auf die Werkseinstellungen zurückgesetzt. Außerdem werden alle im Modul gespeicherten Zählerdaten und Systemprotokolleinträge gelöscht. Das Zurücksetzen kann entweder über die Elvaco OTC App oder remote über LwM2M (Ressource 3/./5) erfolgen.

Anmerkung

Beim Zurücksetzen auf die Werkseinstellungen werden alle Netzwerk- und Serverparameter auf ihre Werkseinstellungen zurückgesetzt. Anschließend versucht das Gerät, mithilfe der automatischen APN-Erkennung eine Bootstrap-Verbindung zu Elvacos Standardserver herzustellen.

Wenn die SIM-Karte ausschließlich für einen privaten APN konfiguriert ist, kann sich das Gerät weiterhin im NB-IoT-Netzwerk registrieren, den Bootstrap-Server von Elvaco jedoch nicht erreichen. Das Gerät ist dann logisch nicht erreichbar und muss lokal neu konfiguriert werden.

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich
Haben Sie Fragen? Anfrage einreichen

Kommentare (0 Kommentare)

Zu diesem Beitrag können keine Kommentare hinterlassen werden.