.cfg auslesen und daten verarbeiten

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
sebbo
Beiträge: 99
Registriert: 25.09.2012, 19:30
Hat sich bedankt: 1 Mal

.cfg auslesen und daten verarbeiten

Beitrag von sebbo » 08.06.2018, 11:38

Hallo,

ich lese mit einem Script Daten aus einer cfg aus. Dabei kommen z.B. Temperaturen als Wert 290 an. Diesen muss ich dann mit 0,0625 multiplizieren um auf die Temperatur zu kommen. Versucht habe ich das so:

Code: Alles auswählen

string host = "192.168.25.25/GetState.csv";

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - 'http://"#host#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

string P1 = v.StrValueByIndex(",",181);
var P2 = P1 * 0.0625;
WriteLine("Temperatur:" # (P2));
Ergebnis ist 290. Verstehe es nicht.


Vielleicht kann mir jemand den entscheidenden Tipp geben.
Raspberrymatic und ioBroker im Einsatz.

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von Homoran » 08.06.2018, 11:42

sebbo hat geschrieben:string P1 = v.StrValueByIndex(",",181);
var P2 = P1 * 0.0625;
Du rechnest mit Strings?


Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

sebbo
Beiträge: 99
Registriert: 25.09.2012, 19:30
Hat sich bedankt: 1 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von sebbo » 08.06.2018, 12:35

Ehrlich gesagt habe ich das script aus einem anderen Thread entwendet und konnte damit erfolgreich die Daten lesen. Müssen jetzt halt noch umgerechnet werden.

Die ausgelesenen Daten können auch Wörter sein. Diese müssen klar nicht verändert werden.

Was bedeutet "string" in diesem Fall? Oder liegt es hieran?

LG Sebbo
Raspberrymatic und ioBroker im Einsatz.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von alchy » 08.06.2018, 19:12

sebbo hat geschrieben:der liegt es hieran?
Das Rechnen mit Strings ist nicht zielführend, und die Multiplikation wird dabei eben einfach ignoriert.
Also vorher umwandeln:

Code: Alles auswählen

string P1 = "295";
real P2 = P1.ToFloat()*0.0625;
WriteLine("Temperatur:" #P2);
Hättest du statt der Multiplikation mal eine Addition versucht, wärst du wahrscheinlich noch verwirrter über das Ergebnis.

Code: Alles auswählen

string P1 = "295";
var P2 = P1+0.0625;
WriteLine("Temperatur:" #P2); !Temperatur:2950.062500
sebbo hat geschrieben: Die ausgelesenen Daten können auch Wörter sein. Diese müssen klar nicht verändert werden.
Ich weiß zwar nicht was du damit meinst, das Wandeln eines Strings in eine Realzahl ist natürlich abhängig von dem String.

Code: Alles auswählen

string P1 = "zweihundertfünfundneunzig";
var P2 = P1.ToFloat()*0.0625;
WriteLine("Temperatur:" #P2); !Temperatur:0.000000

geht natürlich nicht. Scriptdoku siehe Signatur oder bei EQ-3

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

sebbo
Beiträge: 99
Registriert: 25.09.2012, 19:30
Hat sich bedankt: 1 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von sebbo » 08.06.2018, 22:44

Also erstmal danke. Aber jetzt verstehe ich es erst recht nicht mehr.

Das ist die cfg:

Code: Alles auswählen

SYSINFO,1.6.9,17046,1,0,99,257,4,1,2
Time,n.a.,n.a.,Filterdruck,Chlor,CPU Temp,Redox,pH,WasserMesszelle,n.a.,n.a.,Aussen,Technikraum,n.a.,n.a.,n.a.,Umwälzpumpe,PHminusDos,ChlorDos,n.a.,n.a.,n.a.,n.a.,n.a.,Anströmung,TASTER2,TASTER3,TASTER4,n,n,n,n,n,n,n,n,Cl Rest,pH- Rest,pH+ Rest,Cl consumption,pH- consumption,pH+ consumption
h,mV,mV,Bar,ppm,C,mV,pH,C,C,C,C,C,C,C,C,--,--,--,--,--,--,--,--,cm/s,--,--,--,--,--,--,--,--,--,--,--,%,%,%,ml,ml,ml
0,0,0,-0.400,-0.957446808,147.5,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1,0.0625,0.0625,0.0000125,0.0000997340,-0.00468750,0.0625,0.0078125,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,0.0625,1,1,1,1,1,1,1,1,0.001617183658,1,1,1,1,1,1,1,1,1,1,1,0.1,0.1,0.1,1,1,1
5927,0,0,30875,0,22652,-40159,6484,290,0,0,279,282,0,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1000,1000,1000,0,0,0
bei der will ich die Stelle 181 in Temperatur umwandeln. Also aktuell die wäre das die 290. Multipliziert mit 0.0625 wäre es die Temp.

Wie müsste denn das Script korrigiert aussehen?

LG Sebbo
Raspberrymatic und ioBroker im Einsatz.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von alchy » 08.06.2018, 22:56

P1 ist ein String und muss umgewandelt werden um damit rechnen zu können.

P1.ToFloat()



Code: Alles auswählen

string host = "192.168.25.25/GetState.csv";

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - 'http://"#host#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
string P1 = v.StrValueByIndex(",",181);
real P2 = P1.ToFloat()*0.0625;
WriteLine("Temperatur:" #P2);
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

sebbo
Beiträge: 99
Registriert: 25.09.2012, 19:30
Hat sich bedankt: 1 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von sebbo » 09.06.2018, 09:20

Danke! Läuft!

Und mit .ToString(2) bekomme ich das dann sogar auf 2 Nachkommastellen. Danke Dir...

Übrigens geht dein Link in deiner Signatur nicht... Wollte ich mal lesen.



LG Sebbo
Raspberrymatic und ioBroker im Einsatz.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: .cfg auslesen und daten verarbeiten

Beitrag von alchy » 09.06.2018, 15:30

Die verlinkte Website homematic-inside.de zur ScriptDoku funktioniert zwar wieder, aber es sind noch nicht alle Inhalte verfügbar.
Daher auch der Hinweis
oder bei EQ-3
Wenn der reine Hinweis zu schwer ist, helfe ich natürlich gerne weiter:
>> EQ-3 << -> Downloads - Download-Art: Scripte.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic allgemein“