Von PV Anlage Werte auslesen und in Variable schreiben

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Tyfys
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

Beitrag von Tyfys » 10.01.2023, 19:40

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
Gruß
Harry

MichaelN
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

Beitrag von MichaelN » 10.01.2023, 19:53

Tyfys hat geschrieben:
10.01.2023, 19:40
mir scheint aber return ist noch ein special word
Korrekt. Daher habe ich den Variablennamen auch nochmal geändert zu "rueck" :wink:
ich hab ja auch nur eine von mehreren Techniken nennen wollen.
Wenn man sich anschauen will, wie man so einen Input ausmisten kann, dem sei ein Blick in mein JSON-Skript empfohlen.
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 +++

Selekta
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

Beitrag von Selekta » 11.01.2023, 10:09

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.

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);
Als Ausgabe kommt nun:

Code: Alles auswählen

webdata_now_p:2.000000
webdata_today_e:0.000000
webdata_total_e:0.400000
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!

Fonzo
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

Beitrag von Fonzo » 25.07.2023, 06:45

Selekta hat geschrieben:
10.01.2023, 11:12
Es handelt sich dabei um einen Wechselrichter Deye Sun600G3
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.

Gerti
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

Beitrag von Gerti » 25.07.2023, 07:24

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

Xel66
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

Beitrag von Xel66 » 25.07.2023, 08:54

Gerti hat geschrieben:
25.07.2023, 07:24
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.
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

Benutzeravatar
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

Beitrag von Black » 25.07.2023, 11:47

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
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

gamehunter
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

Beitrag von gamehunter » 22.08.2023, 22:03

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

u.dicke@gmx.de
Beiträge: 3
Registriert: 16.09.2023, 14:50
System: CCU
Wohnort: Gevelsberg

Re: Von PV Anlage Werte auslesen und in Variable schreiben

Beitrag von u.dicke@gmx.de » 28.12.2023, 00:12

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.

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!");
Hier ein Bild von den Systemvariablen
Screenshot 2023-12-28 111525.jpg
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!)
Screenshot 2023-12-28 112757.jpg
Historian
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.
Screenshot 2023-12-28 113029.jpg
Zeiteinstellung für das Script

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“