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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Piko 5.5 Wechselrichter (alte Firmware) auslesen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Piko 5.5 Wechselrichter (alte Firmware) auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
1 Beiträge 1 Kommentatoren 230 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • bahnuhrB Online
    bahnuhrB Online
    bahnuhr
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #1

    Hallo,

    bisher hatte ich o.g. Thema per Script erledigt mit einem js.modul "cheerio". Dieses läuft aber nicht mehr (warum weiß ich nicht).
    Nun habe ich das Script erfolgreich umgeschrieben. Die Werte werden ausgelesen per regex (hier nochmals Danke an homoran; ohne ihn hätte ich den regex nicht gebacken bekommen).

    Die Objekte müsst ihr logischerweise manuell anlegen; oder per nachfolgendem Script:

    // Photovoltaik -------------------------------------------------------------------------------------------------------------
    createState('javascript.0.Status.Photovoltaik.Leistung_aktuell', 0, {type: 'number',name: 'Leistung aktuell',min: 0,role: 'per Script'});
    createState('javascript.0.Status.Photovoltaik.Tagesleistung', 0, {type: 'number',name: 'Tagesleistung',min: 0,role: 'per Script'});
    createState('javascript.0.Status.Photovoltaik.Leistung_gesamt', 0, {type: 'number',name: 'Leistung gesamt',min: 0,role: 'per Script'});
    createState('javascript.0.Status.Photovoltaik.Leistung_Strang1', 0, {type: 'number',name: 'Leistung Strang 1',min: 0,role: 'per Script'});
    createState('javascript.0.Status.Photovoltaik.Leistung_Strang2', 0, {type: 'number',name: 'Leistung Strang 2',min: 0,role: 'value'});
    
    

    Diese einmalig in ein Script kopieren, starten und fertig.

    Und nun das eigentliche Script. Eure Zugangswerte müsst ihr natürlich angleichen. Das Script fragt die Werte alle 5 Minuten ab (siehe Schedule). Könnt ihr natürlich ändern.

    
    // Photovoltaik: Piko 5.5 Anlage (alte Firmware)
    // Danke an homoran für den regex
    // @bahnuhr; 03/2019 Dieter Müller
    
    //Variaben
        var idaktuell = 'javascript.0.Status.Photovoltaik.Leistung_aktuell';
        var idTag = 'javascript.0.Status.Photovoltaik.Tagesleistung';
        var idall = 'javascript.0.Status.Photovoltaik.Leistung_gesamt';
        var idP1 = 'javascript.0.Status.Photovoltaik.Leistung_Strang1';
        var idP2 = 'javascript.0.Status.Photovoltaik.Leistung_Strang2';
    
        var NameAnlage = 'xxx';        // Nutzername der Photovoltaik-Anlage
        var PassAnlage = 'xxx';         // Password der Photovoltaik-Anlage
        var IPAnlage = '192.168.xxx.xx';    // IP der Photovoltaik-Anlage
    
        var logging = false;
        var request = require('request');
    
    
     function Piko() {
        if (logging) log("Piko 5.5 auslesen");
        var results = [];
        request('http://' + NameAnlage + ':' + PassAnlage +'@' + IPAnlage, function (error, response, body) {
            var d = body.toString();
            var reg = /#FFFFFF">[^\d]+([^<]+)/g
            var z = reg.exec(d);
    
            while(z != null) {
                if (isNaN(z[1])) {
                    if (logging) log("keine Zahl= "+ z[1]);
                    z[1] = 0;
                } else {
                    if (logging) log("Zahl= "+ z[1]);
                    parseFloat(z[1]);
                }
                results[results.length] = z[1];
                z = reg.exec(d);
            }
            if (logging) log("results= "+ results);
    
        // Werte zuordnen
            var pwr = results[0];           // Energie aktuell in W
            var day = results[2];           // Tagesenergie in kWh
            var all = results[1];           // Gesamtenergie in kWh
            var v1 = results[3];            // PV Generator Nr. 1 - Spannung in V
            var i1 = results[5];            // PV Generator Nr. 1 - Strom in A
            var p1 = parseInt(v1 * i1);
            var v2 = results[7];            // PV Generator Nr. 2 - Spannung in V
            var i2 = results[9];            // PV Generator Nr. 2 - Strom in A
            var p2 = parseInt(v2 * i2);
    
            log("Leistung aktuell= " + pwr + " W");
            log("Tagesleistung= " + day + " kWh");
            log("Leistung gesamt= " + all + " kWh");
    	    log("Leistung Strang 1= " + p1 + " W");
        	log("Leistung Strang 2= " + p2 + " W");
    
            setState(idaktuell, parseFloat(pwr));
            setState(idTag, parseFloat(day));
            setState(idall, parseFloat(all));
            setState(idP1, parseFloat(p1));
            setState(idP2, parseFloat(p2));
        });
    }
    
    
    schedule("2,7,12,17,22,27,32,37,42,47,52,57 * * * *", function () {
        log ("Auslöser: Schedule");
    	Piko();
    });
    
    schedule("3 0 * * *", function () {     // Variablen löschen um 00:03 Uhr   
        setState('javascript.0.Status.Photovoltaik.Tagesleistung', 0);
    });
    
    

    Geht bestimmt auch kürzer; oder schöner im js.Stil. Aber es läuft.

    mfg


    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
    Danke.
    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
    ScreenToGif :https://www.screentogif.com/downloads.html

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


    Support us

    ioBroker
    Community Adapters
    Donate

    390

    Online

    32.6k

    Benutzer

    82.2k

    Themen

    1.3m

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

    • Du hast noch kein Konto? Registrieren

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