Haus Garten Computer Technik
und analoge Fotografie

storeGasverbrauch.py

Python-Skript zum Erfassen von Gaszählerimpulsen

text/x-python storeGasverbrauch.py — 1.8 KB

Dateiinhalt

#!/usr/bin/env python3

from signal import pause

from influxdb import InfluxDBClient
from datetime import datetime
from gpiozero import LED, Button

button=Button(23)
led = LED(24)


def readAndStore():
    led.on()
    # fester unveraenderlicher timestring zum speichern eines wertes in influxdb
    timeStr = datetime.fromisoformat("2022-08-30")
    
    try:
      client = InfluxDBClient('influxdb.fritz.box', 8086, 'user', 'password', 'housesensors')
    except:
      print("error: kann nicht zum influxdb server verbinden!")  
    try:
      result=client.query('SELECT "gasverbrauch_sum" FROM "housesensors"."autogen"."sensormeta"')
      gasverbrauch_sum=result.raw["series"][0]["values"][0][1]
      print(gasverbrauch_sum)
      value=gasverbrauch_sum+0.01
    except:
      print("noch kein Gasverbrauch gespeichert")

    measurement = [
        {
            "measurement": "sensormeta",
            "tags" : {
                "host": "raspi_sensors"
            },
            "time" : timeStr,
            "fields" : {
                "gasverbrauch_sum": value,
            }
        }
    ]
    measurement2 = [
        {
            "measurement": "sensordata",
            "tags" : {
                "host": "raspi_sensors"
            },
            "fields" : {
                "gasverbrauch": value,
            }
        }
    ]

    try:
      client.write_points(measurement)
      print("{} stored at {}".format(value,timeStr))
    except:
      print("cannot insert current data point {} at {}".format(value,timeStr))  
    try:
      client.write_points(measurement2)
      print("{} stored".format(value))
    except:
      print("cannot insert current data point {}".format(value))  


def action_off():
  led.off()


def main():
    button.when_pressed = readAndStore
    button.when_released = action_off
    pause()


if __name__ == '__main__':
    main()