Von PV Anlage Werte auslesen und in Variable schreiben
Moderator: Co-Administratoren
-
- Beiträge: 577
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 133 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
ist immer schwer ohne die Basisdaten zu sehen.....
ich hab ja auch nur eine von mehreren Techniken nennen wollen.
PS: mir scheint aber return ist noch ein special word
ich hab ja auch nur eine von mehreren Techniken nennen wollen.
PS: mir scheint aber return ist noch ein special word
Gruß
Harry
Harry
-
- Beiträge: 9771
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 707 Mal
- Danksagung erhalten: 1647 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Korrekt. Daher habe ich den Variablennamen auch nochmal geändert zu "rueck"
Wenn man sich anschauen will, wie man so einen Input ausmisten kann, dem sei ein Blick in mein JSON-Skript empfohlen.ich hab ja auch nur eine von mehreren Techniken nennen wollen.
LG, Michael.
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.
Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++
-
- Beiträge: 20
- Registriert: 23.08.2017, 12:34
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Sorry für die verspätete Antwort, aber die Anlage schaltet sich bei zu wenig Licht automatisch ab und somit konnte ich es gestern nicht mehr testen.
Ich muss Michael meinen größten Dank aussprechen dass er mir so schnell und gut geholfen hat!
Alles hat nun funktioniert.
Hier nochmals das Script das ich nun auch so mit der RaspMatic einsetze.
Als Ausgabe kommt nun:
Damit kann ich nun weiterarbeiten. Vielen lieben Dank für die Hilfe. Immer weider schön dass es noch Menschen gibt die einem weiterhelfen wenn man nicht mehr weiter kommt!
Ich muss Michael meinen größten Dank aussprechen dass er mir so schnell und gut geholfen hat!
Alles hat nun funktioniert.
Hier nochmals das Script das ich nun auch so mit der RaspMatic einsetze.
Code: Alles auswählen
string rueck; var Wert; integer anfang;
string abfrage_url = "http://user:password@IpVomWechselrichter/status.html";
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &rueck);
string Suchbegriff1 = "webdata_now_p";
anfang = rueck.Find(Suchbegriff1) + Suchbegriff1.Length() + 4;
Wert = rueck.Substr(anfang,5).ToFloat();
WriteLine(Suchbegriff1 # ":" # Wert) ;
dom.GetObject(ID_SYSTEM_VARIABLES).Get(Suchbegriff1).State(Wert);
string Suchbegriff2 = "webdata_today_e";
anfang = rueck.Find(Suchbegriff2) + Suchbegriff2.Length() + 4;
Wert = rueck.Substr(anfang,9).ToFloat();
WriteLine(Suchbegriff2 # ":" # Wert) ;
dom.GetObject(ID_SYSTEM_VARIABLES).Get(Suchbegriff2).State(Wert);
string Suchbegriff3 = "webdata_total_e";
anfang = rueck.Find(Suchbegriff3) + Suchbegriff3.Length() + 4;
Wert = rueck.Substr(anfang,8).ToFloat();
WriteLine(Suchbegriff3 # ":" # Wert) ;
dom.GetObject(ID_SYSTEM_VARIABLES).Get(Suchbegriff3).State(Wert);
Code: Alles auswählen
webdata_now_p:2.000000
webdata_today_e:0.000000
webdata_total_e:0.400000
-
- Beiträge: 6823
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 499 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Der Wechselrichter entspricht nicht den gesetzlichen Vorgaben in Deutschland und ist auf Weisung der Bundesnetzagentur und Information des Herstellers vorerst vom Netz zu nehmen.
Laut einer Erklärung des VDE halte dieser es für ausgeschlossen, dass sich das Problem durch die Auslieferung externer Relais lösen lasse.
-
- Beiträge: 3056
- Registriert: 28.01.2016, 18:06
- System: CCU
- Wohnort: Hürth
- Hat sich bedankt: 16 Mal
- Danksagung erhalten: 278 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Hi,
obwohl es unsinnig ist, den deswegen vom Netz zu nehmen.
Das fehlende Relais ist ja nur eine zusätzliche Sicherheit, die beim freischalten, bzw. Trennung vom Netz notwendig werden könnte.
Eine mögliche Gefahr (so gering die Wahrscheinlichkeit auch ist) geht nur davon aus, wenn er vom Netz getrennt wird/ist.
Daher ist die Trennung vom Netz eigentlich eher gefährlich als sinnvoll.
Der VDE entscheidet zudem nicht darüber, ob das externe Relais eine zulässige Lösung darstellt oder nicht.
Gruß
Gerti
obwohl es unsinnig ist, den deswegen vom Netz zu nehmen.
Das fehlende Relais ist ja nur eine zusätzliche Sicherheit, die beim freischalten, bzw. Trennung vom Netz notwendig werden könnte.
Eine mögliche Gefahr (so gering die Wahrscheinlichkeit auch ist) geht nur davon aus, wenn er vom Netz getrennt wird/ist.
Daher ist die Trennung vom Netz eigentlich eher gefährlich als sinnvoll.
Der VDE entscheidet zudem nicht darüber, ob das externe Relais eine zulässige Lösung darstellt oder nicht.
Gruß
Gerti
-
- Beiträge: 14252
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 597 Mal
- Danksagung erhalten: 1522 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Nö, es ist auch eine zusätzliche Sicherheit für diejenigen, die ggf. im Ortsnetz arbeiten (Fehlersuchen, Reparaturen), die Spannung abschalten und dann mit einem Mal bei Sonnenschein Spannung auf der freigeschaltete Abgangsseite haben. Ihre Sicherheit hängt dann nur noch an der Funktionsfähigkeit der Elektronik, die aber ggf. durch das Ereignis, was zur Reparaturbedürftigkeit des Netzes geführt hat, Schaden genommen haben kann. Es ist also auch die Sicherheit anderer Personen betroffen und nicht nur die des BKW-Betreibers. Diese müssen nun zusätzliche Sicherheitsmaßnahmen ergreifen, um solche Rückspannungen abzuleiten.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
- Black
- Beiträge: 5527
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 432 Mal
- Danksagung erhalten: 1093 Mal
- Kontaktdaten:
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Werden zwar die allerwenigsten installiert haben.
Hauptschalter mit Unterspannungsauslöser vor den WR.
Bei Stromausfall wird getrennt und muss wieder manuell zugeschaltet werden. Und einschalten lässt sich nur bei Netz vorhanden.
Black
Hauptschalter mit Unterspannungsauslöser vor den WR.
Bei Stromausfall wird getrennt und muss wieder manuell zugeschaltet werden. Und einschalten lässt sich nur bei Netz vorhanden.
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
-
- Beiträge: 26
- Registriert: 27.09.2015, 01:59
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Na ja, das wurde alles heiser gekocht als nötig. Ganz klar ist, die WR schalten trotz fehlenden Relais deutlich schneller ab als laut VDE gefordert.
Was an der Stelle viel wichtiger ist. Wie kann ich das Script erweitern und mehrere WR auslesen?
Lg Mark
Was an der Stelle viel wichtiger ist. Wie kann ich das Script erweitern und mehrere WR auslesen?
Lg Mark
-
- Beiträge: 3
- Registriert: 16.09.2023, 14:50
- System: CCU
- Wohnort: Gevelsberg
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Das ist meine aktuelle Lösung für die Aufgabe "mehrere Wechselrichter abfragen"
Danke an @Selecta und MichaelN, war mir nur möglich mit Hilfe dieser Vorlagen!
Die auskommentierten WriteLine Zeilen habe ich drin gelassen, evtl. hilft es bei der Fehlersuche wenn was nicht läuft...
Die Zugangsdaten müssen bei allen Wechselrichtern identisch sein, hier als Beispiel der default "admin:admin"
ansonsten würde mir nur einfallen den Code für jeden Wechselrichter ohne eine Schleife einfach zu wiederholen und die Zugangsdaten jeweils anzupassen.
Die Systemvariable müssen natürlich vorher manuell angelegt werden, sonst läuft das Script nicht durch.
Ich teste noch die Frequenz in der ich das laufen lassen werde. Ich vermute es wird ein 5 Minuten Takt, da die Daten vom Wechselrichter nicht öfter aktualisiert werden.
Hier ein Bild von den Systemvariablen
Die Wechselrichter liefern ca. alle 5 Minuten neue Daten, das aber zu unterschiedlichen Zeitpunkten. Hier ein Bild mit Hilfe von CCU-Historian, Update Frequenz für die Variablen stand auf 30 Sekunden zum Test. (begeistert mich das Add-On!) Ich habe jetzt die Updatefrequenz auf 2 Minuten eingestellt und das während des Tages. Das scheint mir so ziemlich die höchste sinnvolle Frequenz zu sein.
Danke an @Selecta und MichaelN, war mir nur möglich mit Hilfe dieser Vorlagen!
Die auskommentierten WriteLine Zeilen habe ich drin gelassen, evtl. hilft es bei der Fehlersuche wenn was nicht läuft...
Die Zugangsdaten müssen bei allen Wechselrichtern identisch sein, hier als Beispiel der default "admin:admin"
ansonsten würde mir nur einfallen den Code für jeden Wechselrichter ohne eine Schleife einfach zu wiederholen und die Zugangsdaten jeweils anzupassen.
Die Systemvariable müssen natürlich vorher manuell angelegt werden, sonst läuft das Script nicht durch.
Ich teste noch die Frequenz in der ich das laufen lassen werde. Ich vermute es wird ein 5 Minuten Takt, da die Daten vom Wechselrichter nicht öfter aktualisiert werden.
Code: Alles auswählen
! vorhandene Deye Wechselrichter abfragen 27.12.2023 U.Dicke
! Danke an selecta und MichaelN für die guten Vorlagen :-)
string rueck; var Wert; integer anfang;
var pv_now_gesamt = 0.0;
var pv_today_gesamt = 0.0;
var pv_total_gesamt = 0.0;
!Liste "Hostanteil" der Netzwerkadressen der abzufragenden Wechselrichter getrennt durch Tab /t;
string liste = "51\t52\t53"; ! Liste { "51", "52", "53" }
integer Nr = 0;
string index; ! Indexvariable
foreach (index, liste) {
Nr = Nr +1;
!WriteLine("Hostanteil : " # index);
!WriteLine(Nr # ". Wechselrichter");
string abfrage_url = "http://admin:admin@192.168.178." # index # "/status.html";
!WriteLine(abfrage_url );
!temp. Variablen zurücksetzen falls ein Wechselrichter nicht mehr oder noch nicht antwortet. Summen sind ohne das falsch.
rueck = "";
Wert = 0;
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &rueck);
!now;
string Suchbegriff1 = "webdata_now_p";
anfang = rueck.Find(Suchbegriff1) + Suchbegriff1.Length() + 4;
Wert = rueck.Substr(anfang,5).ToFloat();
!WriteLine(Suchbegriff1 # index # ":" # Wert) ;
pv_now_gesamt = pv_now_gesamt + Wert;
!Systemvariable "pv_webdata_now_p # index" vorher anlegen!
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pv_" # Suchbegriff1 # index).State(Wert);
!today;
string Suchbegriff2 = "webdata_today_e";
anfang = rueck.Find(Suchbegriff2) + Suchbegriff2.Length() + 4;
Wert = rueck.Substr(anfang,9).ToFloat();
!WriteLine(Suchbegriff2 # index # ":" # Wert) ;
!Systemvariable "pv_webdata_today_e # index" vorher anlegen!;
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pv_" # Suchbegriff2 # index).State(Wert);
pv_today_gesamt = pv_today_gesamt + Wert;
!total;
string Suchbegriff3 = "webdata_total_e";
anfang = rueck.Find(Suchbegriff3) + Suchbegriff3.Length() + 4;
Wert = rueck.Substr(anfang,8).ToFloat();
!WriteLine(Suchbegriff3 # index # ":" # Wert) ;
pv_total_gesamt = pv_total_gesamt + Wert;
!Systemvariable "pv_webdata_total_e # index" vorher anlegen!;!ich brauche diese Daten nicht
!dom.GetObject(ID_SYSTEM_VARIABLES).Get(Suchbegriff3 # index).State(Wert); !ich brauche diese Daten nicht
}
!WriteLine("Alles gelesen, Summen ausgeben");
!WriteLine("pv_now_gesamt : " # pv_now_gesamt);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pv_now_gesamt").State(pv_now_gesamt);
!WriteLine("pv_today_gesamt : " # pv_today_gesamt);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("pv_today_gesamt").State(pv_today_gesamt);
!WriteLine("pv_total_gesamt : " # pv_total_gesamt);
!WriteLine("Fertig!");
Die Wechselrichter liefern ca. alle 5 Minuten neue Daten, das aber zu unterschiedlichen Zeitpunkten. Hier ein Bild mit Hilfe von CCU-Historian, Update Frequenz für die Variablen stand auf 30 Sekunden zum Test. (begeistert mich das Add-On!) Ich habe jetzt die Updatefrequenz auf 2 Minuten eingestellt und das während des Tages. Das scheint mir so ziemlich die höchste sinnvolle Frequenz zu sein.