Ankündigung

Einklappen
Keine Ankündigung bisher.

Mbus Daten auswerten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Zur Info: das SmartDevicePlugin ist derzeit in "meinem" Repo zum Testen verfügbar und läuft bisher stabil. Wer sich einarbeiten möchte - bitte

    Sobald die letzten Erweiterungen und Tests mit Onkelandy abgeschlossen sind, wollte ich das in develop packen...

    Kommentar


      #32
      Danke für die Informationen. Ich werde mir den Code dann anschauen, wenn ich die Hardware bekommen habe.

      Kommentar


        #33
        Falls jemand mitliest und auch einen Wärmemengenzähler (wie Landys+Gyt T550/Siemens UH50) über den MBus auslesen möchte:

        Ich habe mir den USB MBus Master Adapter (s.o.) besorgt und angeschlossen.
        Damit er von meinem BeagleBone Block mit Roberts Cape und Debian 10 (Buster) erkannt werden konnte, musste ich den Kernel von 4.19 auf 5.10 aktualsieren.
        Dann war der Adapter sichtbar:

        Code:
        shell> dmesg | grep tty
        shell> [2886.128360] usb 1-1.3: pl2303 converter now attached to ttyUSB1
        Der Adapter hat 2 Kanäle und ich musste hinsichtlich Anschluss (Polarität und Kanal) etwas herumprobieren, bis die LEDs Aktivitäten anzeigten.
        Danach konnte ich relativ viele Datenpunkte ausgeben lassen.

        Im Moment nutze ich dieses Skript, um Daten für den vzlogger aufbereitet ausgeben zu lassen.
        Ohne den sleep habe ich übrigens nur Fehlermeldungen bekommen.
        Code:
        #!/usr/bin/python
        
        import serial
        import meterbus
        import time
        import json
        
        address = 254
        
        with serial.Serial('/dev/ttyUSB1', 2400, 8, 'E', 1, 0.5) as ser:
            meterbus.send_ping_frame(ser, address)
            frame = meterbus.load(meterbus.recv_frame(ser, 1))
            assert isinstance(frame, meterbus.TelegramACK)
        
            time.sleep(1)
            time_stamp = time.time()
        
            meterbus.send_request_frame(ser, address)
            frame = meterbus.load(meterbus.recv_frame(ser, meterbus.FRAME_DATA_LENGTH))
            assert isinstance(frame, meterbus.TelegramLong)
        
            #print(frame.to_JSON())
        
            d_dict = json.loads( frame.to_JSON())
        
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][2]["type"] + ' = ' + str(d_dict["body"]["records"][2]["value"]/1000))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][3]["type"] + ' = ' + str(d_dict["body"]["records"][3]["value"]/1))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][4]["type"] + ' = ' + str(d_dict["body"]["records"][4]["value"]/1000))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][5]["type"] + ' = ' + str(d_dict["body"]["records"][5]["value"]/1))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][6]["type"] + ' = ' + str(d_dict["body"]["records"][6]["value"]/1))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][7]["type"] + ' = ' + str(d_dict["body"]["records"][7]["value"]/1))
            print(str(time_stamp) + ' : ' + d_dict["body"]["records"][8]["type"] + ' = ' + str(d_dict["body"]["records"][8]["value"]/1))​
        Die Integration in smarthomeNG/smartvisu kommt dann noch.


        Kommentar

        Lädt...
        X