Startseite » QR-Code für diese Seite

Gas & Wasserzähler in Echtzeit auslesen – openHAB

18 Dezember 2022, 2.521x angezeigt, Kein Kommentar
Tags: , , , , , , ,

Was optimiert werden soll, muss zunächst gemessen werden! Grund genug, die Zählerstände aller Ressourcen im Haus in Echtzeit zu erfassen, sodass es einfach ist zu prüfen, ob Spar-Maßnahmen (Beispiel für Wasser sparen) funktionieren oder eben nicht. Im Folgenden habe ich euch einmal ein Tutorial zusammengeschrieben, wie ich den Volkszähler auf einen Raspberry Pi inkl. Gas- & Wasserzähler Anbindung realisiert habe. Los geht …

Hardware

Um das System aufzubauen, wird zunächst ein wenig Hardware benötigt. Ich habe mir einen Raspberry Pi 3 bei Ebay geschossen, ein paar zweiadrige Kabel im Baumarkt geholt (inkl. Kabelkanäle), sowie zwei Sensoren für meine Zähler. Informiert euch vorweg genau, was eure Zähler können und wie der Hersteller das Auslesen von außen ermöglicht. Auf der Webseite vom Volkszähler gibt es auch zahlreiche DIY-Anleitungen. Ich habe mich schließlich aber für eine Nicht-DIY Lösung entschieden. Dies ist der „Itron Cyble Sensor V2 (K1)“ (Wasser) und „Elster Impulsnehmer IN-Z62 für Elster-Balgengaszähler“ (Gas). Habt ihr alles beisammen, geht es mit der Verkabelung und Software los.

Die Verkablung ist denkbar einfach. Sowohl der Itron- als auch der Elster-Impulsgeber werden mit zwei Adern direkt am Raspberry Pi verkabelt. Dabei wird immer auf Erdung und einen GPIO zurückgegriffen. Den GPIO kann dann direkt von der Volkszähler-Software konfiguriert werden. Im Folgenden die beiden Impulsgeber, sodass ihr mal ein Bild davon bekommt, wie dies am Zähler aussieht.

Impulsgeber am Wasserzähler
Impulsgeber am Gaszähler

Volkszähler

Zunächst muss die Volkszähler Software installiert werden. Ich habe das komplette Raspberry-Image auf eine SD-Karte übertragen (Anleitung) und dann den Raspberry Pi an meinem normalen Display mit Maus und Tastatur hochgefahren. Dort habe ich dann zunächst den Locale auf de_DE geändert, das WLAN eingerichtet (Tipps), Passwörter angepasst und ein paar Updates nachgezogen. Ist dies geschehen, konnte ich mich gut via SSH auf das Gerät verbinden und konnte, Maus, Tastatur und Monitor wieder wegnehmen.

Im Volkszähler werden zwei Channel angelegt (für jeden Zähler). Dies ist hier gut erläutert. Jeder Channel ist ein S0-Verbrauchs-Channel mit der passenden Auflösung des jeweiligen Sensors (ist die Auflösung falsch, siehst du z.B. daran, dass der Volkszähler den zehnfachen, hundertfachen oder nur 1/10 des Verbrauchs anzeigt). Ich habe dann die beiden Impuls-Zähler mit jeweils zwei Kabel an den Raspberry Pi angeschlossen. Dies geschieht jeweils an GND und einem GPIO-Pin, welchen man – wie bereits oben geschrieben – direkt vom Volkszähler konfigurieren und auslesen lassen kann.

Konfiguration

Sind die beiden Channel über die Web-GUI angelegt, erhält man jeweils eine UUID zurück, unter dieser der Channel verwaltet wird. Diese braucht man sowohl für die Konfiguration, als auch später für die API im openHAB. Unter “/etc/vzlogger.conf” ist dann die Konfiguration zu finden. Hier werden die beiden Channel konfiguriert und u.a. mit dem passenden GPIO verknüpft. Hier meine Konfiguration ohne die UUIDs:

{
    "enabled": true,
    "allowskip": false,
    "protocol": "s0",
    "gpio": 4,
    "configureGPIO": true,
    "send_zero": false,
    "debounce_delay": 0,        
    "intervall": -1,
    "aggtime": -1,
    "aggfixedinterval": false,
    "channels": [
      {
         "uuid": "xxxxxxxxxxxx",
         "identifier": "Impulse",
         "api": "volkszaehler",
         "middleware": "http://127.0.0.1/middleware.php",
         "aggmode": "sum",
         "duplicates": 0
      }
    ]
},
{
    "enabled": true,
    "allowskip": false,
    "protocol": "s0",
    "gpio": 17,
    "configureGPIO": true,
    "send_zero": false,
    "debounce_delay": 0,
    "intervall": -1,
    "aggtime": -1,
    "aggfixedinterval": false,
    "channels": [
      {
         "uuid": "yyyyyyyyyyyy",
         "identifier": "Impulse",
         "api": "volkszaehler",
         "middleware": "http://127.0.0.1/middleware.php",
         "aggmode": "sum",
         "duplicates": 0
      }
    ]
},

Gibt es Probleme (ich hatte z.B. Fehler in der JSON), lassen sich diese mit “systemctl status vzlogger” prüfen, ob alles passend hochgefahren ist. Zudem gibt es zahlreiche Logs aus denen man Hinweis zu möglichen Konfigurationsfehlern entnehmen kann.

openHAB

Nachdem der Volkszähler fertig ist, will ich die Informationen natürlich noch in das openHAB übertragen. Dies geschieht über die API des Volkszählers, welche überschaubar ist und hier dokumentiert ist. Dafür habe ich sowohl für den Gaszähler, als auch für den Wasserzähler ein HTTP-Binding Thing angelegt. Hier sind die jeweils passenden Channel hinterlegt, sodass ich auf die Werte zugreifen kann. Dies ist die exemplarische Konfiguration von meinem Gaszähler:

UID: http:url:meter_gas
label: Gaszähler
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: true
  baseURL: http://XXX-IP-XXX:8080/data/XXX-UUID-XXX.json
  delay: 0
  stateMethod: GET
  refresh: 300
  commandMethod: GET
  contentType: application/json
  timeout: 30000
  bufferSize: 2048
channels:
  - id: today
    channelTypeUID: http:number
    label: Today
    description: null
    configuration:
      mode: READONLY
      stateExtension: ?from=-24 hours&to=now
      stateTransformation: JSONPATH:$.data.consumption
  - id: yesterday
    channelTypeUID: http:number
    label: Yesterday
    description: null
    configuration:
      mode: READONLY
      stateExtension: ?from=-48 hours&to=-24 hours
      stateTransformation: JSONPATH:$.data.consumption
  - id: thisWeek
    channelTypeUID: http:number
    label: This week
    description: null
    configuration:
      mode: READONLY
      stateExtension: ?from=-1 week&to=now
      stateTransformation: JSONPATH:$.data.consumption
  - id: lastWeek
    channelTypeUID: http:number
    label: Last week
    description: null
    configuration:
      mode: READONLY
      stateExtension: ?from=-2 week&to=-1 week
      stateTransformation: JSONPATH:$.data.consumption
  - id: complete
    channelTypeUID: http:number
    label: Complete
    description: null
    configuration:
      mode: READONLY
      stateExtension: ?from=2022-09-05 18:00&to=now
      stateTransformation: JSONPATH:$.data.consumption

Fazit

Alles in allem ist die Installation und auch die Software sehr “speziell” und nichts für Leute, welche sich nicht in der Informatik/Software oder Elektrotechnik auskennen. Bisher läuft das System sehr stabil und das openHAB bekommt alle Informationen, die ich brauche, aus den beiden Zählern. Nächster Schritt wird die Anpassung des Strom-Zählers sein, um dort auch die Informationen auszulesen. Viel Spaß beim Nachbauen. Plant auf jeden Fall ein paar Stunden für die Einrichtung ein :)

Tim Lochmüller Autor
Name: Tim Lochmüller
Webseite: http://360friends.de
Posts: 272 Posts

Hinterlasse einen Kommentar/Leserbrief!

Füge deinen Kommentar hinzu oder sende einen Trackback von deiner Webseite aus.
Du kannst zudem die Kommentare via RSS abonnieren .

Sei freundlich! Halt dich ans Thema! Kein Spam!

Mit dem Absenden bestätigst du, dass es sich um keinen Spam handelt.