Implemetation von Sensornode für MySensor, eines Parsers mit OBIS -Codes und Messdaten aus dem Han -Port eines norwegischen Hilfsmittelmessgeräts. Kann weiter laufen und ein 8 -MHz -Ardino mit niedriger Leistung.
Getestet auf einem Hafslund und auf Eidsiva Power Messgerät
Der Parser entschlüsselt einen MBUS -DataStream gemäß der norwegischen Hancode -Spezifikation - OBIS -Codes. Dieser Adapter ist relativ generisch, unabhängig von der Reihenfolge und Inhalt jeder Nachricht und jeder Datensatz.
Ref https://www.nek.no/wp-content/uploads/2018/11/aidon-han-interface-description-v10-id-34331.pdf und excerpt dlms ua blau buch: cosem interface klassen und obles identification System, excerpt dlms ua 1000-1 ed. 12.0
Hardware ist ein Arduino, das einen seriellen Datenstrom -Formular mit einem MBUs zum TTL -Adapter liest.
Der MBUS -Konverter ist mit dem Han -Port des Leistungsmessers verbunden. Der Adapter wird mit Hafslund Aidon Meter, einem Arduino My Sensorknoten und einem MBus -Adapter getestet: https://www.ebay.com/itm/tss721a-breakout-module-with-isolation/11335924361?hash=item1a64c72c89:g:gs0aoswf31b5pal:Rk:4:Pf:0
Der Arduino Mysensor -Knoten ist über ein 2,4 -MHz -Netznetzwerk mit einem Rasperry Domoticz -Kontroller verbunden. Ref Mysensor.org
Schlüsselwörter: AMS Powermeter, Han Port, Obis, Mbus, Cosem, Domotizc, Mysensoren
Software -Serie kann verwendet werden, um den Parser zu testen, aber auf einem 3,3 V auf 8 MHz kann dies bei der Analyse der einstündigen Nachricht RX TX verlangsamen.
Der Arduino mit niedriger Leistung 8MHz ist von diesem Typ: https://forum.mysensors.org/topic/2067/my-lim-2aa-battery-node
Dieser Arduno kann wahrscheinlich von der MBUS -Schnittstelle angetrieben werden. Dies wird nicht getestet. Derzeit wird die Karte mit 3,3 V über eine Streifenregulator von 5 V betrieben. Sie verbraucht 35 mA, einschließlich des Verlusts in der Regulierungsbehörde.
Die Daten von Mysensors werden in SendData () gesendet.
Dieser Parser ist ein rekursiver "Top -Down" -Parser, der von der Grammatik der Nachricht angetrieben wird, die in der obigen Referenz angegeben ist. Die grundlegende Grammatik ist:
Hdlcpackage = startmark, packagelen, FrameHeader, Nutzlast, FCC, Endmark
startmark = endmark = "7e"
packagelen = 4 byte; "A", 12 -Bit -Ganzzahl
FrameHeader = 9 Byte; Nicht überprüft, endet mit einem CRC
payload = dataheader, Array, Register*
dataheader = "0f 40 00 00 00 00"; könnte nicht repariert werden
array = «01», datalenen
datalen = 1 byte; Int
Register = Struktur, StruktureContent;
StructureContent = OctetString, ObiscodeandContent; SE -Code für Details
Header A0 2a 41 08 83 13 04 13 E6 E7 00: Frametyp: 10 Framelength: 42
Dataheader 0f 40 00 00 00 00
Typ & Len 01 01
02 03: Struktur - 3
09 06: Ocet-String Len 6
01 00 01 07 00 FF: Obis Kode '1.0.1.7.0.255
06: doppelt langer Nicht-Signed (32bit)
00 00 06 44: Dez. 1604
02 02: Struktur - 2
0f int8
00: 0
16: Enum
1b: Watt Active Power
6f 92 CRC
TODO: CRC ist nicht überprüft,
Testleistung bilden den MBUs
Umstrukturieren Sie den Parser in eine C ++ - Klasse
Es gibt einen ISUE, der die letzten Teile der "Ein -Stunden -Nachricht" überschreitet, aber es wirkt sich nicht auf die Daten aus.
7e
A13E410883137f8ee6e700
// Länge 318 0F4000000000
010e // Array 14
Meterid: 123456789012
MeterType: 6515
Obisversion: Aidon_v0001
Datum: 0-0-0-0-0-0-0-0-36-35-31-35-
ActivePowerq1q4: 1872
CumulativactiveIm: 2203350
ReactivePowerQ1Q2: 294
CurrentL1: 8.1000003814
PhaseVL1: 237.5000000000






Diese Software wird vom Autor und den Mitwirkenden bereitgestellt, wie es ist, und alle ausdrücklichen oder stillschweigenden Garantien, einschließlich, aber nicht beschränkt auf die impliziten Garantien für Handelsfähigkeit und Eignung für einen bestimmten Zweck, werden abgelehnt. In keinem Fall haftet der Autor oder die Mitwirkenden für direkte, indirekte, zufällige, besondere, vorbildliche oder Folgeschäden (einschließlich, aber nicht beschränkt auf die Beschaffung von Ersatzwaren oder Dienstleistungen; Verlust von Nutzung, Daten oder Gewinnen oder Gewinnstörungen). Möglichkeit eines solchen Schadens.