Drift
Tips
Att överföra data är en mycket mer energikrävande operation än att läsa av mätaren. För batteridrivna enheter är det därför klokt att ställa in ett längre sändningsintervall än rapportintervall för att uppnå en lämplig dataupplösning.
Mätardata kan överföras med antingen MQTT-SN eller LwM2M Send. Protokollen kan inte användas samtidigt, men de kan konfigureras via LwM2M eller Elvaco OTC-appen. Innehållet i överförda data är detsamma oavsett vilket transportprotokoll som väljs. När en överföring av mätardata är schemalagd definieras de data som skickas av det valda meddelandeformatet. Om det finns mätardata i modulen som inte har skickats överförs de enligt den valda återställningsstrategin (First in First out (FiFO) eller Last in First out (LiFo)).
När MQTT-SN används publiceras mätardatameddelanden till ett MQTT-SN-ämne. Ämnet kan konfigureras på distans med LwM2M-resursen 33905/./11 eller via Elvaco OTC-appen.
Modulen förlitar sig på mätarens klocka för att hålla tiden. Tiden i mätaren antas vara i lokal lokal tid (ingen sommartid). Vid synkronisering av tid i mätaren med Elvaco OTC-appen används alltid lokal standardtid, även om sommartid är i kraft. Den tidsstämplade mätardata som skickas från modulen kan justeras för att skickas i UTC genom att specificera konfigurationsparametern "UTC offset". UTC-offset kommer att subtraheras från tidsstämpeln före sändning. Om mätaren är i Sverige, som använder CET (Central European Time), bör den ha UTC-offset satt till +60 (+1h). I detta fall skickas kl 12.00 ett telegram med tidsstämpel 11.00 då detta är motsvarande UTC-tid. En mätare i New York (USA) bör ha en UTC-offset på "-300" (-5h) etc. En UTC-offset på "0" betyder att mätartiden används som den är.
Om mätaren är inställd på att använda sommartid ignoreras den inställningen av modulen, som i stället använder standardtid. Tiden på mätarens display kan därför avvika från tiden i telegrammet eller Elvaco OTC-appen.
Alla scheman synkroniseras mot en klocka. Ett avläsningsschema på 60 minuter synkroniseras till hela timmar, till exempel 11:00, 12:00 och 13:00. Ett schema på 120 minuter ger i stället 12:00, 14:00 och 16:00. När tiden i modulen eller mätaren synkroniseras schemaläggs nästa mätaravläsning om enligt den uppdaterade tiden. Mätarens klocka kan synkroniseras periodiskt (automatiskt) eller manuellt. Periodisk synkronisering rekommenderas för att minska risken för att klockan driver för mycket.
Alternativ för manuell synkronisering
-
Via NFC med Elvaco OTC-appen
-
Via LwM2M med resurs
3/./13 -
Ställa in mätarklockan i mätaren
För att hantera fallet där en tidssynkronisering "flyttar tiden" förbi en tidigare planerad avläsning (som 23.58 → 00.02) kommer modulen alltid att göra en avläsning och sändning av ett nytt värde när tiden är synkroniserad. Enheten kommer därför att skicka en extra avläsning som kan maskeras på serversidan.
För att förhindra att många enheter sänder data på exakt samma tid har enheterna en slumpmässig fördröjning innan de överför data. Fördröjningen kan konfigureras via antingen Elvaco OTC-appen och NFC-gränssnittet, eller på distans via ett enhetshanteringssystem.
Avläsningar från mätaren görs alltid varje hel timme, till exempel 11.00 och 13.00. Överföringar kan utföras vid andra tidpunkter men planeras till hela timmar utifrån ett angivet överföringsintervall (Ttransmit). Bilden nedan illustrerar detta. Överföringarna planeras vid tidpunkten T1. Det faktiska Ttransmit är en slumpmässig tid mellan (T1 + Toffset) och (T1 + Toffset + Tdelay).
Töverföring, Toffset och Tdröjsmål är parametrar i produkten.
Om data inte kan skickas, exempelvis på grund av nätverksproblem, görs det ett antal försök varefter enheten ger upp och sparar avläsningen som "icke-sänd". Nästa gång en överföring görs kommer data som inte skickats att skickas på nytt (om möjligt). Återsändning kan göras genom FIFO eller LIFO.
Regler för återsändningar inkluderar maximal ålder för data, dataordning, antal återsända data/överföringsintervall.
Exempel 10. Exempel 1
En enhet är konfigurerad på följande sätt:
-
Meddelandekodning: M-Bus
-
Automatisk uppladdningsordning: FIFO
-
Mätintervall: 60 minuter
-
Sändningsintervall: 60 minuter
-
Sändningsförskjutning: 15 minuter
-
Sändningsfördröjning: 30 minuter
-
Maximalt antal uppladdningar per överföring: 4
-
Ladda upp maximal ålder 72h
Ett nätverksproblem gjorde att modulen var offline i 5 dagar medan den fortfarande läste och lagrade mätdata. När enheten lyckas gå online sker följande scenario.
-
Enheten börjar med att överföra mätdata som är 3 dagar gammal (FIFO-ordning)
-
Enheten kommer att skicka 4 mättelegram per timme, vid en slumpmässigt vald tidpunkt mellan minut 15 och 45
-
Varje telegram innehåller en enda avläsning, totalt 4 avläsningar per sändning
-
Enheten tar ungefär 1 dag att "komma ikapp" och börja skicka en mätning per timme
Exempel 11. Exempel 2
En enhet är konfigurerad på följande sätt:
-
Meddelandekodning: SenML/CBOR/M-Bus
-
Automatisk uppladdningsordning: FIFO
-
Mätintervall: 60 minuter
-
Sändningsintervall: 60 minuter
-
Sändningsförskjutning: 15 minuter
-
Sändningsfördröjning: 30 minuter
-
Maximalt antal uppladdningar per överföring: 4
-
Ladda upp maximal ålder 72h
-
Enhetens maximala payloadstorlek: 12 (avläsningar per telegram)
Ett nätverksproblem gjorde att modulen var offline i 5 dagar medan den fortfarande läste och lagrade mätdata. När enheten lyckas gå online sker följande scenario.
-
Enheten börjar med att överföra mätdata som är 3 dagar gammal (FIFO-ordning)
-
Enheten kommer att skicka 4 mättelegram per timme, vid en slumpmässigt vald tidpunkt mellan minut 15 och 45
-
Varje telegram innehåller 12 meter avläsningar, totalt 4 x 12 = 48 avläsningar per sändning
-
Enheten tar ungefär 2 timmar att "komma ikapp" och börja skicka en mätning per timme
CMi6160 kan köras i två olika lägen: Raw-läge (mätarstyrt) och Hanterat läge (modulstyrt). Lägesvalet avgör vilka alternativ som finns för de data som ska skickas från modulen. Information om hur du växlar mellan lägena finns i LwM2M-objektet 'Elvaco MCM Config' (objekt-ID 33906, resurs 68). I Raw-läge bestäms nyttolasten av inställningarna i mätaren. I Hanterat läge avgör modulens inställningar vilka data som skickas.
I Raw‑läge skickas det kunddefinierade telegrammet vidare oförändrat, enligt den specifikation som är konfigurerad i Diehl SHARKY‑ eller SCYLAR‑mätaren. Vanligtvis är telegrammet förkonfigurerat vid leverans men kan även justeras i fält. Vid användning av Raw‑läge ställs meddelandekodningen automatiskt in på SenML/CBOR för att rymma större kunddefinierade telegram. Eftersom protokollet i Diehl SHARKY och SCYLAR är M‑Bus kommer även nyttolasten som levereras i SenML/CBOR‑paketen att vara i M‑Bus‑format.
I Hanterat läge beror de data som skickas på det valda meddelandeformatet. CMi6160 har två olika meddelandeformat att välja mellan, Standard och Tariff. Se avsnitt Meddelandeformat för en komplett lista över inkluderade poster i respektive format.
Mätarlarm överförs med det valda transportprotokollet, som kan vara antingen MQTT-SN eller LwM2M Send. Innehållet i överförda data är detsamma oavsett vilket transportprotokoll som väljs. När ett larm utlöses följer meddelandet det valda formatet och utökade felkoder läggs till. Om det finns mätardata i modulen som inte har skickats överförs de samtidigt med larmet.
När MQTT-SN används publiceras larmmeddelanden i ett separat ämne, skilt från den ordinarie leveransen av mätardata. Larmämnet kan konfigureras via LwM2M-resursen 33906/./67.
Varje bit i larmmasken är direkt mappad till ett mätarfel. De olika larmmaskerna som används för att styra larmövervakaren har samma mappning. Avsnitten nedan beskriver hur varje bitmask ska hanteras och tolkas.
Övervakning av ett larm aktiveras genom att biten sätts till hög (1). Larmet hålls tyst, det vill säga larmmeddelanden förhindras från att utlösas, genom att biten sätts till låg (0). Tabellen nedan visar några exempel på hur bitmasken kan ställas in för olika funktioner.
Tabell 130. Exempel på bitmasker för aktivering av larmfunktion
|
Binärt |
Hex |
Tolkning |
|---|---|---|
|
0b1111 1111 1111 1111 |
0xFFFF |
Alla larm övervakas |
|
0b0 |
0x0 |
Inga larm övervakas. |
|
0b0001 1100 0001 |
0x1C1 |
Larmbitarna 0, 6, 7 och 8 övervakas. |
I praktiken gör masken för automatisk larmåterställning det möjligt att utlösa ett nytt meddelande för ett mätarlarm som har återställts, till exempel genom naturlig återställning när mätaren har återhämtat sig eller reparerats, eller genom manuell återställning. Om inga larm aktiveras i masken för automatisk larmåterställning kan ett visst larm skickas högst två gånger under modulens livslängd, en gång när det aktiveras och en gång när det eventuellt återställs. Valet av vilka larm som ska återställas automatiskt hanteras på samma sätt som bitmasken för aktivering av larmfunktion.
Tabell 131. Exempel på mask för automatisk larmåterställning och bitmasker för larmåterställning
|
Binärt |
Hex |
Tolkning |
|---|---|---|
|
0b1111 1111 1111 1111 |
0xFFFF |
Alla larm i larmmasken återställs. |
|
0b0 |
0x0 |
Inga larm i larmmasken återställs (inte relevant när larmmasken ska återställas manuellt). |
|
0b0001 1100 0001 |
0x1C1 |
Larmbitarna 0, 6, 7 och 8 återställs när hystereskriteriet är uppfyllt. |
En manuell återställning kan göras när som helst, vilket gör att modulen kan utlösa meddelanden för mätarlarm igen. Valet av vilka larm som ska återställas manuellt hanteras på samma sätt som bitmasken för aktivering av larmfunktion.
Tabell 132. Bitmasker för larmåterställning
|
Binärt |
Hex |
Tolkning |
|---|---|---|
|
0b1111 1111 1111 1111 |
0xFFFF |
Alla larm i larmmasken återställs. |
|
0b0 |
0x0 |
Inga larm i larmmasken återställs (inte relevant när larmmasken ska återställas manuellt). |
|
0b0001 1100 0001 |
0x1C1 |
Larmbitarna 0, 6, 7 och 8 återställs. |
Med meddelandeformatet Tariff kan en typisk nyttolast se ut så här:
04139C2E0000023B0000325A0000325E0000841006000000008420FD320000000001FD1750
Om samma nyttolast skickas som ett larmmeddelande läggs de utökade felkoderna till i slutet av nyttolasten:
04139C2E0000023B0000325A0000325E0000841006000000008420FD320000000001FD175002FD180800
De utökade mätarkoderna identifieras av M-Bus DIF/VIF 2FD18, Error Mask, som här följs av de två felbyten 0x0800. Eftersom M-Bus kodas i little-endian-format blir den fullständiga felmasken 0b0000 0000 0000 1000. Det innebär att felbit 3 är satt, vilket indikerar ett problem med temperaturmätningarna (se tabellen för tolkning av mätarfel).
Under modulens livslängd kan olika händelser behöva loggas, till exempel för att analysera dess funktion och övergripande status. Den inbyggda systemloggen kan konfigureras för att lagra och rapportera sådana händelser baserat på deras allvarlighetsgrad.
Det finns två inställningar för att styra systemloggens funktion: lagringsnivå för systemlogg och nivå för automatisk överföring av systemlogg. Lagringsnivån avgör vilka händelser som ska loggas och lagras i modulen, medan nivån för automatisk överföring definierar vilka händelser som automatiskt ska skickas från modulen beroende på deras allvarlighetsgrad. På så sätt kan kritiska händelser lagras utan att de nödvändigtvis skickas, vilket minskar datatrafiken och strömförbrukningen. Nya systemloggposter med lämplig loggnivå skickas tillsammans med nästa leverans av mätardata.
Notera
En fullständig referens över LwM2M-resurser som rör modulens systemlogg finns i LwM2M-objektet Elvaco Syslog Config (objekt-ID: 33918).
Tabellerna nedan visar tillgängliga loggnivåer och de implementerade händelser som kan loggas.
Tabell 134. Loggnivåer som stöds
|
Loggnivå |
Loggnivåns namn |
Beskrivning |
Anmärkning |
|---|---|---|---|
|
0 |
DEBUG |
Används för felsökning av oväntade beteenden hos enheten eller servern. |
Vid normal drift rekommenderas att felsökningshändelser varken lagras eller skickas. |
|
1 |
INFO |
Informativa, normala händelser |
|
|
2 |
NOTICE |
Meddelanden om normal drift |
|
|
3 |
WARNING |
Varningsloggar |
|
|
4 |
ERROR |
Felloggar |
|
|
5 |
CRITICAL |
Loggar för kritiska fel |
|
|
Varierar |
Varierar |
Loggnivån bestäms utifrån loggpostens innehåll. |
Varierande loggnivå används till exempel för konfigurationsändringar. Vissa ändringar kan vara mer eller mindre känsliga. Känsligare loggposter får en högre loggnivå. |
Tabellen nedan visar alla poster som kan loggas i enheten. Kolumnen längst till höger anger om systemloggposten härrör från en konfigurationsändring. Utöver loggnivån kan denna kategorisering vara till hjälp när loggarna tolkas på den mottagande servern.
Tabell 135. Loggelement som stöds och motsvarande loggnivå
|
Post |
Loggdata |
Loggnivå |
Är konfigurationsändring |
|---|---|---|---|
|
Product activation |
Orsak till aktivering (knapp i förekommande fall, NFC, Aktivering vid flöde osv.) |
NOTICE |
NO |
|
Successful timesync |
INFO |
NO |
|
|
Unsuccessful time sync |
Misslyckade tidssynkroniseringar |
WARNING |
NO |
|
Modem restarts |
INFO |
NO |
|
|
Successful connections to Bootstrap, DM, MDM |
INFO |
NO |
|
|
Failed connections to Network, Bootstrap, DM, MDM |
Nätverksavvisningar, misslyckade DTLS-handskakningar osv. |
WARNING |
NO |
|
Startup cause |
Orsak till start, till exempel watchdog, brownout eller mjuk återställning (exempelvis knapp, NFC, LwM2M eller konsol). Nivån kan bero på orsaken. |
NOTICE |
NO |
|
Changed SIM |
Ändring av ICCID |
WARNING |
NO |
|
Successful FW Upgrade |
|
WARNING |
NO |
|
Unsuccessful FW Upgrade |
|
WARNING |
NO |
|
Config reset with result |
|
CRITICAL |
NO |
|
Unsuccessful NFC writes |
Orsak till misslyckande
|
WARNING |
NO |
|
Failed staged settings |
|
WARNING |
NO |
|
DeviceEnable |
Aktiveringskälla |
WARNING |
YES |
|
DevEUI |
Nytt och gammalt |
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 |
Logga för att fastställa konsolens aktuella status. |
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 |
Logga det nya värdet. Relevant för att fastställa kvaliteten på de tidsstämplar som används i loggen. |
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 |
Logga både från- och tillvärden. Relevant för att spåra mätarbyten eller problem med mätarkommunikationen. |
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 |
Statuskod |
WARNING |
NO |
|
No valid timestamp from meter |
NOTICE |
NO |
|
|
Readout skipped on time change |
Gammal och ny tid |
NOTICE |
NO |
|
Performing readout on time change |
Gammal och ny tid |
INFO |
NO |
|
Stored [type] credentials for [address] |
[typ] BS, DM osv. [adress] server-URI |
NOTICE |
NO |
|
Unsupported encrypted meter communication |
ERROR |
NO |
Modulens systemlogg kan överföras med antingen MQTT-SN eller LwM2M Send. Vilket som används beror på det transportprotokoll som har valts för mätardata. Innehållet i överförda data är detsamma oavsett val. När en systemloggpost med en systemloggnivå som har konfigurerats för överföring lagras i modulen skickas den tillsammans med nästa överföring av mätardata. Alla loggposter som ska skickas men ännu inte har skickats inkluderas.
När MQTT-SN används skickas systemloggposter i ett separat ämne, skilt från ordinarie mätardata. Systemloggämnet kan konfigureras via LwM2M-resursen 33918/./0.
Oavsett om systemloggen skickas med MQTT-SN eller LwM2M Send struktureras nyttolasten enligt SenML-datamodellen och kodas med CBOR. Själva systemloggmeddelandet lagras som en ASCII-textsträng i SenML-posten.
En fullständig beskrivning av hur SenML/CBOR-paketen kodas finns i avsnitt SenML/CBOR. Exemplet nedan visar ett förenklat sätt att avkoda ett systemloggmeddelande, från den råa nyttolasten till ett läsbart systemloggmeddelande.
-
Rå nyttolast (referens):
82A200615602190200A322C11A699337A002020858335B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F203835373435303430 -
Avkoda den råa nyttolasten (till exempel med https://cbor.me/):
[{0: "V", 2: 512}, {-3: 1(1771255712), 2: 2, 8: h'5B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F203835373435303430'}] -
Identifiera dataposten i paketet:
5B636F6E6669675D204D65746572206964206368616E6765642066726F6D20383537323731363020746F2038353734353034305B636F6E6E48646C725D204D444D55706C6F61646564 -
Avkoda dataposten som en ASCII-sträng:
[config] Mätar-ID ändrat från 85727160 till 85745040
Produkten har tre alternativ när det kommer till meddelandekodning:
-
M-Bus
-
JSON
-
SenML/CBOR
Om M-Bus används som meddelandekodningsteknik kommer data att delas in i Data Information Block (DIB) som inkluderar datainformationsfält (DIF-kod), värdeinformationsfält (VIF-kod) och ett datafält (DATA) där den faktiska payloaden är sparad (illustreras i följande bild).
DIB-struktur
Tabellen nedan ger detaljerade exempel på hur data kodas när man använder M-Bus som kodning.
Tabell 136. Payload, M-Buskodat meddelande
|
DIB |
Fält |
Storlek |
Datatyp |
Beskrivning |
|---|---|---|---|---|
|
1 |
Datum/tid |
6 byte |
INT32 |
Mätarens datum och tid (ÅÅ-MM-DD TT:MM) Mappad till OBIS 9.36 046Dxxxxxxxx Bit 31-28 = år-högt* Bit 27-24 = Månad Bit 23-21 = år-lågt* Bit 20-16 = Dag Bit 15 = Sommartidsflagga** Bit 14-13 = Århundrade Bit 12-8 = Timme Bit 7 = Felflagga Bit 6 = Reserverad för framtida användning*** Bit 5-0 = Minut *Årtalet läses genom att kombinera fältet år-högt och år-lågt. Till exempel, årshögsta = 0010 och årslägsta = 010 =&; år = 0010010 **0 = standardtid, 1= sommartid ***0 = tidsstämpel är giltig, 1 = tidsstämpel är inte giltig |
|
2 |
Mätar-ID |
6 byte |
Enligt M-Bus EN13757-3 identifieringsfält |
Mätar-ID 0C78xxxxxxxx |
|
3 |
Energi |
6-7 byte |
INT32 |
Energiförbrukning (Wh, J) 0406xxxxxxxx = xxxxxxxx * 0,001 MWh (kWh) 0407xxxxxxxx = xxxxxxxx * 0,01 MWh 04FB00xxxxxxxx = xxxxxxxx * 0,1 MWh 04FB01xxxxxxxx = xxxxxxxx MWh 040Exxxxxxxxx = xxxxxxxx * 0,001 GJ (MJ) 040Fxxxxxxxx = xxxxxxxx * 0,01 GJ 04FB08xxxxxxxx = xxxxxxxx * 0,1 GJ 04FB09xxxxxxxx = xxxxxxxx GJ |
|
4 |
Volym |
6 byte |
INT32 |
Volym (m3) 0413xxxxxxxx = xxxxxxxx * 0,001 m3 0414xxxxxxxx = xxxxxxxx * 0,01 m3 0415xxxxxxxx = xxxxxxxx * 0,1 m3 0416xxxxxxxx = xxxxxxxx m3 |
|
5 |
Effekt |
4 byte |
INT16 |
Effekt (W) 022Bxxxxxx = xxxxxx * 0,001 kW (W) 022Cxxxxxx = xxxxxx * 0,01 kW 022Dxxxxxx = xxxxxx * 0,1 kW 022Exxxxxx = xxxxxx kW |
|
6 |
Flöde |
4 byte |
INT16 |
Flöde (m3/h) 023Bxxxxxx = xxxxxx * 0,001 m3/h 023Cxxxxxx = xxxxxx * 0,01 m3/h 023Dxxxxxx = xxxxxx * 0,1 m3/h 023Exxxxxxx = xxxxxx m3/h |
|
7 |
Fw temp |
4 byte |
INT16 |
Framledningstemperatur (°C) 025Axxxx = xxxx * 0,1 °C 025Bxxxx = xxxx * °C |
|
8 |
Rt temp |
4 byte |
INT16 |
Returtemperatur (°C) 025Exxxx = xxxx * 0,1 °C 025Fxxxx = xxxx °C |
|
9 |
Felflaggor |
5 byte |
INT16 |
Fel- och varningsflaggor 02FD17xxxx För ytterligare information om felflaggor, se den senaste mätarens manual |
|
10 |
Tariff 1 Energi |
7 byte |
INT32 |
Tariff 1 Energiförbrukning (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 |
Tariff 2 Energi |
7 byte |
INT32 |
Tariff 2 Energiförbrukning (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 |
Tariff 3 Energi |
7 byte |
INT32 |
Tariff 3 Energiförbrukning (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 |
Saknar tid |
6 byte |
INT32 |
3C22xxxxxxxx = xxxxxxxx timmar 3C23xxxxxxxx = xxxxxxxx dagar |
När du använder JSON-meddelandekodning består meddelanden som skickas av ett objekt med en lista med nyckel – värdepar. Exempel på namn för varje värdetyp och enhet presenteras i tabellen nedan. Värdena är kodade som siffror eller strängar och enheterna är kodade som strängar. JSON erbjuder datakodning som är läsbar för människor, på bekostnad av att den inte är lika Compact som exempelvis SenML/CBOR.
Tabell 137. Nyttolast, JSON-kodat meddelande
|
Fält |
JSON-nyckel |
|---|---|
|
Mätar-ID |
ID |
|
Mätarens datum/tid |
TS |
|
Energi |
E |
|
Energienhet |
U |
|
Volym |
V |
|
Volymenhet |
VU |
|
Effekt |
P |
|
Effektenhet |
PU |
|
Flöde |
F |
|
Flödesenhet |
FU |
|
Framledningstemperatur |
FT |
|
Framledningstemperaturenhet |
TU |
|
Returtemperatur |
RT |
|
Returtemperaturenhet |
RU |
|
Felflaggor |
EF |
|
Energi för tariff 1 |
T1 |
|
Energienhet för tariff 1 |
U1 |
|
Energi för tariff 2 |
T2 |
|
Energienhet för tariff 2 |
U2 |
|
Energi för tariff 3 |
T3 |
|
Energienhet för tariff 3 |
U3 |
|
Tid saknas |
MT |
|
Enhet för saknad tid |
MU |
|
Utökad information |
I |
Exempel på payload, 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"}
För batteridrivna enheter rekommenderas att flera mätningar skickas i samma UDP-ram för att spara energi. För detta används SenML (Sensor Measurement Lists) + CBOR (Concise Binary Object Representation) för att definiera en mätlista.
Tanken är att skicka en lista med mätningar där den första posten innehåller bastiden för alla avläsningar, som endast behöver ange en offset, och det mätar-ID som delas av alla avläsningar. De andra posterna i listan kan innehålla färre avläsningsfält för att spara utrymme. Formatet gör det möjligt att skicka samtliga data för varje avläsning. Besparingen i byte blir då mindre och består i att färre telegram skickas, att vissa data, till exempel mätar-ID, inte behöver överföras för varje avläsning och att tidsstämplar kan hanteras effektivare. SenML/CBOR ger också ett effektivt sätt att strukturera listor med avläsningar.
Elvaco använder datarepresentationen SenML/CBOR/M-Bus för att överföra mätardata på ett kompakt och självbeskrivande sätt. De data som överförs kallas ett paket och innehåller en post per mätning.
Notera
SenML, CBOR och M-Bus är separata standarder, detta avsnitt beskriver hur produkter kan använda dessa tre tillsammans för att representera flera mätvärden i ett kompakt format lämpligt för radiosändning över till exempel NB-IoT.
Mätaravläsningsdata skickas som SenML, det vill säga en lista (eller array) av avläsningsvärden (poster), kodade med CBOR. Varje post är en karta över nyckel/värdepar med hjälp av SenML.
Notera
Varje produkt som använder SenML/CBOR-formatet måste följa kraven nedan. Dessutom ska det specificera det exakta innehållet i de inkluderade datavärdena, mätar-ID-format etc. Således är denna specifikation ensam inte tillräcklig för att bygga en parser för en specifik produkt.
Base time används för att ställa in en referenstid.
-
Tidsstämplar är alltid kodade enligt SenML (det vill säga UNIX-tid) (SenML-etikett -1 "Bastid", SenML-definition av Tidsfält)
-
Detta värde måste inkluderas i den första posten i paketet
-
Alla andra värden har ett tidsvärde som läggs till bastiden för att definiera den exakta tiden för avläsningen
Base name används för att representera MätarID (Mätaridentifikation in M-Bus) för produkter som levererar mätdata för en mätare.
-
Om basnamn används
-
Detta värde MÅSTE finnas med i den första posten i paketet
-
Detta representeras som en strängmatris (CBOR Major Type 3 - SenML-etikett -2 "Basnamn")
-
Produkten ska specificera det exakta formatet för detta fält, eftersom det kan variera beroende på vilken typ av "mätare" som används. För ett M-Busformat är det vanligtvis M-Busdata utan DIF/VIF.
-
-
Inget namn har angivits för återstående mätaravläsningsvärden, endast värden som tillhör en enskild mätare kan representeras i ett paket.
-
-
Om avläsningar som ska skickas innehåller olika MeterIDs (modul flyttad mellan mätare till exempel) får de INTE skickas i samma SenML-paket
-
Alla värden i ett SenML-paket MÅSTE vara för samma MeterID
-
Datavärdena FÅR INTE ha ett namnvärde som specificerar namnet för varje värde.
-
-
Basnamn FÅR INTE användas för SenML-paket som har data för flera mätare. I sådana fall ska varje post innehålla mätarens MeterID.
-
De faktiska värdena från mätaren kan kodas med flera metoder, såsom M-Bus.
-
Den första posten kan också innehålla ett datavärdefält som innehåller mer information än de återstående posterna i paketet. Detta för att inkludera mer information för den första läsningen och sedan endast en delmängd av värden för de återstående posterna för att spara utrymme. (SenML-etikett 8 - "Data value")
Alla poster i SenML-paketet förväntas innehålla mätvärden. Om det finns ett behov av att överföra ytterligare information i samma paket kan ytterligare poster läggas till. För sådana poster ska namnfältet användas genom att definiera ett namn med minst ett tecken. I SenML läggs basnamnet och namnfälten till för ett slutligt namn på posten.
Namnet ska innehålla minst ett tecken utanför [A-F, a-f, 0-9], vilket anger att representationen inte är hexadecimal. Eftersom mätar-ID vanligtvis är decimalt eller hexadecimalt blir det därmed enklare att kontrollera att postnamnet är giltigt. Om en parser hittar en post med ett namnfält enligt beskrivningen ovan som den inte känner igen ska posten ignoreras.
Följande ytterligare poster används för närvarande:
|
Spela in |
Namnfält |
Kommentar |
|---|---|---|
|
Kodartyp & Version |
"V" |
Detta fält gör det möjligt att definiera versioner för innehållet i mätfältet. |
|
Utökad felinformation |
"I" |
Den här posten gör det möjligt att skicka utökad information om en mätning, till exempel felinformation. |
Följande tabell definierar tillåtna kodartyper och versioner. Informationen skickas i en särskild post "Encoder Version field".
-
Detta fält kapslar in både kodningen av data och versionshantering
-
Den innehåller ingen tidsstämpel
-
Den är kodad som ett SenML-värde
-
Den har ett Namn-fält med den enda bokstaven "V"
-
Om en ogiltig version påträffas vid tolkning ska tolkningen stoppas med ett felmeddelande
-
Värdet ska tolkas som ett UINT16
-
Den första byten är kodartypen och den andra är kodarversionen, båda tolkade som UINT8.
Exempel: värdet 0x0102 innebär kodartyp 0x01 och kodarversion 0x02.
-
Definierade giltiga kodartyper och versioner finns i tabellen nedan.
-
Storleken på hela posten är maximalt 7 byte
-
-
Om posten utelämnas är kodartypen 0 och kodarversionen 0
|
Kodartyp |
Kodarversion |
Data |
Kommentar |
|---|---|---|---|
|
0 (M-Bus) |
0 |
|
M-Buskodning av payloaddata. Varje datapost innehåller alla DIF/VIF/Värden enligt M-Bus. Notera att M-Bus använder LSB-ordning ("least significant byte" först) för data även här. |
|
1 (Gateway) |
0 |
|
Gateway för mätardata, det vill säga data för flera mätare finns i ett enda paket. Nyttolasten kan vara av olika typer beroende på vilket gränssnitt som används. Exempel på nyttolastformat är okrypterade eller krypterade M-Bus-data med ytterligare metadata. Den här kodartypen är för närvarande inte relevant för Elvacos produkter för mätaranslutning. |
|
2 (Syslog) |
0 |
|
Systemloggdatameddelande kodat som en hexadecimal ASCII-sträng. Nyckel 2 anger loggnivå. Mer information om värdena för respektive nivå finns i avsnittet om modulens systemlogg. |
|
3 (Transparent M-Bus) |
0 |
|
Transparenta M-Bus-data. Nyttolasten innehåller ett fullständigt (trådbundet) M-Bus-telegram, inklusive både rubrik och CRC. Den här kodartypen är relevant när det mätarstyrda mätläget Transparent används. |
|
4 (Anpassat format) |
0 |
|
Anpassat meddelandeformat. Nyttolasten innehåller M-Bus-kodade data och de returnerade fälten har konfigurerats i enheten. Ingen rubrik eller CRC ingår. Mätar-ID ingår i M-Bus-data och inte i basnamnet. |
Den här posten används för att skicka utökad information som inte kan skickas som en del av de normala mätaravläsningsdata. Ett typiskt användningsfall är ytterligare felkoder från mätaren eller enheten.
-
Formatet för den utökade informationen är specifikt för den valda kodaren. Se tabellen nedan.
-
Den detaljerade tolkningen av informationen är produktspecifik. Felkoderna för en mätare är till exempel specifika för en viss mätare även om de kodas med M-Bus.
-
Den kodas som ett SenML-datavärde
-
Den har ett namnfält med värdet ”I”
-
Den ska innehålla en tidsstämpel
-
Tidsstämpeln kan vara densamma som för en annan mätardatapost. Dessa två poster ska då betraktas som registrerade vid samma tidpunkt.
-
-
Den utökade informationen är en valfri post
|
Kodartyp |
Kodarversion |
Format för utökad felinformation |
|---|---|---|
|
0 (M-Bus) |
0 |
M-Bus-kodning av nyttolastdata. Varje datapost innehåller alla DIF/VIF/värden enligt M-Bus. Observera att M-Bus använder byteordningen LSB först för data och att den ska bevaras även här. |
|
1 (Gateway) |
0 |
Inte relevant för Elvacos moduler för mätaranslutning. |
|
2 (Syslog) |
0 |
Inte definierat ännu |
|
3 (Transparent M-Bus) |
0 |
M-Bus-kodning av nyttolastdata. Varje datapost innehåller alla DIF/VIF/värden enligt M-Bus. Observera att M-Bus använder byteordningen LSB först för data och att den ska bevaras även här. |
Exemplet nedan visar ett datapaket med två poster, den första med transparenta M-Bus-data och den andra med utökad information, som anges med "I".
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
På https://cbor.me/ finns en validator för CBOR. Observera att den inte förstår SenML eller M-Bus.
Notera
En liten bugg har identifierats i hex-tolkningen av negativa tal i validatorn. Ha detta i åtanke om du använder validatorn.
SenML/CBOR är att betrakta som en meddelandekodning. Den definierar hur meddelandena kodas, men inte det faktiska innehållet i meddelandena (vilka fält från mätaren som ingår). SenML/CBOR/M-Bus är en sådan kodning, men det kan finnas flera baserat på denna SenML/CBOR-specifikation och kodarversionsfältet ovan definierar exakt vilken typ och version som används.
Innehållet i meddelandet definieras av meddelandeformatet. Meddelandeformatet anger vilka fält som ska inkluderas i både den första och de efterföljande posterna i SenML-paketet.
Antalet poster som ingår i ett paket ställs in av avläsnings- och sändningsintervallen. Se Schemalagda Avläsningar för mer information. Om avläsningsintervallet är 120 minuter och sändningsintervallet är 1440 minuter kommer totalt 12 avläsningar att inkluderas.
Varje produkt kan ha olika maximala payloadstorlekar i ett enda telegram. Beroende på konfiguration (till exempel DTLS eller inte) kan payloadens nettostorlek variera. Därför ska enheten "fylla" så många telegram som krävs för att skicka data. Användaren måste definiera en konfiguration som ger en rimlig avvägning mellan strömförbrukning (skicka färre telegram) och funktionskrav (mycket data skickas).
Om en enhet är konfigurerad med ett meddelandeformat och många avläsningar kanske data inte får plats i ett enda telegram. I sådana fall ska flera telegram skickas och varje telegram ska vara helt självbeskrivet, det vill säga innehålla mätar-ID, tidsstämplar etc.
|
Parameter |
Värde |
|---|---|
|
Avläsningsintervall |
60 |
|
Sändningsintervall |
1440 (daglig) |
|
Meddelandekodning |
SenML/CBOR/M-Bus version 0 |
|
Meddelandeformat |
Standard |
|
Max sändningar per dag |
3 |
Detta exempel resulterar i sändning av ett meddelande per dag, innehållande 24 avläsningar, alla med innehållet definierat i meddelandeformatet Standard. Data kodas med SenML/CBOR/M-Bus. Maximalt 3 icke-sända meddelanden skickas varje gång (om meddelandena av någon anledning inte skickades "förra gången"). Så maximalt sända meddelanden per dag är 3 (innehåller 3x24=72 avläsningar, som täcker 3 dagar)
|
Parameter |
Värde |
|---|---|
|
Avläsningsintervall |
120 |
|
Sändningsintervall |
720 |
|
Meddelandekodning |
SenML/CBOR/M-Bus version 0 |
|
Meddelandeformat |
Tariff |
|
Max sändningar per dag |
2 |
Detta exempel resulterar i sändning av ett meddelande var 12:e timme, innehållande 6 avläsningar, alla med innehållet definierat i Tariffmeddelandeformatet. Data kodas med SenML/CBOR/M-Bus. Maximalt 2 osända sådana meddelanden skickas varje gång (om meddelandena av någon anledning inte skickades "förra gången"), så maximalt sända meddelanden per dag är 4 (innehåller 4x6=24 avläsningar, som omfattar 2 dagar).
Tabell 138. Inställningar för styrning av lokal åtkomst till enheten
|
LwM2M-resurs |
Inställning |
Beskrivning |
|---|---|---|
|
33906/./4 |
NFC aktiverat |
Boolesk. Slår på eller av enhetens NFC-gränssnitt. Om det är inaktiverat går det inte att konfigurera enheten lokalt. |
|
33906/./5 |
NFC-konfigurationslåst |
Boolesk. Slår på eller av NFC-konfigurationslåset. Om det är aktiverat går det inte att konfigurera enheten lokalt utan tillgång till PAK. |
Tabell 139. Inställningar för styrning av det automatiska NFC-konfigurationslåset
|
LwM2M-resurs |
Inställning |
Beskrivning |
|---|---|---|
|
33906/./71 |
Aktivera automatiskt NFC-konfigurationslås |
Boolesk. Slår på eller av det automatiska NFC-konfigurationslåset. Om det slås på aktiveras konfigurationslåset när tidsgränsen för automatisk låsning har löpt ut. Timern startar när enheten har aktiverats. |
|
33906/./72 |
Tidsgräns för automatiskt NFC-konfigurationslås |
Tid i minuter. Anger hur många minuter efter aktivering som ska gå innan konfigurationslåset aktiveras. Det automatiska NFC-konfigurationslåset måste vara aktiverat. |
-
Tryck och håll in tryckknappen i 5-15 sekunder.
-
Släpp knappen när den gröna LED-indikatorn lyser.
-
Tryck och håll in tryckknappen i 15-20 sekunder.
-
Släpp knappen när den röda LED-indikatorn lyser.
Vid en fabriksåterställning återgår enhetens inställningar till fabriksinställningarna. Alla mätardata och systemloggposter som lagras i modulen raderas också. Fabriksåterställning kan göras antingen via Elvaco OTC-appen eller på distans via LwM2M (resurs 3/./5).
Notera
Vid en fabriksåterställning återställs alla nätverks- och serverparametrar till fabriksinställningarna. Efter återställningen försöker enheten bootstrapa till Elvacos standardserver med automatisk APN-detektering.
Om SIM-kortet endast är konfigurerat för ett privat APN kan enheten fortfarande registreras i NB-IoT-nätverket, men den kan inte nå Elvacos bootstrap-server. Enheten blir logiskt oåtkomlig och måste konfigureras om lokalt.
Kommentarer (0 kommentarer)