Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Stromzähler mit Volkszähler

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Stromzähler mit Volkszähler

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

      Ich lese die datenpunkte in den sql-history adapter ein. Und dann lese ich die daten aus.

      So kann ich auf beliebige Zeitabschnitte zurück greifen.

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

        @a200:

        Ich lese die datenpunkte in den sql-history adapter ein. Und dann lese ich die daten aus.

        So kann ich auf beliebige Zeitabschnitte zurück greifen. `

        Ahh, ich dachte du machst das irgendwie mit Hilfe eines Scripts 😄

        Kannst du eigentlich PERL? Ich versuche schon die ganze Zeit was aber es klappt einfach nicht. Ich will nämlich innerhalb deines Scripts eine URL aufrufen sowas in der Richtung:

        > [http://192.168.160.50:8087/set/javascri … ue=$mmtota](http://192.168.160.50:8087/set/javascript.0.Stromz%C3%A4hler.EMH.Total?value=$mmtota)

        Natürlich soll die Variable $mmtota mit übergeben werden. Wie muss denn der Aufruf innerhalb des Perl Scripts aussehen?

        Innerhalb eines Shell Scripts geht das mit WGET aber Perl kenne ich überhaupt nicht

        Vielleicht kennst du dich besser aus mit Perl als ich

        Gruß

        Adrian

        1 Reply Last reply Reply Quote 0
        • a200
          a200 last edited by

          @simpixo:

          @a200:

          Ich lese die datenpunkte in den sql-history adapter ein. Und dann lese ich die daten aus.

          So kann ich auf beliebige Zeitabschnitte zurück greifen. `

          Ahh, ich dachte du machst das irgendwie mit Hilfe eines Scripts 😄 `
          Im Prinzip schon.

          Die Last und der Zählerstand gesamt wird minütlich im Datenpunkten (dp) abgelegt und in MySQL gespeichert. Dann kann ich die Daten aus History holen und per Script Datenpunkte speichern wie:

          Verbrauch heute = Zählerstand jetzt - Zählerstand um 00:00 - wird alle 3 Min ermittelt.

          Verbrauch Gestern = Zählerstand um 00:00 - Zählerstand gestern um 00:00

          Verbrauch Woche = Zählerstand jetzt - Zählerstand am letzten Montag um 00:00

          Verbrauch Vorwoche = Zählerstand am letzten Montag um 00:00 - Zählerstand am vorletzten Montag um 00:00

          Verbrauch Monat …

          Verbrauch Vormonat ...

          Diese dp kann ich dann per flot im vis visualisieren.

          @simpixo:

          Kannst du eigentlich PERL? Ich versuche schon die ganze Zeit was aber es klappt einfach nicht. Ich will nämlich innerhalb deines Scripts eine URL aufrufen sowas in der Richtung:

          > [http://192.168.160.50:8087/set/javascri … ue=$mmtota](http://192.168.160.50:8087/set/javascript.0.Stromz%C3%A4hler.EMH.Total?value=$mmtota)

          Natürlich soll die Variable $mmtota mit übergeben werden. Wie muss denn der Aufruf innerhalb des Perl Scripts aussehen?

          Innerhalb eines Shell Scripts geht das mit WGET aber Perl kenne ich überhaupt nicht

          Vielleicht kennst du dich besser aus mit Perl als ich

          Gruß

          Adrian `
          ich würde das so machen:

          
          my $mmtotal = 123;    
          my $url = 'https://192.168.160.50:8087/set/javascript.0.Stromzähler.EMH.Total?value='.$mmtotal;
          my $html = qx{wget --quiet --output-document=- $url};
          print $html;
          
          

          alternativ

          my $html = qx{curl --silent $url}; 
          

          anstatt wget.

          qx ist ein Systemaufruf für externe programme und ist vergeleichbar mit system(), allerdings speicher er den output

          ps. es ist ungetestet aus dem Kopf, aber könnte gehen.

          Viel Spaß.

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

            @a200:

            ich würde das so machen:

                
            my $mmtotal = 123;    
            my $url = 'https://192.168.160.50:8087/set/javascript.0.Stromzähler.EMH.Total?value='.$mmtotal;
            my $html = qx{wget --quiet --output-document=- $url};
            print $html;
            
            

            alternativ

            my $html = qx{curl --silent $url}; 
            

            anstatt wget.

            qx ist ein Systemaufruf für externe programme und ist vergeleichbar mit system(), allerdings speicher er den output

            ps. es ist ungetestet aus dem Kopf, aber könnte gehen. `

            Ja genau so habe ich das jetzt gelöst 😉 und es funktioniert….Trotzdem danke für deine ausführliche Antwort

            @a200:

            Die Last und der Zählerstand gesamt wird minütlich im Datenpunkten (dp) abgelegt und in MySQL gespeichert. Dann kann ich die Daten aus History holen und per Script Datenpunkte speichern wie:

            Verbrauch heute = Zählerstand jetzt - Zählerstand um 00:00 - wird alle 3 Min ermittelt.

            Verbrauch Gestern = Zählerstand um 00:00 - Zählerstand gestern um 00:00

            Verbrauch Woche = Zählerstand jetzt - Zählerstand am letzten Montag um 00:00

            Verbrauch Vorwoche = Zählerstand am letzten Montag um 00:00 - Zählerstand am vorletzten Montag um 00:00

            Verbrauch Monat …

            Verbrauch Vormonat ... `

            Wie sieht denn da das Script aus? :?

            Gruß

            Adrian

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

              @a200:

              Die Last und der Zählerstand gesamt wird minütlich im Datenpunkten (dp) abgelegt und in MySQL gespeichert. Dann kann ich die Daten aus History holen und per Script Datenpunkte speichern wie:

              Verbrauch heute = Zählerstand jetzt - Zählerstand um 00:00 - wird alle 3 Min ermittelt.

              Verbrauch Gestern = Zählerstand um 00:00 - Zählerstand gestern um 00:00

              Verbrauch Woche = Zählerstand jetzt - Zählerstand am letzten Montag um 00:00

              Verbrauch Vorwoche = Zählerstand am letzten Montag um 00:00 - Zählerstand am vorletzten Montag um 00:00

              Verbrauch Monat …

              Verbrauch Vormonat ...

              Diese dp kann ich dann per flot im vis visualisieren. `

              Noch eine Frage historisierst du immer den aktuellen Wert oder nur die Werte die sich ändern?

              Ich meine die Möglichkeit in der DP Historie -> Nur Änderungen aufzeichnen

              Gruß

              Adrian

              1 Reply Last reply Reply Quote 0
              • a200
                a200 last edited by

                @simpixo:

                Wie sieht denn da das Script aus? :? `

                Kann ich dir morgen von Zuhause schicken. Heute gibt es eine Weihnachtsfeier, da komme ich etwas später heim! 😄

                Die aktuelle Last speichere ich jede Minute. Die kann man später eh löschen. Sie werden nur für die ganz feine Anzeige benötigt.

                Auch den Gesamtstand speichere ich komplett. Muss später schauen ob das wirklich nötig ist. Aber das sind die Grunddaten mit denen ich arbeite und aus denen ich den Zählerstand zu einem bestimmten Zeitpunkt mir holen kann. Die Daraus berechnete Werte werden nur bei Änderung gespeichert.

                Die Änderungen erfolgen aber nur Stündlich/Täglich/Wöchentlich/Monatlich je nach Datenpunkt. Diese Datenpunkte werden auch in History archiviert. Die Brauche ich für meine Diagramme für den jeweiligen Verbrauch.

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

                  @a200:

                  Kann ich dir morgen von Zuhause schicken. Heute gibt es eine Weihnachtsfeier, da komme ich etwas später heim! 😄 `

                  Hast du mich vergessen!? [emoji53][emoji6]oder ist die Weihnachtsfeier ausgeartet [emoji23][emoji6]

                  Gruß

                  Adrian

                  Gesendet von iPhone mit Tapatalk Pro

                  1 Reply Last reply Reply Quote 0
                  • a200
                    a200 last edited by

                    ** KOPFWEH ** 😢

                    Das alles ist noch sehr quick & dirty, aber ich denke du wirst schon merken was ich meine.

                    Grundlage ist der Datenpunkt "javascript.0.Stromzähler.Hager.Total-h".

                    ! // Zählerstand vom Anfang der akt. Stunde wird ermittelt // ! var cronStr = "1 * * * *"; ! var abfrageTotal = "cat /tmp/HAG_Total"; var idHAGTotal = "javascript.0.Stromzähler.Hager.Total-h"/*Stromverbrauch insgesammt*/; ! createState(idHAGTotal, 0, { name: 'Stromverbrauch insgesammt', desc: 'Stromverbrauch insgesammt', type: 'number', unit: 'kWh', role: 'value' }); ! function abfrageHD(abfrage,dp) { exec(abfrage, function(err, stdout, stderr) { if (err) { log(err,"error"); return; } setState(dp, parseFloat(stdout)); }); } ! function abfragen() { abfrageHD(abfrageTotal ,idHAGTotal); } ! function getHistoryRows(date, callback) { var options = { start: date + 86400000, end: date , count: 1, aggregate: 'none', //'total', // One of: max, min, average, total //limit: 1, ignoreNull: 1 }; } ! // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, abfragen); ! // main // ----------------------------------------------------------------------------- function main() { abfragen(); } ! // Start Skript: // ----------------------------------------------------------------------------- ! setTimeout(main, 10000); !
                    Hier werden erst die Zwischenwerte für die Berechnungen ermittelt.

                    ! ````
                    // Ermittelt die Einzelne Werte akt/stunde/tag/woche/monat/ für vis
                    //
                    ! var cronStr = "3 * * * *";
                    var Strom_1 = "javascript.0.TMP-Werte.Strom-Wert_1"/Strom-Wert_1/;
                    var Strom_2 = "javascript.0.TMP-Werte.Strom-Wert_2"/Strom-Wert_2/;
                    var Strom_3 = "javascript.0.TMP-Werte.Strom-Wert_3"/Strom-Wert_3/;
                    var Strom_4 = "javascript.0.TMP-Werte.Strom-Wert_4"/Strom-Wert_4/;
                    var Strom_5 = "javascript.0.TMP-Werte.Strom-Wert_5"/Strom-Wert_5/;
                    var Strom_6 = "javascript.0.TMP-Werte.Strom-Wert_6"/Strom-Wert_6/;
                    var Strom_7 = "javascript.0.TMP-Werte.Strom-Wert_7"/Strom-Wert_7/;
                    var Strom_8 = "javascript.0.TMP-Werte.Strom-Wert_8"/Strom-Wert_8/;
                    var HAG_Total = "javascript.0.Stromzähler.Hager.Total"/Stromverbrauch insgesammt/;
                    var Strom_Stunde = "javascript.0.Stromzähler.Hager.Verbrauch.Stunde";
                    var Strom_Tag = "javascript.0.Stromzähler.Hager.Verbrauch.Tag";
                    var Strom_Woche = "javascript.0.Stromzähler.Hager.Verbrauch.Woche";
                    var Strom_Monat = "javascript.0.Stromzähler.Hager.Verbrauch.Monat";
                    var Strom_Last = "javascript.0.Stromzähler.Hager.Verbrauch.Last_Upd";
                    var Strom_Heute = "javascript.0.Stromzähler.Hager.Verbrauch.Heute";
                    var Farbe_Heute = "javascript.0.Stromzähler.Hager.Verbrauch.Heute-Farbe";
                    ! var col_heute = "#ffffff";
                    ! function getHistoryRow(date, targetId, callback) {
                    var options = {
                    start: date,
                    //end: date,
                    count: 1,
                    aggregate: 'none', //'total', // One of: max, min, average, total
                    ignoreNull: 1
                    };
                    ! sendTo ("sql.1", "getHistory", { id: "javascript.0.Stromzähler.Hager.Total-h", options: options }, function(data) {
                    if (data) {
                    var rows = [];
                    rows = rows.concat(data.result);
                    setState(targetId, parseFloat(rows[0].val));
                    // log(targetId + " ts: " + formatDate(rows[0].ts, "DD.MM.YYYY hh:mm:ss") + " val: " + rows[0].val + " datum: " + rows[0].ts);
                    }
                    });
                    }
                    ! createState(Strom_1, 0, {
                    name: 'Stromverbrauch aktuelle Stunde',
                    desc: 'Stromverbrauch aktuelle Stunde',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_2, 0, {
                    name: 'Stromverbrauch letzte Stunde',
                    desc: 'Stromverbrauch letzte Stunde',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_3, 0, {
                    name: 'Stromverbrauch heute 00:00',
                    desc: 'Stromverbrauch heute 00:00',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_4, 0, {
                    name: 'Stromverbrauch gestern 00:00',
                    desc: 'Stromverbrauch gestern 00:00',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_5, 0, {
                    name: 'Stromverbrauch am Anfang der Woche',
                    desc: 'Stromverbrauch am Anfang der Woche',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_6, 0, {
                    name: 'Stromverbrauch am Anfang der Vorwoche',
                    desc: 'Stromverbrauch am Anfang der Vorwoche',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_7, 0, {
                    name: 'Stromverbrauch am 01. akt. Monats',
                    desc: 'Stromverbrauch am 01. akt. Monats',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_8, 0, {
                    name: 'Stromverbrauch am 01. des Vormonats',
                    desc: 'Stromverbrauch am 01. des Vormonats',
                    type: 'number',
                    role: 'value'
                    });
                    createState(Strom_Stunde, 0, {
                    name: 'Stromverbrauch der letzen Stunde',
                    desc: 'Stromverbrauch der letzen Stunde',
                    type: 'number',
                    unit: 'kWh',
                    role: 'value'
                    });
                    createState(Strom_Tag, 0, {
                    name: 'Stromverbrauch des Vortages',
                    desc: 'Stromverbrauch des Vortages',
                    type: 'number',
                    unit: 'kWh',
                    role: 'value'
                    });
                    createState(Strom_Woche, 0, {
                    name: 'Stromverbrauch der Vorwoche',
                    desc: 'Stromverbrauch der Vorwoche',
                    type: 'number',
                    unit: 'kWh',
                    role: 'value'
                    });
                    createState(Strom_Monat, 0, {
                    name: 'Stromverbrauch des Vormonats',
                    desc: 'Stromverbrauch des Vormonats',
                    type: 'number',
                    unit: 'kWh',
                    role: 'value'
                    });
                    createState(Strom_Last, 0, {
                    name: 'Last Update',
                    desc: 'Last Update',
                    type: 'string',
                    role: 'value'
                    });
                    createState(Strom_Heute, 0, {
                    name: 'Stromverbrauch Heute',
                    desc: 'Stromverbrauch Heute',
                    type: 'number',
                    unit: 'kWh',
                    role: 'value'
                    });
                    createState(Farbe_Heute, 0, {
                    name: 'Farbe fuer Heute',
                    desc: 'Farbe fuer Heute',
                    type: 'string',
                    role: 'value'
                    });
                    ! function ausfuehren() {
                    dStunde = formatDate(new Date(), "JJJJ.MM.TT SS:mm:ss"); // Jetzt
                    setState(Strom_Last, dStunde);

                    dStunde = formatDate(new Date(), "JJJJ.MM.TT SS:00:00"); // heute aktuelle Stunde
                    //log("Datum: " + dStunde);
                    iStunde = getDateObject(dStunde).getTime();
                    getHistoryRow(iStunde, Strom_1);

                    ! dStunde = formatDate(new Date(), "JJJJ.MM.TT SS:00:00"); // heute aktuelle Stunde -1 h
                    iStunde = getDateObject(dStunde).getTime() - 3600000;
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Datum: " + dStunde);
                    getHistoryRow(iStunde, Strom_2);
                    ! dStunde = formatDate(new Date(), "JJJJ.MM.TT 00:00:00"); // heute 00:00 Uhr
                    //log("Datum: " + dStunde);
                    iStunde = getDateObject(dStunde).getTime(); // - 1800000;
                    getHistoryRow(iStunde, Strom_3);
                    ! dStunde = formatDate(new Date(), "JJJJ.MM.TT 00:00:00"); // gestern 00:00 Uhr
                    iStunde = getDateObject(dStunde).getTime() - 86400000;
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Datum: " + dStunde);
                    getHistoryRow(iStunde, Strom_4);
                    ! dWochentag = (new Date().getDay() === 0 ? 7 : new Date().getDay());
                    dStunde = formatDate(new Date(), "JJJJ.MM.TT 00:00:00"); // Wochenanfang 00:00 Uhr
                    iStunde = getDateObject(dStunde).getTime() - ((dWochentag - 1) * 86400000);
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Wochenanfang: " + dStunde);
                    getHistoryRow(iStunde, Strom_5);
                    ! dWochentag = (new Date().getDay() === 0 ? 7 : new Date().getDay());
                    dStunde = formatDate(new Date(), "JJJJ.MM.TT 00:00:00"); // Vorwochenanfang 00:00 Uhr
                    iStunde = getDateObject(dStunde).getTime() - ((dWochentag + 6) * 86400000);
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Vorwoche: " + dStunde);
                    getHistoryRow(iStunde, Strom_6);
                    ! dStunde = formatDate(new Date(), "JJJJ.MM.01 00:00:00"); // Monatsanfang 00:00 Uhr
                    iStunde = getDateObject(dStunde).getTime();
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Monat: " + dStunde);
                    getHistoryRow(iStunde, Strom_7);
                    ! dJahr = formatDate(new Date(), "JJJJ"); // Vormonatsanfang 00:00 Uhr
                    dMonat = formatDate(new Date(), "MM");
                    if(dMonat == 1)
                    {
                    dJahr = dJahr -1;
                    dMonat = 12;
                    }
                    else
                    {
                    dMonat = dMonat -1;
                    }
                    sDatum = dJahr + "." + dMonat + ".01 00:00:00";
                    dStunde = formatDate(new Date(), sDatum);
                    iStunde = getDateObject(dStunde).getTime();
                    dStunde = formatDate(getDateObject(iStunde), "JJJJ.MM.TT SS:mm:ss");
                    //log("Vormonat: " + dStunde);
                    getHistoryRow(iStunde, Strom_8);
                    ! // Setze Ausgabepunkte
                    setState(Strom_Stunde, ((Math.round((((Math.round(parseFloat(getState(Strom_1).val)*10))/10) - (Math.round(parseFloat(getState(Strom_2).val)*10))/10)*10))/10)*1000);
                    setState(Strom_Tag, ((Math.round((((Math.round(parseFloat(getState(Strom_3).val)*10))/10) - (Math.round(parseFloat(getState(Strom_4).val)*10))/10)*10))/10));
                    setState(Strom_Woche, ((Math.round((((Math.round(parseFloat(getState(Strom_5).val)*10))/10) - (Math.round(parseFloat(getState(Strom_6).val)*10))/10)*10))/10));
                    setState(Strom_Monat, ((Math.round((((Math.round(parseFloat(getState(Strom_7).val)*10))/10) - (Math.round(parseFloat(getState(Strom_8).val)*10))/10)*10))/10));
                    setState(Strom_Heute, ((Math.round((((Math.round(parseFloat(getState(HAG_Total).val)*10))/10) - (Math.round(parseFloat(getState(Strom_3).val)*10))/10)*10))/10));
                    ! if (getState(Strom_Tag).val == getState(Strom_Heute).val) {
                    col_heute = "#faf600"; // gelb
                    }
                    else if (getState(Strom_Tag).val < getState(Strom_Heute).val ) {
                    col_heute = "#f20202"; // rot
                    }
                    else {
                    col_heute = "#21bd1f"; // gruen
                    }
                    setState(Farbe_Heute, col_heute);
                    ! log("Letzte Stunde " + ((Math.round((((Math.round(parseFloat(getState(Strom_1).val) * 10))/10) - (Math.round(parseFloat(getState(Strom_2).val) * 10))/10)*10))/10) + " kWh");
                    log("Letzter Tag: " + ((Math.round((((Math.round(parseFloat(getState(Strom_3).val) * 10))/10) - (Math.round(parseFloat(getState(Strom_4).val) * 10))/10)*10))/10) + " kWh");
                    log("Letzte Woche: " + ((Math.round((((Math.round(parseFloat(getState(Strom_5).val) * 10))/10) - (Math.round(parseFloat(getState(Strom_6).val) * 10))/10)*10))/10) + " kWh");
                    log("Letzter Monat: " + ((Math.round((((Math.round(parseFloat(getState(Strom_7).val) * 10))/10) - (Math.round(parseFloat(getState(Strom_8).val) * 10))/10)*10))/10) + " kWh");
                    log("Heute: " + ((Math.round((((Math.round(parseFloat(getState(HAG_Total).val) * 10))/10) - (Math.round(parseFloat(getState(Strom_3).val) * 10))/10)*10))/10)+ " kWh");
                    }
                    ! // regelmässige Wiederholungen
                    // -----------------------------------------------------------------------------
                    schedule(cronStr, ausfuehren);
                    ! // main
                    // -----------------------------------------------------------------------------
                    function main() {
                    ausfuehren();
                    }
                    ! // Start Skript:
                    // -----------------------------------------------------------------------------
                    ! setTimeout(main, 10000);

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

                      @a200:

                      ** KOPFWEH ** 😢

                      Das alles ist noch sehr quick & dirty, aber ich denke du wirst schon merken was ich meine. `

                      Ohje…. geht aber auch wieder vorbei 😄

                      Danke für die Skripte... werde diese mir mal anschauen und versuchen zu verstehen 😉

                      Gruß

                      Adrian

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        Neuer Adapter … gern Testen :-))

                        http://forum.iobroker.net/viewtopic.php?f=36&t=5047

                        1 Reply Last reply Reply Quote 0
                        • D
                          digitthomas last edited by

                          Moin,

                          da ich damals bei einer Google-Suche zu "ioBroker mit Volkszähler verbinden" als erstes hier gelandet bin, lasse ich mal mein Skript hier, in der Hoffnung, dass es noch jemand anderem helfen kann: https://gist.github.com/digitmind-net/d … 87b2181c04

                          Der Vorteil gegenüber dem "smartmeter"-Adapter ist, dass es bei schon bestehender Installation vom Volkszähler einfacher einzurichten ist und durch die hohe Kompatiblität des Volkszählers mehr Geräte unterstützt. Das ist aber nur ein Nischenfall für diejenigen, die sowieso schon einen eingerichteten Volkszähler besitzen.

                          Lg

                          Thomas

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.6k
                          Users

                          79.6k
                          Topics

                          1.3m
                          Posts

                          4
                          19
                          4672
                          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