Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. sharky

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 6
    • Best 0
    • Groups 1

    sharky

    @sharky

    Starter

    0
    Reputation
    5
    Profile views
    6
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    sharky Follow
    Starter

    Latest posts made by sharky

    • RE: WMZ Sharky 775 einbinden

      Hallo @darkblu,
      ich bin gespannt auf Deine Ergebnisse. Soweit ich weiß, gibt es auch Micropython für den ESP32, vielleicht kann man das Programm ohne größere Änderung übernehmen? Mein Zeitbudget ist leider etwas knapp, da kann ich leider nicht noch eine weitere Plattform angehen.

      posted in Hardware
      S
      sharky
    • RE: WMZ Sharky 775 einbinden

      Hallo @darkblu, Tasmota kenne ich nur vom Hörensagen, habe aber nichts Schlechtes gehört. Der ESP32/Wemos D1 mini kommt für mich nicht in Frage, da ich mehrere Geräte auslesen will, dort aber nur eine serielle Schnittstellen wirklich frei ist. Prinzipiell sollte das aber für einen WMZ Sharky 775 funktionieren.

      Der zitierte Satz bezieht sich auf das, was in meinem obigen Programm in den Zeilen 30-37 passiert.

      posted in Hardware
      S
      sharky
    • RE: WMZ Sharky 775 einbinden

      @flispy Ich nehme mal an, dass der Volkszähler eine normale serielle Schnittstelle bereitstellt (also "COMxxx" unter Windows bzw. "/dev/ttyUSBxxx" unter Linux). Dann kannst Du das folgende Programm mal ausprobieren, Du musst nur ganz unten ggf. das "/dev/ttyUSB0" in Zeile 86 durch das in Deinem Fall richtige ersetzen. Außerdem muss mit

      pip install pySerial
      

      noch die Bibliothek für serielle Schnittstellen für Python installiert werden.

      Keine Erfolgsgarantie, ich habe es nur so trocken heruntergeschrieben ...

      import serial
      import time
      import binascii
      
      
      # === mbus_checksum ===============================================================================
      def mbus_checksum(data, skip):
          sum = 0
          for i in range(0, len(data)):
              if i >= skip:
                  sum = sum + int(data[i])
          return bytearray([sum & 255])
      
      
      # === check_result ================================================================================
      def check_result(where, ser):
          result = ser.read(1)
          if result == b'\xe5':
              return True
          else:
              if result is None:
                  return True
              else:
                  print(f'{where}: bad answer: {binascii.hexlify(bytearray(result), " ")}')
                  return False
      
      
      # === get_data ====================================================================================
      def get_data(ser):
          # 2.5: at 2400, 8N1 to send 2.2s of alternating bits
          ser.write(b'\x55' * 528)
      
          # time.sleep(2.0) # 2.0s sleep -> 0.8s break -> 1.2s until the buffer is empty ...
          time.sleep(1.2 + 170.0 / 2400.0)
      
          # 2.3: change parity
          ser.parity=serial.PARITY_EVEN
      
          # 2.7.1: do selection, use jokers for serial, manufacturer, ID, medium
          # 17 chars, 0.08s outgoing
          selection = b'\x68\x0B\x0B\x68\x53\xFD\x52\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF'
          ser.write(selection)
          ser.write(mbus_checksum(selection, 4))
          ser.write(b'\x16')
          # result arrives after 0.19s - 0.30s
          check_result('Selection', ser)
      
          # 3.1: do application reset 0x50 (to read instant values)
          # 10 chars, 0.05s outgoing
          app_reset = b'\x68\x04\x04\x68\x53\xFD\x50\x50'
          ser.write(app_reset)
          ser.write(mbus_checksum(app_reset, 4))
          ser.write(b'\x16')
          # result arrives after 0.08s
          check_result('Application reset', ser)
      
          # 3.2: do read data
          # 5 chars, 0.02s
          read_data = b'\x10\x7B\xFD'
          ser.write(read_data)
          ser.write(mbus_checksum(read_data, 1))
          ser.write(b'\x16')
          # result arrives after 0.07s, is 0.71s long (ca. 173 bytes)
          result = ser.read(200)  # 173 bytes plus some reserves
          if result is None:
              print('No data received')
          else:
              # debug output (hex dump) of received data
              print(f'user data bytes: {binascii.hexlify(bytearray(result), " ")}')
      
              # 2.7.2: do deselection
              # 5 chars, 0.02s
              deselection = b'\x10\x40\xfd'
              ser.write(deselection)
              ser.write(mbus_checksum(deselection, 0))
              ser.write(b'\x16')
              check_result('Deselection', ser)
      
              # return bytes received
          return result
      
      
      # === main ========================================================================================
      print('Starting up ...\n')
      # 2.5: 2400, 8N1 to send 2.2s of alternating bits, long timeout due to slow response by Ultramess
      ser = serial.Serial("/dev/ttyUSB0", baudrate=2400, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=0.5)
      
      while True:
          print('Reading #0')
          result = get_data(ser)
      
          time.sleep(5.0)
      
      posted in Hardware
      S
      sharky
    • RE: WMZ Sharky 775 einbinden

      @flispy Bei den NUCs kenne ich mich inzwischen nicht mehr so aus. Letzten Endes benötigt man ein Gerät mit digitalen Inputs/Outputs oder serieller Schnittstelle. Ein Raspberry Pico W kostet gerade mal 7 Euro plus Porto -- und man riskiert maximal den Pico W, wenn man was falsch verdrahtet. Vielleicht einfach einen anschaffen?

      posted in Hardware
      S
      sharky
    • RE: WMZ Sharky 775 einbinden

      @darkblu Mit einem Raspberry Pico W habe ich jetzt erfolgreich die Daten ausgelesen. Siehe https://github.com/mh-g/ultramess/tree/main

      Die von wavoigt verlinkte Kommunikationsbeschreibung ist veraltet, im github-Projekt verlinke ich einen neueren Stand der auch zu der Firmware meiner Ultramess / Sharky 775 passt. Ergänzende weitere Dokumente zu Meterbus sind aber trotzdem nötig. (Eine wirklich originelle Schnittstelle, die von WDV Molliné auch noch schlecht beschrieben ist.)

      posted in Hardware
      S
      sharky
    • RE: WMZ Sharky 775 einbinden

      Hallo @tom-h ,
      die optische Schnittstelle muss erst getriggert werden, indem diverse 0x55-Bytes bei 2400 Baud gesendet werden. Ich denke, ich komme im Laufe der zwei nächsten Wochen dazu, das in Python zu implementieren, da ich demnächst die nötige Hardware verfügbar habe. Oder hast Du schon eine fertige Lösung gefunden?
      Grüße Marco

      posted in Hardware
      S
      sharky
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo