Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Gaszähler vzlogger in iobroker

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Gaszähler vzlogger in iobroker

Geplant Angeheftet Gesperrt Verschoben Hardware
2 Beiträge 1 Kommentatoren 176 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Deniz TeomanD Offline
    Deniz TeomanD Offline
    Deniz Teoman
    schrieb am zuletzt editiert von
    #1

    Guten Abend allerseits,

    in der Kiste mit dem Sammelsurium aus alten vzlogger Tagen habe ich den USB-Lesekopf mit Reed-Kontakt für den Gaszähler gefunden. Mir ist klar, dass ich den verbauten Reed Kontakt wie in diesem Thread einfach auf ein GPIO des Raspis umbauen kann und damit eine Lösung hätte.

    Re: Gelöst: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung

    Allerdings würde ich gerne eine Lösung finden um den per /dev/ttyUSB0 an einem Raspi empfangenen S0 Impuls an iobroker zu übermitteln (iobroker löuft auf einem anderen Host).

    Generell kommt ein Impuls wie folgt am Raspi an:

    strace -ttt -e read cat < /dev/ttyUSB0 
    1696117178.933970 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0`\17\2\0\0\0\0\0"..., 832) = 832
    1696117178.939941 read(0, 
    
    
    "\0", 131072) = 1
    1696118200.629333 read(0, ^C0x7fb4b2c000, 131072) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
    strace: Process 1083 detached
    

    Vielleicht stehe ich auf dem Schlauch, aber ich suche nach einer Möglichkeit den S0 Impuls zu loggen.

    Deniz TeomanD 1 Antwort Letzte Antwort
    0
    • Deniz TeomanD Deniz Teoman

      Guten Abend allerseits,

      in der Kiste mit dem Sammelsurium aus alten vzlogger Tagen habe ich den USB-Lesekopf mit Reed-Kontakt für den Gaszähler gefunden. Mir ist klar, dass ich den verbauten Reed Kontakt wie in diesem Thread einfach auf ein GPIO des Raspis umbauen kann und damit eine Lösung hätte.

      Re: Gelöst: Gaszähler-Ersatz für vorhandene vzlogger-Anbindung

      Allerdings würde ich gerne eine Lösung finden um den per /dev/ttyUSB0 an einem Raspi empfangenen S0 Impuls an iobroker zu übermitteln (iobroker löuft auf einem anderen Host).

      Generell kommt ein Impuls wie folgt am Raspi an:

      strace -ttt -e read cat < /dev/ttyUSB0 
      1696117178.933970 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0`\17\2\0\0\0\0\0"..., 832) = 832
      1696117178.939941 read(0, 
      
      
      "\0", 131072) = 1
      1696118200.629333 read(0, ^C0x7fb4b2c000, 131072) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
      strace: Process 1083 detached
      

      Vielleicht stehe ich auf dem Schlauch, aber ich suche nach einer Möglichkeit den S0 Impuls zu loggen.

      Deniz TeomanD Offline
      Deniz TeomanD Offline
      Deniz Teoman
      schrieb am zuletzt editiert von
      #2

      Hab es nun selbst mit einem Python-Skript gelöst. Das Skript liest kontinuierlich Impulse von dem über USB angeschlossenen USB-Lesekopf, aktualisiert basierend auf dessen Impulsen den Gaszählerstand, und sendet den aktuellen Zählerstand in Echtzeit an einen MQTT-Broker, während es den Zählerstand in einer Datei speichert, um den Fortschritt zwischen Neustarts beizubehalten.

      Hier mein Python-Skripts, falls das für jemanden hilfreich ist:

      1. Python-Skript

      import serial
      import paho.mqtt.client as mqtt
      import os
      
      # Konfiguration
      serial_port = '/dev/ttyUSB0'
      mqtt_broker = 'BROKER_ADDRESS'
      mqtt_port = 1883
      mqtt_topic = 'gaszaehler/stand'
      mqtt_username = None
      mqtt_password = None
      zaehlerstand_file = 'zaehlerstand.txt'
      
      # Überprüfen, ob die Zählerstand-Datei existiert
      if os.path.exists(zaehlerstand_file):
          with open(zaehlerstand_file, 'r') as file:
              zaehlerstand = float(file.read())
      else:
          zaehlerstand = float(input("Bitte geben Sie den aktuellen Zählerstand ein: "))
          with open(zaehlerstand_file, 'w') as file:
              file.write(str(zaehlerstand))
      
      # Callback, wenn mit dem MQTT-Broker verbunden
      def on_connect(client, userdata, flags, rc):
          if rc == 0:
              print("Connected to MQTT Broker!")
          else:
              print("Failed to connect, return code %d\n", rc)
      
      # MQTT-Client konfigurieren
      client = mqtt.Client()
      client.on_connect = on_connect
      
      if mqtt_username and mqtt_password:
          client.username_pw_set(mqtt_username, mqtt_password)
      
      # Verbindung zum MQTT-Broker herstellen
      client.connect(mqtt_broker, mqtt_port, 60)
      client.loop_start()
      
      # Seriellen Port öffnen
      ser = serial.Serial(serial_port, baudrate=9600, timeout=1)
      
      try:
          while True:
              raw_data = ser.readline()
              print(f"Raw: {raw_data}")
              
              if raw_data:
                  zaehlerstand += 0.01
                  print(f"Sending: {zaehlerstand}")
                  client.publish(mqtt_topic, str(zaehlerstand))
                  with open(zaehlerstand_file, 'w') as file:
                      file.write(str(zaehlerstand))
      except KeyboardInterrupt:
          pass
      finally:
          ser.close()
          client.loop_stop()
          client.disconnect()
      

      2. Systemd-Service erstellen

      Um das ganze beim Systemstart auszuführen erstelle ich noch dengaszaehler.service im Verzeichnis /etc/systemd/system/ mit folgendem Inhalt:

      [Unit]
      Description=Gaszaehler MQTT Service
      After=network.target
      
      [Service]
      ExecStart=/usr/bin/python3 /pfad/zum/skript.py
      WorkingDirectory=/pfad/zum
      Restart=always
      User=pi
      
      [Install]
      WantedBy=multi-user.target
      

      Ersetzen Sie /pfad/zum/skript.py mit dem vollständigen Pfad zu Ihrem Python-Skript und /pfad/zum mit dem Verzeichnis, in dem sich Ihr Skript befindet.

      3. Service aktivieren und starten

      Nachdem Sie dann der systemd-Service erstellt ist, kann man ihn mit folgendem Befehlen aktivieren und starten:

      sudo systemctl enable gaszaehler.service
      sudo systemctl start gaszaehler.service
      

      Nun sollte das Python-Skript beim Systemstart automatisch ausgeführt werden, und beim ersten Start wird es nach dem Zählerstand fragen. Der Zählerstand wird in der Datei zaehlerstand.txt gespeichert und bei jedem Neustart des Skripts daraus gelesen.

      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      639

      Online

      32.7k

      Benutzer

      82.4k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe