String in Real umwandeln

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

duffy6
Beiträge: 137
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal

String in Real umwandeln

Beitrag von duffy6 » 27.11.2020, 21:44

Hallo zusammen,

ich komm nicht dahinter, warum mein Skript nicht funktioniert:

Code: Alles auswählen

string avg;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=294&b=-1M&ag=avg'", &avg); ! Wert aus CCU-Homematic holen
WriteLine("Wert aus CCU-Historian: "#avg);
real prozent = avg.ToReal();

real maxleistung = 15;
real heizwert = 11.295;
real zustandszahl =0.9571;

real verbrauch = (prozent/100) * maxleistung * 24 / (heizwert * zustandszahl);
WriteLine("Verbrauch in m3: "#verbrauch);
Die Variable "verbrauch" wird einfach nicht richtig berechnet!
Sie ist stets genauso groß wie "avg"

Ich komme nicht dahinter, wie ich mit dem Wert "avg" weiterrechnen kann...

Gruß
duffy6

Matsch
Beiträge: 1180
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 18 Mal
Danksagung erhalten: 117 Mal

Re: String in Real umwandeln

Beitrag von Matsch » 27.11.2020, 21:50

Es gibt in der Skriptsprache keinerlei Vorrangregeln, es wird streng von rechts nach links berechnet. Vorränge müssen immer mit Klammern erzwungen werden, das ist hier beim Dividenden wohl nicht der Fall.

jp112sdl
Beiträge: 7631
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 413 Mal
Danksagung erhalten: 884 Mal
Kontaktdaten:

Re: String in Real umwandeln

Beitrag von jp112sdl » 27.11.2020, 22:13

duffy6 hat geschrieben:
27.11.2020, 21:44

Code: Alles auswählen

real prozent = avg.ToReal();
.ToReal(); gibt es nicht.
Es muss .ToFloat() heißen.

Seite 19:
https://www.eq-3.com/Downloads/eq3/down ... g_V2.2.pdf

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

duffy6
Beiträge: 137
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal

Re: String in Real umwandeln

Beitrag von duffy6 » 27.11.2020, 22:59

Oh, das war ein Typo. Im Skript steht tatsächlich .ToFloat()

Aber dad Skript wirft gar nix aus! Nicht mal einen Fehler!

Es ist zum Haare raufen:

Code: Alles auswählen

string avg;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=294&b=-1M&ag=avg'", &avg);
WriteLine("Mittelwert aus CCU-Historian in Prozent: "#avg);

real prozent; 
prozent = avg.ToFloat();

real maxleistung = 15;
real heizwert = 11.295;
real zustandszahl = 0.9571;
                                                                                         
real verbrauch = (avg/100) * maxleistung * 24 / (heizwert * zustandszahl);
WriteLine("Verbrauch in m3: "#verbrauch);


Benutzeravatar
Black
Beiträge: 3698
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 97 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: String in Real umwandeln

Beitrag von Black » 27.11.2020, 23:13

doch, wirft es...
der Fehler steht dann im Syslog, der Editor der CCU/RMatik gibt die aber nicht direkt den zugehörigen Teil des Fehlerprotokolles aus.

"Script testen" hätte den fehler auch angezeit.

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

technical contribution against annoying advertising

Matsch
Beiträge: 1180
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 18 Mal
Danksagung erhalten: 117 Mal

Re: String in Real umwandeln

Beitrag von Matsch » 27.11.2020, 23:28

Frage mich gerade, was herauskommt, wenn man einen String durch 100 teilt.

(avg/100)

Baxxy
Beiträge: 2519
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 204 Mal
Danksagung erhalten: 390 Mal

Re: String in Real umwandeln

Beitrag von Baxxy » 27.11.2020, 23:31

duffy6 hat geschrieben:
27.11.2020, 22:59
Es ist zum Haare raufen:
Black hat geschrieben:
27.11.2020, 23:13
doch, wirft es...
Macht es nicht, ist ja prinzipiell nicht falsch.
Er wandelt zwar...

Code: Alles auswählen

real prozent; 
prozent = avg.ToFloat();
Aber in der Berechnungszeile setzt er doch wieder avg ein.

Code: Alles auswählen

real verbrauch = (avg/100) * maxleistung * 24 / (heizwert * zustandszahl);
mit optimiertem Einzeiler:

Code: Alles auswählen

real prozent = avg.Trim().ToFloat();
und richtiger Berechnungszeile:

Code: Alles auswählen

real verbrauch = (prozent/100) * maxleistung * 24 / (heizwert * zustandszahl);
sollte es dann, vorausgesetzt die "Formel" stimmt, passen. :wink:

Baxxy
Beiträge: 2519
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 204 Mal
Danksagung erhalten: 390 Mal

Re: String in Real umwandeln

Beitrag von Baxxy » 27.11.2020, 23:33

Matsch hat geschrieben:
27.11.2020, 23:28
Frage mich gerade, was herauskommt, wenn man einen String durch 100 teilt.
Auf jeden Fall nichts stringentes. :mrgreen:

duffy6
Beiträge: 137
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal

Re: String in Real umwandeln

Beitrag von duffy6 » 27.11.2020, 23:34

Code: Alles auswählen


string avg;
system.Exec("curl 'http://192.168.133.102:8091/query/text.gy?dp=294&b=-1M&ag=avg'", &avg);
WriteLine("Mittelwert aus CCU-Historian in Prozent: "#avg);

real prozent; 
prozent = avg.ToFloat();

real maxleistung = 15;
real heizwert = 11.295;
real zustandszahl = 0.9571;
                                                                                         
real verbrauch = (avg/100) * maxleistung * 24 / (heizwert * zustandszahl);
WriteLine("Verbrauch in m3: "#verbrauch);

Die Berechnung funktioniert leider nicht!
Das Ergebnis lautet dann verbrauch = avg
Dabei sollte verbrauch ja einen ganz anderen Wert annehmen

Matsch
Beiträge: 1180
Registriert: 30.05.2019, 11:37
Wohnort: Chemnitz
Hat sich bedankt: 18 Mal
Danksagung erhalten: 117 Mal

Re: String in Real umwandeln

Beitrag von Matsch » 28.11.2020, 00:43

Ich steig aus ..... :roll:

Warum fragst du eigentlich die Community, wenn du dann keinen einzigen Hinweis umsetzt?
Zuletzt geändert von Matsch am 28.11.2020, 10:47, insgesamt 1-mal geändert.

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“