Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Hilfe bei Gaszähler > Reed > InfluxDB > Grafana

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Hilfe bei Gaszähler > Reed > InfluxDB > Grafana

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      seppele last edited by

      So hab einen anderen Reed noch da gehabt, damit hats jetzt funktioniert durch das dranheben ab und zu funktioniert, an der Stelle die mir @Marc-Berg gezeit hat.

      Festmachen hab ichs noch nicht können da leider die Heinzung nur kurz eingeschalten hat, ist zum testen nicht so praktisch 🙂

      Denke aber mit dem Kontakt und dem Ort sollte das schon hinhauen.

      Wenn sie das nächste mal einschaltet versuche ich den Kontakt zu fixieren.

      1 Reply Last reply Reply Quote 0
      • S
        seppele last edited by

        So nachdem ich den Reed Kontakt zerlegt habe und dan die Richtige Stelle am Gaszähler geklebt habe wird nun fleissig gezählt.
        Auch das Eintragen in die InfluxDB funktioniert einwandfrei.

        Jetzt gehts ans Auswerten und da tu ich mich schwer.

        Ich hab es geschafft die eingetragenen Impulse und den Timesamp anzuzeigen.
        Da ich noch die Inlfuxql verwenden und nicht Flux Query Language kann ich mir auch nichts fertiges aus dem Netz laden 🙂

        Hier mein aktuelles Query:

        SELECT "q" FROM "autogen"."mqtt.0.esphome.binary_sensor.gaszaehler.state" WHERE $timeFilter ORDER BY time DESC
        

        Wenn ich das richtig verstanden habe dann hat mein Zähler lt Aufschrift 1Umdrehung=0,01m3

        Somit müsste ich jetzt ja immer den Impuls mit 0,01 Multiplizieren damit ich den Verbrauch habe.
        Kann ich in Grafana irgendwie berechnungen anstellen, ich hab noch nichts gefunden, oder kann mir jemand sagen wie ich mein SQL anpassen muss damit ich den Wert immer mit 0,01 Multipliziere in der Ausgabe?

        Ich stehe im Moment komplett an 😕

        Marc Berg 1 Reply Last reply Reply Quote 0
        • Marc Berg
          Marc Berg Most Active @seppele last edited by Marc Berg

          @seppele

          Ich weiß nicht, ob das ein so guter Ansatz ist, die ON/OFF Impulse in die DB zu schreiben!? Auswertungen werden dadurch aus meiner Sicht unnötig schwer.

          Ich würde mir einen Datenpunkt erstellen, dort den aktuellen Zählerstand reinschreiben und diesen per Skript/Blockly/Node-Red bei jedem "ON" Impuls um 0,01 erhöhen. Wenn du den Brennwert und die Zustandszahl kennst, kannst du parallel auch noch einen weiteren Datenpunkt mit den kWh schreiben. Diese Datenpunkte werden dann in die Influx geschrieben. Dazu gibt es dann wieder Anleitungen wie Sand am Meer, wie das zu visualisieren ist.

          Ein weiterer Vorteil ist, dann du dann regelmäßig den Zählerstand mit deinem Datenpunkt abgleichen kannst und auf einem Blick siehst, wie gut die Aufzeichnung funktioniert oder du ggf. noch nachjustieren musst.

          MartinP 1 Reply Last reply Reply Quote 0
          • S
            seppele last edited by

            Danke Marc,
            dann war ich wohl komplett auf den Holzweg 😞

            Ich hab deine Grundlegende Vorgangsweise denke ich verstanden aber absolut keinen Plan was ich genau tun muss.

            Was meinst du mit Datenpunkt genau, kannst du mir das kurz erläutern damit ich danach googlen kann? (Vermutllich einen Referenzpunkt zb. "Gasstand" in der InfluxDB?)

            Dann muss ich ein Script erstellen das den Zustandswechsel erkennt, anschliessend den letzten Zählerstand aus der Datenbank liest und diesen Wert+0,01 wieder in eine neue Zeile schreibt.
            Oder meinst du es wird genau die Zeile in der Db aktualsiert mit dem Wert+0,01 (Dann hätte ich ja keine Statistik mehr nur den Zählerstand?)

            Sorry für die dummen Fragen aber ich bin mittlerweise etwas verwirrt 🙂
            War doch deutlich komplizierter bis jetzt als gedacht.

            Marc Berg 1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP @Marc Berg last edited by

              @marc-berg Ich habe so viel Ärger mit "Prellern", dass ich den Nullpunkt-Offset in einem eigenen View bearbeitet habe ..

              1 Reply Last reply Reply Quote 0
              • Marc Berg
                Marc Berg Most Active last edited by

                @martinp sagte in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:

                Ich habe so viel Ärger mit "Prellern", dass ich den Nullpunkt-Offset in einem eigenen View bearbeitet habe ..

                Diesen Reed Kontakt:

                https://www.ebay.de/itm/114809994326

                habe ich an einen Aqara Türsensor gelötet. Preller: Null

                MartinP 1 Reply Last reply Reply Quote 0
                • Marc Berg
                  Marc Berg Most Active @seppele last edited by

                  @seppele sagte in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:

                  dann war ich wohl komplett auf den Holzweg

                  So komplett sicher nicht, dein Ansatz funktioniert bestimmt auch irgendwie.

                  Was meinst du mit Datenpunkt genau, kannst du mir das kurz erläutern damit ich danach googlen kann? (Vermutllich einen Referenzpunkt zb. "Gasstand" in der InfluxDB?)

                  So ein Datenpunkt wie dein "mqtt.0.esphome.binary_sensor.gaszaehler.state". Nur halt von dir manuell angelegt unter "0_userdata.0. ..."

                  Dann muss ich ein Script erstellen das den Zustandswechsel erkennt, anschliessend den letzten Zählerstand aus der Datenbank liest und diesen Wert+0,01 wieder in eine neue Zeile schreibt.

                  Ne, die Datenbank ist da noch außen vor. Ich würde einfach den alten Wert aus dem Datenpunkt lesen, per Skript 0,01 addieren und danach den neuen Wert in den gleichen Datenpunkt zurück schreiben. Über den InfluxDB-Adapter schreibst du dann die Änderungen in die Datenbank.

                  1 Reply Last reply Reply Quote 0
                  • MartinP
                    MartinP @Marc Berg last edited by MartinP

                    @marc-berg Bei meinem Gaszähler ist das kreisende Metallteil im Zähler kein Magnet, der induktive Näherungsschalter hat die Angewohnheit viele Fehl-Übergänge zu detektieren. Ich habe den Mindest-Abstand der Pulse schon auf 10 Sekunden gesetzt.
                    Auswertung nicht mehr mit Tasmota-Zählern, sondern per Blockly

                    a991f584-e04d-4c8c-a7f0-6e05ba627e0f-grafik.png

                    Pro Tag ca. 1...3 Fehl Impulse (überzählig)

                    Wenn ioBroker oder der LXC-Container neu gestartet werden muss, gehen natürlich auch Pulse verloren, und es muss ein neuer Start-Kubikmeter-Stand für den Puls-Zähler ermittelt werden..

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      Markus 7 @MartinP last edited by Markus 7

                      @seppele : Vielleicht als kleine Hilfestellung, da ich genau vor der gleichen Herausforderung stand:

                      Ich habe mir manuelle Datenpunkte mit den entsprechenden Variablen wie Gaspreis, Zustandszahl etc. gesetzt:

                      5665acfc-5de0-427a-87bf-22f31cb6ba35-image.png

                      Dann über Alias den Impuls vom Reedkontakt abgegriffen:

                      b38bb214-db2e-4fef-85f9-bbcfcce63513-image.png

                      Dann über Blockly die entsprechenden Berechnungen gemacht:

                      ae0fc088-e651-4417-b30d-6280cc1068f5-image.png

                      Und abschließend die Werte über InfluxDB in Grafana geschaufelt:

                      f5cd9c5b-b3a9-4281-b37c-6c87853ee21f-image.png

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        seppele @Markus 7 last edited by

                        Vielen Dank euch alle dass ihr mich so unterstützt!!

                        @markus-7 meinst du er wäre möglich das du mit das blockly script und das dashboard von grafana zur verfügung stellst damit ich das als referenz verwenden kann und für meine bedürfnisse umbauen kann?
                        Wenn man was nachvollziehen kann kapiert man deutlich schneller 😀
                        Wenn nicht ist das natürlich auch vollkommen ok und ich danke dir für die Auflistung!

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Markus 7 @seppele last edited by Markus 7

                          @seppele

                          Natürlich, das ist kein Problem:

                          Nochmal zuerst meine Vorgehensweise:

                          1. Abgreifen der Impulse analogen Zählwerk des Gaszählers mittels Reedkontakt. Meine, es ist die vorletzte Stelle des Zählwerkes, dass aber dann testen und ausprobieren)
                          2. Den Impuls über den Schalter-Eingang eines Shellys abgreifen (bei mir über MQTT)
                          3. Über ein Blockly die Statusänderung des Shellys abgreifen (= Zählwerk-Umdrehung) und in den Verbräuchen m3, kWh und EUR aufsummieren.

                          c9642e0d-17b4-4821-a3c0-2c8e2c0d1d61-image.png

                          <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="p|rxBglyht9*Em{vW+i]" x="-1187" y="-836">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                            <field name="CONDITION">any</field>
                            <field name="ACK_CONDITION"></field>
                            <value name="OID0">
                              <shadow type="field_oid" id="h,~q9gADA6$E~GUO4tt{">
                                <field name="oid">mqtt.0.Strom_Gastherme_Solarthermie_ShellyPlus2pm.status.input:0</field>
                              </shadow>
                            </value>
                            <statement name="STATEMENT">
                              <block type="update" id="eL28Vxm14qEa{ti-/1*J">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_m3</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_rndfixed" id=".x{Z?kn}cz.DZ.FV5TnI">
                                    <field name="n">3</field>
                                    <value name="x">
                                      <shadow type="math_number" id=",n}IjByak[yb!LCB{6[L">
                                        <field name="NUM">3.1234</field>
                                      </shadow>
                                      <block type="math_arithmetic" id="l8i9[#Y2PA1GO|AGS1ES">
                                        <field name="OP">ADD</field>
                                        <value name="A">
                                          <shadow type="math_number" id=";upHQ4m:GS.ANRrWdMWp">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="get_value" id="M`5@(`Q8-1ind)9lA,k!">
                                            <field name="ATTR">val</field>
                                            <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_m3</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <shadow type="math_number" id="w7p*K);K|cRA|[qAU*Q6">
                                            <field name="NUM">0.005</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <next>
                                  <block type="update" id="]YMIUu|j;5/nEvEU[{SJ">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_kWh</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="math_rndfixed" id="E?L}n4lYNIe+vxxlYkeM">
                                        <field name="n">4</field>
                                        <value name="x">
                                          <shadow type="math_number" id="WWoHV9r4g%YogY)5Tv*}">
                                            <field name="NUM">3.1234</field>
                                          </shadow>
                                          <block type="math_arithmetic" id=";v)}2Z!w*OHIV-|4$l2e">
                                            <field name="OP">MULTIPLY</field>
                                            <value name="A">
                                              <shadow type="math_number" id="U]]HkK|*N([O`Q.ehM[.">
                                                <field name="NUM">1</field>
                                              </shadow>
                                              <block type="get_value" id="Mfw*%e39RM9igl`!gW.6">
                                                <field name="ATTR">val</field>
                                                <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_m3</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <shadow type="math_number" id="puF9xJy00eL6OXwrETM@">
                                                <field name="NUM">1</field>
                                              </shadow>
                                              <block type="math_arithmetic" id="CfVuwA)O=J;dSaAlVRF7">
                                                <field name="OP">MULTIPLY</field>
                                                <value name="A">
                                                  <shadow type="math_number" id="AnLSZK)]Gy6XvY@bq}C1">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="get_value" id="USnrUs7H#1D~C#Icf7BT">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">0_userdata.0.2_Gas_G.2_1_G_Preis.G_Brennwert_20230520</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number" id="G|=SGw}./wa4k#IV~HzG">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="get_value" id="pv?fs.`5QG!a]9CC=.vq">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">0_userdata.0.2_Gas_G.2_1_G_Preis.G_Zustandszahl_20230520</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="update" id="c`;mgL@KAnKIW/apislC">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_EUR</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="math_rndfixed" id="_!:Y%feK=I4b!33u*I-)">
                                            <field name="n">2</field>
                                            <value name="x">
                                              <shadow type="math_number" id="V-17vzNaWhjv1N|N/vy6">
                                                <field name="NUM">3.1234</field>
                                              </shadow>
                                              <block type="math_arithmetic" id="%7IPv/dyfb=L7vnwM2|_">
                                                <field name="OP">MULTIPLY</field>
                                                <value name="A">
                                                  <shadow type="math_number" id="Rh.v#}#8ddb@lWAh#0]/">
                                                    <field name="NUM">1</field>
                                                  </shadow>
                                                  <block type="get_value" id="BV$Q1A5YT^B+a0xBC#{s">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">0_userdata.0.2_Gas_G.2_2_G_Zähler.G_Verbrauch_kWh</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <shadow type="math_number" id="A=Gi,82yPW1gvT@:)S(G">
                                                    <field name="NUM">0</field>
                                                  </shadow>
                                                  <block type="get_value" id="{O{J{Q@Ry!ure]ud*BJ$">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">0_userdata.0.2_Gas_G.2_1_G_Preis.G_Preis_kWh_20230520</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                          

                          Wie ich gerade bemerke, greife ich im Blockly direkt den Shelly ("Statusänderung") ab und nicht wie vorher geschrieben den extra dafür eingerichteten Alias, der aus der Shelly-MQTT-Ausgabe "{"id":0,"state":false}" den vereinfachten Datenpunkt "false" bzw. "true" setzt. Viele Wege führen nach Rom 😉

                          1. Die in 3. aktualisierten Verbräuche an InfluxDB übergeben.

                          704963be-9e53-4ccd-86ab-e3adcf22aa17-image.png

                          In InfluxDB sieht die Abfrage dann so aus:

                          from(bucket: "iobroker_0")
                            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                            |> filter(fn: (r) => r["_measurement"] == "G_Verbrauch_m3")
                            |> filter(fn: (r) => r["_field"] == "value")
                            |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                            |> yield(name: "mean")
                          
                          1. In Grafana dann die InfluxDB Abfrage in verschiedene Ansichten, Diagramme etc. einbinden. Bei mir ist das ganze noch ziemlich "work in progress", ich bin immer noch am rumspielen.
                          {
                            "annotations": {
                              "list": [
                                {
                                  "builtIn": 1,
                                  "datasource": {
                                    "type": "grafana",
                                    "uid": "-- Grafana --"
                                  },
                                  "enable": true,
                                  "hide": true,
                                  "iconColor": "rgba(0, 211, 255, 1)",
                                  "name": "Annotations & Alerts",
                                  "type": "dashboard"
                                }
                              ]
                            },
                            "editable": true,
                            "fiscalYearStartMonth": 0,
                            "graphTooltip": 0,
                            "id": 9,
                            "links": [],
                            "liveNow": false,
                            "panels": [
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "thresholds"
                                    },
                                    "decimals": 3,
                                    "mappings": [],
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        },
                                        {
                                          "color": "red",
                                          "value": 80
                                        }
                                      ]
                                    },
                                    "unit": "m3"
                                  },
                                  "overrides": []
                                },
                                "gridPos": {
                                  "h": 4,
                                  "w": 2,
                                  "x": 0,
                                  "y": 0
                                },
                                "id": 4,
                                "options": {
                                  "colorMode": "value",
                                  "graphMode": "none",
                                  "justifyMode": "auto",
                                  "orientation": "auto",
                                  "reduceOptions": {
                                    "calcs": [
                                      "lastNotNull"
                                    ],
                                    "fields": "",
                                    "values": false
                                  },
                                  "textMode": "auto"
                                },
                                "pluginVersion": "10.0.3",
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "from(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_m3\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n  |> yield(name: \"mean\")",
                                    "refId": "A"
                                  }
                                ],
                                "title": "Zählerstand",
                                "type": "stat"
                              },
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "thresholds"
                                    },
                                    "mappings": [],
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        }
                                      ]
                                    },
                                    "unit": "kwatth"
                                  },
                                  "overrides": []
                                },
                                "gridPos": {
                                  "h": 4,
                                  "w": 2,
                                  "x": 2,
                                  "y": 0
                                },
                                "id": 3,
                                "options": {
                                  "colorMode": "value",
                                  "graphMode": "none",
                                  "justifyMode": "auto",
                                  "orientation": "auto",
                                  "reduceOptions": {
                                    "calcs": [
                                      "lastNotNull"
                                    ],
                                    "fields": "",
                                    "values": false
                                  },
                                  "textMode": "auto"
                                },
                                "pluginVersion": "10.0.3",
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "from(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_kWh\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n  |> yield(name: \"mean\")",
                                    "refId": "A"
                                  }
                                ],
                                "title": "Verbrauch",
                                "type": "stat"
                              },
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "thresholds"
                                    },
                                    "decimals": 2,
                                    "mappings": [],
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        },
                                        {
                                          "color": "red",
                                          "value": 80
                                        }
                                      ]
                                    },
                                    "unit": "EUR"
                                  },
                                  "overrides": []
                                },
                                "gridPos": {
                                  "h": 4,
                                  "w": 2,
                                  "x": 4,
                                  "y": 0
                                },
                                "id": 7,
                                "options": {
                                  "colorMode": "value",
                                  "graphMode": "none",
                                  "justifyMode": "auto",
                                  "orientation": "auto",
                                  "reduceOptions": {
                                    "calcs": [
                                      "last"
                                    ],
                                    "fields": "",
                                    "values": false
                                  },
                                  "textMode": "auto"
                                },
                                "pluginVersion": "10.0.3",
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "from(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_EUR\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n  |> yield(name: \"mean\")",
                                    "refId": "A"
                                  }
                                ],
                                "title": "Kosten",
                                "type": "stat"
                              },
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "thresholds"
                                    },
                                    "custom": {
                                      "align": "auto",
                                      "cellOptions": {
                                        "type": "color-text"
                                      },
                                      "inspect": false,
                                      "minWidth": 50,
                                      "width": 100
                                    },
                                    "mappings": [],
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        }
                                      ]
                                    },
                                    "unit": "currencyEUR"
                                  },
                                  "overrides": [
                                    {
                                      "matcher": {
                                        "id": "byName",
                                        "options": "Time"
                                      },
                                      "properties": [
                                        {
                                          "id": "unit",
                                          "value": "time: DD.MM.YY"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "gridPos": {
                                  "h": 12,
                                  "w": 3,
                                  "x": 12,
                                  "y": 0
                                },
                                "hideTimeOverride": true,
                                "id": 6,
                                "interval": "1d",
                                "options": {
                                  "cellHeight": "sm",
                                  "footer": {
                                    "countRows": false,
                                    "fields": [
                                      "value"
                                    ],
                                    "reducer": [
                                      "sum"
                                    ],
                                    "show": true
                                  },
                                  "showHeader": false
                                },
                                "pluginVersion": "10.0.3",
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "import \"timezone\" option location = timezone.location(name:\"Europe/Berlin\")\r\nfrom(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_EUR\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> difference(nonNegative: true, columns: [\"_value\"], keepFirst: false)\r\n  |> aggregateWindow(every: 1d, fn: sum, createEmpty: false, timeSrc: \"_start\")\r\n  |> yield(name: \"difference\")",
                                    "refId": "A"
                                  }
                                ],
                                "timeFrom": "now-12M",
                                "title": "Gaskosten",
                                "type": "table"
                              },
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "palette-classic"
                                    },
                                    "custom": {
                                      "axisCenteredZero": false,
                                      "axisColorMode": "text",
                                      "axisLabel": "",
                                      "axisPlacement": "auto",
                                      "barAlignment": 0,
                                      "drawStyle": "line",
                                      "fillOpacity": 0,
                                      "gradientMode": "none",
                                      "hideFrom": {
                                        "legend": false,
                                        "tooltip": false,
                                        "viz": false
                                      },
                                      "lineInterpolation": "linear",
                                      "lineWidth": 1,
                                      "pointSize": 5,
                                      "scaleDistribution": {
                                        "type": "linear"
                                      },
                                      "showPoints": "auto",
                                      "spanNulls": false,
                                      "stacking": {
                                        "group": "A",
                                        "mode": "none"
                                      },
                                      "thresholdsStyle": {
                                        "mode": "off"
                                      }
                                    },
                                    "mappings": [],
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        },
                                        {
                                          "color": "red",
                                          "value": 80
                                        }
                                      ]
                                    }
                                  },
                                  "overrides": []
                                },
                                "gridPos": {
                                  "h": 8,
                                  "w": 12,
                                  "x": 0,
                                  "y": 4
                                },
                                "id": 1,
                                "options": {
                                  "legend": {
                                    "calcs": [],
                                    "displayMode": "list",
                                    "placement": "bottom",
                                    "showLegend": true
                                  },
                                  "tooltip": {
                                    "mode": "single",
                                    "sort": "none"
                                  }
                                },
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "from(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_kWh\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\r\n  |> yield(name: \"mean\")",
                                    "refId": "A"
                                  }
                                ],
                                "title": "Gasverbrauch [kWh]",
                                "type": "timeseries"
                              },
                              {
                                "datasource": {
                                  "type": "influxdb",
                                  "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                },
                                "fieldConfig": {
                                  "defaults": {
                                    "color": {
                                      "mode": "palette-classic"
                                    },
                                    "custom": {
                                      "axisCenteredZero": false,
                                      "axisColorMode": "text",
                                      "axisLabel": "",
                                      "axisPlacement": "auto",
                                      "fillOpacity": 80,
                                      "gradientMode": "opacity",
                                      "hideFrom": {
                                        "legend": false,
                                        "tooltip": false,
                                        "viz": false
                                      },
                                      "lineWidth": 1,
                                      "scaleDistribution": {
                                        "type": "linear"
                                      },
                                      "thresholdsStyle": {
                                        "mode": "off"
                                      }
                                    },
                                    "mappings": [],
                                    "max": 20,
                                    "thresholds": {
                                      "mode": "absolute",
                                      "steps": [
                                        {
                                          "color": "green",
                                          "value": null
                                        }
                                      ]
                                    },
                                    "unit": "kwatth"
                                  },
                                  "overrides": [
                                    {
                                      "matcher": {
                                        "id": "byName",
                                        "options": "Time"
                                      },
                                      "properties": [
                                        {
                                          "id": "unit",
                                          "value": "time: DD:MMM"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "gridPos": {
                                  "h": 14,
                                  "w": 24,
                                  "x": 0,
                                  "y": 12
                                },
                                "id": 2,
                                "options": {
                                  "barRadius": 0,
                                  "barWidth": 0.86,
                                  "fullHighlight": false,
                                  "groupWidth": 0.7,
                                  "legend": {
                                    "calcs": [],
                                    "displayMode": "list",
                                    "placement": "bottom",
                                    "showLegend": false
                                  },
                                  "orientation": "auto",
                                  "showValue": "auto",
                                  "stacking": "none",
                                  "tooltip": {
                                    "mode": "single",
                                    "sort": "none"
                                  },
                                  "xField": "Time",
                                  "xTickLabelRotation": 90,
                                  "xTickLabelSpacing": 0
                                },
                                "pluginVersion": "10.0.3",
                                "targets": [
                                  {
                                    "datasource": {
                                      "type": "influxdb",
                                      "uid": "fe8a6018-4149-4ba0-b895-92b7c98d857e"
                                    },
                                    "query": "  import \"timezone\" option location = timezone.location(name:\"Europe/Berlin\")\r\n  from(bucket: \"iobroker_0\")\r\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\r\n  |> filter(fn: (r) => r[\"_measurement\"] == \"G_Verbrauch_kWh\")\r\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\r\n  |> difference(nonNegative: true, columns: [\"_value\"], keepFirst: false)\r\n  |> aggregateWindow(every: 1d, fn: sum, createEmpty: true, timeSrc: \"_start\")\r\n  |> yield(name: \"difference\")",
                                    "refId": "A"
                                  }
                                ],
                                "title": "Gasverbrauch [kWh/Tag]",
                                "type": "barchart"
                              }
                            ],
                            "refresh": "",
                            "schemaVersion": 38,
                            "style": "dark",
                            "tags": [],
                            "templating": {
                              "list": []
                            },
                            "time": {
                              "from": "now-6M",
                              "to": "now"
                            },
                            "timepicker": {},
                            "timezone": "",
                            "title": "Gasverbrauch",
                            "uid": "e5ebcb70-ccf6-4a87-a6a9-af1401f51eac",
                            "version": 18,
                            "weekStart": ""
                          }
                          

                          Hoffe das hilft dir ein bisschen weiter 🙂

                          1 Reply Last reply Reply Quote 0
                          • S
                            seppele last edited by seppele

                            Vielen vielen Dank @Markus-7
                            das hat mir sehr weitergeholfen, war zwar den ganzen Tag nicht zuhause, konnte aber in kurzer Zeit schon einiges davon umsetzen.

                            Hab als erstes die Datenpunkte angelegt, war eigentlich ganz einfach.
                            gasverbrauch-datenpunkte.jpg

                            Anschliessend hab ich dann ein Blockly Script anhanden deinem Bild nachgebaut mit meinen Datenpunkten.
                            gasverbrauch-blockly-script-1.jpg

                            Dann hab ich noch das speichern dens Datenpunkts die DB eingestellt.

                            Und jetzt muss ich noch das Dashboard in Grafana zusammenbasteln.
                            Da hab ich aber noch ein paar schwarze Flecken, diese Flux Query Language ist ja ggrauenhaft, hab das jetzt mal voin influxql umgestellt, jetzt geht zwar mein restliches Zeug nichtmehr aber egal mann muss ja auch mal mit der Zeit gehen.

                            Jedenfalls brauche ich noch ein paar Infos:
                            Wie finde ich das passende Bucket meins Datenpunkts, hier mal ein Beispiel Datenpunkt:

                            {
                              "common": {
                                "name": "Zaehlerstand_m3",
                                "desc": "Manuell erzeugt",
                                "role": "state",
                                "type": "number",
                                "read": true,
                                "write": true,
                                "def": 0,
                                "custom": {
                                  "influxdb.0": {
                                    "enabled": true,
                                    "storageType": "",
                                    "aliasId": "Zaehlerstand_m3",
                                    "debounceTime": 0,
                                    "blockTime": 0,
                                    "changesOnly": true,
                                    "changesRelogInterval": 0,
                                    "changesMinDelta": 0,
                                    "ignoreBelowNumber": "",
                                    "disableSkippedValueLogging": false,
                                    "enableDebugLogs": false,
                                    "debounce": 1000
                                  }
                                }
                              },
                              "type": "state",
                              "native": {},
                              "_id": "0_userdata.0.Gas.Zaehlerstand_m3",
                              "acl": {
                                "object": 1636,
                                "state": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator"
                              },
                              "from": "system.adapter.admin.0",
                              "user": "system.user.admin",
                              "ts": 1708875595753
                            }
                            

                            Wäre hier das Bucket das ich in der Query verwenden müsste influxdb.0

                            Wenn ich jetzt deine Abfrage auf mein Feld anwenden wollte müsste ich das dann so ändern: (cih habe den ganzen ID Pfad da genommen, oder reicht da diese aliasid auch aus?)

                            from(bucket: "influxdb.0")
                              |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                              |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Gas.Zaehlerstand_m3")
                              |> filter(fn: (r) => r["_field"] == "value")
                              |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
                              |> yield(name: "mean")
                            

                            Jedenfalls bin ich schon weit gekommen und hab viel gelernt, diese Datenpunkte und die einfache Handhabung mit Blockly eröffnen ja extreme Möglichkeiten 🙂

                            M 1 Reply Last reply Reply Quote 1
                            • M
                              Markus 7 @seppele last edited by

                              @seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:

                              Wie finde ich das passende Bucket meins Datenpunkts, hier mal ein Beispiel Datenpunkt:

                              Ich weiß nicht, ob ich dich richtig verstehe, denn unter "Bucket" habe ich nur ein einziges, in das mir alle Daten von ioBroker reingeschaufelt werden. Man kann aber auch bei größeren bzw. sehr vielen Datenpunkten auch mehrere Buckets definieren. Und das Bucket definierst du ja in ioBroker selbst in der influxdb.0 Instanz (hier "DB Name" genannt):

                              b71a9295-0687-4c5c-a409-31ea94f65abb-image.png

                              In InfluxDB selber gehe ich diesen Weg, um die richtige Abfrage zu finden:

                              f14bf79f-4f53-44da-abdf-984e7d2f68be-image.png

                              Das ergibt dann diese Abfrage, die ich mit copy&paste in Grafana einfüge:

                              a492ce93-620f-476b-bf86-c3d35c8488b1-image.png

                              282386ef-a681-40a4-8eef-a6bd2f645980-image.png

                              S MartinP 2 Replies Last reply Reply Quote 0
                              • S
                                seppele @Markus 7 last edited by

                                @markus-7 das war genau mrine Frage!! 😀
                                Den Dataexplorer hab ich noch nicht gefunden, vielleicht muss ich mein grafana updaten, ich hab ja nur die Query Language umgestellt.

                                Probier ich morgen gleich aus. 👍

                                M 1 Reply Last reply Reply Quote 0
                                • MartinP
                                  MartinP @Markus 7 last edited by MartinP

                                  @markus-7 said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:

                                  Ich weiß nicht, ob ich dich richtig verstehe, denn unter "Bucket" habe ich nur ein einziges, in das mir alle Daten von ioBroker reingeschaufelt werden.

                                  Es gibt schon Gründe für mehrere Buckets. Bisher habe ich nur eines, aber ggfs. werde ich mir ein Zweites mit deutlich längerer Retain Time anlegen, in das dann z.b. Tageswerte für Energieverbrauch kommen... Das aktuelle Bucket räumt alles ab, was älter, als 12 Monate ist...

                                  1 Reply Last reply Reply Quote 1
                                  • M
                                    Markus 7 @seppele last edited by

                                    @seppele said in Hilfe bei Gaszähler > Reed > InfluxDB > Grafana:

                                    Den Dataexplorer hab ich noch nicht gefunden, vielleicht muss ich mein grafana updaten,

                                    Nur, dass wir nicht aneinander vorbeischreiben: Den Dataexplorer gibt es in InfluxDB, nicht in Grafana 😉

                                    S 1 Reply Last reply Reply Quote 0
                                    • S
                                      seppele @Markus 7 last edited by seppele

                                      @markus-7 ich hab influx über die console installiert, ich glaub ich hab garkein webinterface dazu, wenn ich ip:8086 aufrufe bekommf ich nur „page not found“

                                      das interface hätte alled deuhlich vereinfacht, hast du eine idee dazu? 🫣

                                      Ich habe InfluxDB 1.6.7 installiert, muss ich das updaten?

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Markus 7 last edited by

                                        @seppele

                                        Leider kenne ich mich da nicht wirklich aus, da ich auch das meiste nur "stur nach Anleitung" installieren konnte.
                                        Vielleicht hilft dir dieser Tread weiter: https://forum.iobroker.net/topic/39887/geklärt-problem-bei-influx-installation/33

                                        Ansonsten müssten da mal hier die Profis ran, mir hat man auch schon viel (und erfolgreich) hier geholfen 🙂

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          seppele @Markus 7 last edited by seppele

                                          Bevor ich das InfluxDB Problem weiter behandle muss ich noch die Falschzählungen des Reedkontakts lösen.

                                          Ich hab das Script wie gesagt aus dem Netz und hätte dazu ein paar Fragen, ich hoffe jemand kann mir dabei helfen.

                                          Wozu brauch ich folgenden Part, hab kein Homeassistant laufen, konnte das durch google nicht lösen.
                                          Kann ich das rauslöschen?

                                          # Enable Home Assistant API
                                          api:
                                            encryption:
                                              key: "2342+243532+234532="
                                          

                                          Jetzt zum eigentlichen Problem:
                                          Aktuell zähle ich leider doppelt da ich mit einem Blockly Script bei Änderung des Status eine Zählung mache, da aber die Rückstellung von on auf off auch eine Änderung ist zähle ich jede Umdrehung doppelt.
                                          Hier der Teil aus der esphome yaml der den Status erfasst:

                                          # Reed Kontakt an GPIO5
                                          binary_sensor:
                                            - platform: gpio
                                              name: "Gaszaehler"
                                              id: Gaszaehler
                                              pin:
                                                number: 5
                                                inverted: true
                                                mode: INPUT_PULLUP
                                              filters:
                                                # debounce, delay um Doppelzählungen zu vermeiden
                                                - delayed_off: 1s
                                              on_press:
                                                then:
                                                  - mqtt.publish:
                                                      topic: esphome/Gaszaehler/Stand
                                                      payload: id(Gaszaehler).state
                                          

                                          Ich hab noch nicht rausgefunden wie ich das am einfachsten löse.
                                          Kann man in Blockly nicht sagen "wenn Wert == on > Zählen", dann würde er die Rückstellung auf off nicht beachten
                                          gasverbrauch-blockly-script-1.jpg

                                          Vielen Dank für eeure Tipps!

                                          EDIT:
                                          Was haltet ihr davon
                                          79efd044-4938-4c72-b417-819b99480d7e-grafik.png

                                          MartinP M ubecker 3 Replies Last reply Reply Quote 0
                                          • MartinP
                                            MartinP @seppele last edited by

                                            @seppele Die zweite Lösung funktioniert. Übliche Lösung ist aber auch oben im Trigger statt ....

                                            "wurde geändert"

                                            "ist größer als voriger"

                                            ... zu wählen,,,

                                            S 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            759
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            40
                                            1912
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo