Kostal Piko Neue Generation auslesen

  • Hallo erstmal zusammen,


    ich wollte den Kostal PIKO Neue Generation auslesen und in den VZ einpflegen. Ich habe diese Skript gefunden.


    http://wiki.volkszaehler.org/h…echselrichter_kostal_piko


    Aus anderer Quelle habe ich nun diese PHP Skript gefunden. Damit kann ich die Daten Schonmal auslesen



    jetzt müsste man die 2 Skripte kombinieren aber da hackt es bis jetzt.
    Evtl steht jemand vor ähnlichen Problemen oder hat ein Idee.
    Gruß Nils

  • Die Hälfe?


    Die IP Adresse fehlte.


    Wenn ich das htmlvz.php Skript ausführe komme folgende Fehlermeldung


    Heißt für mich es fehlen die Werte für aktullE und Gesamtenergie.
    Die Werte müsste mann ja mit dem anderen Skript bekommen. Allerdings bin ich mir bei der Formatierung unsicher.

  • Hi ich habe etwas getestet indem ich skripte gewürfelt habe.
    hänge da wo ich es mir gedacht bei der formatierung.


    evtl. weiß ja jemand von euch weiter.
    Hier die php


    Und Fehler Meldungen

  • Guten Tag,


    da leider Zeitlich sehr eingeschränkt bin hat es lange gedauert aber es funktioniert nun.


    Ich logge nun die Daten meines Kostal Pikos mit neuer Frimware über ein php skript mit meinem VZ.


    Als Kanäle habe ich El. Energie Leistungswerte gewählt.



    Die if Bedingungen stammen noch aus dem Direktverbrauch skripts welches ich angepasst habe. Jetzt muss ich nur noch gucken was ich alles haben möchte an Daten und diese Möglichst gering halten.

  • Ich habe dazu mal ein paar Fragen


    1. Ich habe die PV Analage erstmal als Zahlerstand abgefragt. Dabei habe ich einenSpikes bekommen immer wenn der Zählerstand sich geändert hat und dazwische der gleiche Zahlerstand abgespeichert wurde.
    Liege ich richtig das ich nicht speicher darf wenn der Zahlerstand gleich ist?


    2. Gibt es einen Unterschied zwischen Zählerstand unf Leistungswerte bei der Auswertung. - Sehe bisher nur keinen Zählerstand dabei.


    3. Wie lösche ich Kanäle aus dem Frontend plus alle dazugehörigen Daten.
    3.1 gibt es ein script welches die Daten eines bestimmten Kanals nach 2 Tagen läscht oder wie passe ich dieses Script an
    "delete FROM `data` where timestamp< (unix_timestamp(current_timestamp)-24*60*60)*1000 ;"


    4. ich lösche die Daten weich also Dünge sie immer weiter aus. funktioniert das auch mit Stromsensoren und leistungswerten.
    4.1 ich kann aus dem Wechselrichter aus Leistung und Strom bekommen kann ich diese einfach als Strom und Spannungsensor deklarieren.


    Gruß Nils

  • Morgen,


    Zitat

    Liege ich richtig das ich nicht speicher darf wenn der Zahlerstand gleich ist?


    So einfach ist das leider nicht.
    Das Problem das du da beobachtest tritt auf wenn man Zähler mit geringer Auflösung in hoher Frequenz abfragt. Problem dabei ist das der Zähler die Veränderung zwar (intern) registriert, dem VZ aber nicht mitteilt. VZ kann (und will!) die Daten aber nicht interpretieren. Das bleibt dem User überlassen: ist das eine stete Last oder ist der Peak echt.


    Bei vzlogger lösen wird das (ein Stück weit) mit der Option "duplicates", wo wir eine feste Zeit definieren nach der ein doppelter Wert erstmals wieder an die MW gesendet wird.
    Identische Werte grundsätzlich nicht zu schreiben ist in sofern nicht sinnvoll weil, gerade bei PV wenn Nachts gar keine Erzeugung stattfindet, dann die echte Nulllinie nie dargestellt werden kann und der Graph unter Umständen auch gar nicht gezeichnet wird (weil im Zeitraum nur ein oder gar kein Datenpunkt vorhanden ist).


    Zitat

    Gibt es einen Unterschied zwischen Zählerstand unf Leistungswerte bei der Auswertung


    Intern ja, in der Darstellung aber nicht.


    VZ ist vom Grundansatz halt ein wenig anders ausgelegt als die meisten Solarlogger. Mit VZ kann man sehr detailliert Verbräuche und Erzeugung analysieren, man ist nicht auf statistische Auswertung von z.B. Tageswerten beschränkt.
    Bei letzterem fehlen dem Standard-Frontend bislang aber noch ein paar (klickbare) Funktionen.


    Zitat

    Sehe bisher nur keinen Zählerstand dabei.


    Für Zählerstände muss man Aggregation aktivieren und bei den Kanaldaten einen Initialzählerstand eintragen. Nach frühestens 24h wird der Zählerstand in der Tabelle mit angezeigt. Dann aber auch für Kanäle mit Leistungswerten.


    Zitat

    Wie lösche ich Kanäle aus dem Frontend plus alle dazugehörigen Daten.


    In den Kanaleigenschaften (blaues "i") gibt es einen Knopf über den man den Kanal und all zugehörigen Datenbankeinträge löschen kann.
    Der Standarduser für die DB hat ab Haus aber keine Löschrechte. Die müssen erst freigegeben werden:
    https://wiki.volkszaehler.org/…atenmengen#daten_loeschen


    Zitat

    gibt es ein script welches die Daten eines bestimmten Kanals nach 2 Tagen läscht


    Wüste ich jetzt nicht. Macht in der Regel aber auch keinen Sinn.


    Zitat

    oder wie passe ich dieses Script an
    "delete FROM `data` where timestamp< (unix_timestamp(current_timestamp)-24*60*60)*1000 ;"


    Das ist kein Script sondern ein SQL-Befehl. Wenn du dich damit noch nicht auskennst kann ich dir nur Raten mit äußerster Vorsicht und mit Backup an der DB rumzuspielen.


    Zitat

    ich lösche die Daten weich also Dünge sie immer weiter aus. funktioniert das auch mit Stromsensoren und leistungswerten.


    Grundsätzlich ja.
    Allerdings genügt es bei Kanälen dieser Art nicht die Daten einfach nur zu löschen, die Daten müssen erfasst, verrechnet und ein neuer Datensatz geschrieben (oder verändert) werden.
    Vzcompress.php kann und macht das.


    Zitat

    ich kann aus dem Wechselrichter aus Leistung und Strom bekommen kann ich diese einfach als Strom und Spannungsensor deklarieren.


    Die physikalischen Einheiten müssen schon stimmen. Wenn du Leistung als Spannungssensor loggst kommt murks bei raus.
    Es gibt auch den Kanaltyp "Nutzer" für Einheiten die selten nachgefragt werden.



    mfg JAU

    No Shift - No Service

  • Hi danke für die Antworten.


    Zählerstände habe ich jetzt.
    Das vzcompress benutzte ich auch schon.


    Zitat

    gibt es ein script welches die Daten eines bestimmten Kanals nach 2 Tagen läscht



    Wüste ich jetzt nicht. Macht in der Regel aber auch keinen Sinn.


    Ich logge im Moment auch Spannung, Strom und Leistung jedes einzelnen meiner PV Strings in 2sek. Abstand diese Daten Brauche ich nur 2 Tage lang zur Analyse zwecken. (Habe Probleme mit der Betriebsspannung der einzelnen Strings da habe ich hier auch einen anderen Thread zu.)
    Damit diese Daten nicht zu viel werden würde ich sie gerne nach 2 Tagen vollständig löschen.


    Zitat

    Identische Werte grundsätzlich nicht zu schreiben ist in sofern nicht sinnvoll weil, gerade bei PV wenn Nachts gar keine Erzeugung stattfindet, dann die echte Nulllinie nie dargestellt werden kann und der Graph unter Umständen auch gar nicht gezeichnet wird (weil im Zeitraum nur ein oder gar kein Datenpunkt vorhanden ist).


    Das ist mir bewusst habe in einen Test Script aufegehört zu loggen, wenn PV Leistung 0= war dadurch nachts permanent Leistung. Deshalb habe ich als nächstes ein anderes Script geschrieben.
    ( Habe es nicht mehr kurze erklärung)
    Aber nur als Schema.


    Function= Daten werden gelesen und in DB geschrieben.
    if PVLeistung>0 {
    Function
    &var=True
    }


    if PVLeistung=0 & $var {
    alle Werte=0
    Function
    $var=false
    }


    Würde gerne meinen Auslesecode als Function haben damit ich nur diesen aufrufen muss. Aber eher was für Später funktionieren tut es auch so.


    Wird nur das Problem machen, wenn es ohne PV Leistung startet ist $var nicht deklariert.
    3 Möglichkeiten:


    1: wenn das Script startet eine Zählschleife programmieren die einmal laäuft und $var setzt. $var besser als Zahl deklarieren.
    Kenne denn Befehl und Syntax dafür in PHP noch nicht daher noch nicht getestet. (Kann kein PHP und bin zeitlich eingespannt, mir ist aber bewusst das es in 5 min mit googlen raus ist. Generelle Struktur des Codes ist mir klar Syntax ist das Porblem)
    2: Einfach so lassen Script müsste ja eigentlich dann bei PV Leistung anfangen zu loggen. Wird per Crontab jede Minute aufgerufen.
    3. Momentan so gelöst Crontab läuft jede minut zwischen 5 und 23 Uhr dann sind definitiv Nullen in der DB



    Gruß Nils

  • Zitat von Jacke

    Damit diese Daten nicht zu viel werden würde ich sie gerne nach 2 Tagen vollständig löschen.


    MySQL kann auch Skripte:
    https://dev.mysql.com/doc/refman/5.7/en/batch-mode.html


    Zitat

    Wird nur das Problem machen, wenn es ohne PV Leistung startet ist $var nicht deklariert.


    Setze es doch vor vor deiner Schleife/Verzweigung einfach

    Code
    1. $var=false


    Zitat

    Momentan so gelöst Crontab läuft jede minut zwischen 5 und 23 Uhr dann sind definitiv Nullen in der DB


    Pragmatische Lösung die ich auch schon vorschlagen wollte. 8)



    mfg JAU

    No Shift - No Service

  • Zitat

    Setze es doch vor vor deiner Schleife/Verzweigung einfach


    Code: Alles auswählen
    $var=false


    Wenn ich das mache wird der 2te Zweig ja nie bearbeitet
    Bei jedem Durchgang wird am Anfang var = FALSE
    solange pv>0 wird geloggt und var=true.
    allerdings wird var immer wieder Am Anfang auf False gesetzt daher passiert nichts wenn PV Leistung auf 0 ist.


    werde das mal probieren



    if (PVLeistung>0) {
    Function;
    $var=1
    }


    if (PVLeistung=0 & $var{
    for ($i = 1; $i <2; $i++) {
    function;
    var=0
    }
    }


    sehe gerade klappt auch nicht wenn es nachts gestartet wird


    das könnte gehen?


    if (PVLeistung>0) {
    Function;
    $PVLeistung-1=$ PVLeistung
    }


    if (PVLeistung=0 & $PVLeistung-1>$ PVLeistung{
    ALLE WERTE = 0
    function;
    }
    }
    quasi eine negative Flanke
    startet aber nachts auch nicht