Von PV Anlage Werte auslesen und in Variable schreiben
Moderator: Co-Administratoren
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Und das Leerzeichen davor weg. Ich habs oben korrigiert.
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
Erstmal vielen Dank für deine Mühe.
Ich habe das ganze jetzt so Umgebaut zum testen:
string return;
string abfrage_url = "http://username:password@xxxxx/status.html";
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff1 = "webdata_now_p";
integer anfang = return.Find(Suchbegriff1)+Suchbegriff1. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff2 = "webdata_today_e";
integer anfang = return.Find(Suchbegriff2)+Suchbegriff2. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff3 = "webdata_total_e";
integer anfang = return.Find(Suchbegriff3)+Suchbegriff3. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
Als Ausgabe erhalte ich jetzt:
37"
0.3
0.4
Mein Problem was ich jetzt noch habe ist, dass die Zahlen ja variieren und mal einstellig (z.B 1 Watt) oder auch 3 stellig (z.B. 100 Watt) sein können.
Wie du aber in der Ausgabe siehst, habe ich dann bei der 37 die Anführungszeichen mit dabei.
Hast du zufällig einen Tipp wie ich das umgehen kann?
Ich habe das ganze jetzt so Umgebaut zum testen:
string return;
string abfrage_url = "http://username:password@xxxxx/status.html";
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff1 = "webdata_now_p";
integer anfang = return.Find(Suchbegriff1)+Suchbegriff1. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff2 = "webdata_today_e";
integer anfang = return.Find(Suchbegriff2)+Suchbegriff2. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff3 = "webdata_total_e";
integer anfang = return.Find(Suchbegriff3)+Suchbegriff3. Length() + 4;
var Wert = return.Substr(anfang,3).ToInteger();
WriteLine(return.Substr(anfang,3)) ;
Als Ausgabe erhalte ich jetzt:
37"
0.3
0.4
Mein Problem was ich jetzt noch habe ist, dass die Zahlen ja variieren und mal einstellig (z.B 1 Watt) oder auch 3 stellig (z.B. 100 Watt) sein können.
Wie du aber in der Ausgabe siehst, habe ich dann bei der 37 die Anführungszeichen mit dabei.
Hast du zufällig einen Tipp wie ich das umgehen kann?
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Deswegen musst Du sicherstellen, daß die längste Zahl auf jeden Fall komplett ausgeschnitten wirdSelekta hat geschrieben: ↑10.01.2023, 14:47Mein Problem was ich jetzt noch habe ist, dass die Zahlen ja variieren und mal einstellig (z.B 1 Watt) oder auch 3 stellig (z.B. 100 Watt) sein können.
Wie du aber in der Ausgabe siehst, habe ich dann bei der 37 die Anführungszeichen mit dabei.
Hast du zufällig einen Tipp wie ich das umgehen kann?
Dafür ist die "3" in dem Code zuständig.
Code: Alles auswählen
var Wert = return.Substr(anfang,3).ToInteger();
Das merkst Du, wenn Du die Werte in eine Systemvariable schrieben lässt.
Ach ja, wenn nicht nur ganzzahlige Wert vorkommen, dann nimmt ToFloat() statt ToInteger()
Und btw: Code immer in Code Tags </> einfügen
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
Hi Michael,
danke für die Erklärung!
Habe es nochmals angepasst und versucht in eine Variable zu schreiben vom Typ Zeichenkette. (Auch Zahl habe ich probiert)
Die Variablen habe ich so genannt wie die werte die ausgelesen werden. Z.B. webdata_now_p
Jedoch steht dort dann immer 0 drin.
Was mache ich falsch?
danke für die Erklärung!
Habe es nochmals angepasst und versucht in eine Variable zu schreiben vom Typ Zeichenkette. (Auch Zahl habe ich probiert)
Die Variablen habe ich so genannt wie die werte die ausgelesen werden. Z.B. webdata_now_p
Jedoch steht dort dann immer 0 drin.
Was mache ich falsch?
Code: Alles auswählen
string return;
string abfrage_url = "http://xxx:xxx@xxx/status.html";
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff1 = "webdata_now_p";
integer anfang = return.Find(Suchbegriff1)+Suchbegriff1. Length() + 3;
var Wert = return.Substr(anfang,5).ToFloat();
WriteLine(return.Substr(anfang,5)) ;
dom.GetObject(ID_SYSTEM_VARIABLES). Get(Suchbegriff1).State(Wert);
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff2 = "webdata_today_e";
integer anfang = return.Find(Suchbegriff2)+Suchbegriff2. Length() + 3;
var Wert = return.Substr(anfang,9).ToFloat();
WriteLine(return.Substr(anfang,9)) ;
dom.GetObject(ID_SYSTEM_VARIABLES). Get(Suchbegriff2).State(Wert);
system.Exec("wget --timeout=10 -q -O - '" # abfrage_url # "'", &return);
string Suchbegriff3 = "webdata_total_e";
integer anfang = return.Find(Suchbegriff3)+Suchbegriff3. Length() + 3;
var Wert = return.Substr(anfang,8).ToFloat();
WriteLine(return.Substr(anfang,8)) ;
dom.GetObject(ID_SYSTEM_VARIABLES). Get(Suchbegriff3).State(Wert);
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Ich habe da mal aufgeräumt. Du musst die Daten ja nur einmal abholen...
Prinzipiell hätte es aber gehen müssen. (EDIT: jetzt geht es auch) Teste es nochmal und schau was das Skript ausgibt. Da müsste dann der Name der Systemvariable und der darin zu speichernde Wert stehen. Wenn nicht, ins Fehlerprotokoll schauen.
Prinzipiell hätte es aber gehen müssen. (EDIT: jetzt geht es auch) Teste es nochmal und schau was das Skript ausgibt. Da müsste dann der Name der Systemvariable und der darin zu speichernde Wert stehen. Wenn nicht, ins Fehlerprotokoll schauen.
Code: Alles auswählen
string rueck; var Wert; integer anfang;
string abfrage_url = "http://xxx:xxx@xxx/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);
Zuletzt geändert von MichaelN am 10.01.2023, 19:55, insgesamt 2-mal geändert.
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 +++
- Baxxy
- Beiträge: 10832
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 608 Mal
- Danksagung erhalten: 2227 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Code: Alles auswählen
string a = '"11.5"';
WriteLine("a zu float: "#a.ToFloat());
Code: Alles auswählen
------------------------------- Scriptausgabe -------------------------------
a zu float: 0.000000
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Ja, er hat da nnicht sauber gearbeitet.
Ich schrub ja:
mit "+4" statt "+3" geht es.
Ich schrub ja:
Ok, er hat vielleicht nicht realisiert, das "11" nicht das gewünschte Ergebnis ist.MichaelN hat geschrieben: ↑10.01.2023, 13:40Ggf musst Du Mit den Zahlen 4 und 5 etwas rumspielen
Gepsiehcert wird in einer Systemvariable, die genauso heißt wie der Suchbegriff, die musst Du vorher anlegen
Unter "Skript testen" ausgeführt sollte eine Ausgabe erscheinen, die beim anpassen der Korretkurwerte hilft
mit "+4" statt "+3" geht es.
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: 551
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 27 Mal
- Danksagung erhalten: 125 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
man könnte auch gleich nach system.Exec
einmalig alle Hochkommata entfernen:
einmalig alle Hochkommata entfernen:
Code: Alles auswählen
rueck = rueck.Replace('"',"");
Zuletzt geändert von Tyfys am 10.01.2023, 19:32, insgesamt 1-mal geändert.
Gruß
Harry
Harry
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Von PV Anlage Werte auslesen und in Variable schreiben
Ich schrieb ja auch
Ist auch ohne jegliche Fehlerbehandlung, etc.Quick&Dirty
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 +++