Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

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

Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von Black » 18.12.2018, 22:05

es sei eine Systemvariable Typ Zahl gegeben (intern eine Gleitkommazahl) (hier bei mir mit ID 3478)

gemäß Kapitel 6.4 Anleitung ist in HMScript eine Gletkommazahl mit +-1.7e+-308 definiert

nun folgede kleinen Programme:

Code: Alles auswählen

object o1= dom.GetObject (3478);
o1.State (3.76);  !- Geht ergibt 3.76
WriteLine (o1.State () );   
Das nächste:

Code: Alles auswählen

object o1= dom.GetObject (3478);
o1.State ("37.6e-1".ToFloat ());  !- Geht ergibt 3.76
WriteLine (o1.State () );   
nun wirds skurill:

Code: Alles auswählen

object o1= dom.GetObject (3478);
o1.State (37.6e-1);   // Script Runtime Error egal ob grosses oder kleines e
WriteLine (o1.State () );   
Die wissenschaftliche Notation kann dieses Konstrukt nicht ab.

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

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

Re: Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von alchy » 19.12.2018, 00:04


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.

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

Re: Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von Black » 19.12.2018, 08:22

aber anscheinend immer noch aktuell.. über sowas fällt man halt beim programmieren
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

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von jmaus » 19.12.2018, 08:49

Ich sage mal so: Der Syntax Parser in Rega ist eine Bitch ;-)

Und das "Problem" mit der Formatierung von floating point werten mittels wissenschaftlicher Notation ist in der Tat nichts neues. Es ist nämlich genauso wie du es bemerkt hast, das der Parser mit solchen real werten in wiss. Notation nichts anfangen kann wenn diese nicht in Anführungszeichen gesetzt sind, d.h. also zuerst einmal ein String waren. Genau deshalb wurde ja auch die Skriptdokumentation entsprechend angepasst (siehe https://www.eq-3.com/Downloads/eq3/down ... g_V2.2.pdf) und dahingehend repariert, das das dort vorkommende Beispiel wie folgt aussieht (Siehe Kapitel 6.4):

Code: Alles auswählen

real r = "-1.0E-1".ToFloat(); ! -0.1
D.h. der real wert mittels wiss. Notation muss zwingend in Anführungszeichen gesetzt werden. Folglich müsste dein Beispiel wie folgt (wie du schon gezeigt hattest) aussehen:

Code: Alles auswählen

object o1 = dom.GetObject(3478);
o1.State("37.6e-1".ToFloat());  !- Geht ergibt 3.76
WriteLine(o1.State());
Nun mag das vielleicht unschön sein und in der Tat würde ich gerne das in der Skriptsprache auch reparieren. Die Frage ist nur ob sich hierfür der Aufwand wirklich lohnt und ob das auch nicht dazu führen würde das es dann in naher Zukunft Skripte gibt die die wiss. Notation ohne Anführungszeichen nutzt und damit zu älteren Versionen inkompatibel sind. Nun kann man natürlich prinzipiell bei vielen Änderungen so argumentieren, aber das hier erscheint mir IMHO ein verschmerzbarer Kompromiss zu sein – real werte eben in Strings zu verpacken wenn man unbedingt die wiss. Notation einsetzen will/muss.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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

Re: Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von Black » 19.12.2018, 10:56

wie du schon schriebst, das problem ist unschön, aver umschiffbar mit vertretbarem aufwand.

Drüber gefallen bin ich, als mein Systemvariablenbackup script zu bestimmten Bedingungen scriptfehler warf. Was im Nachhinein daran lag, dass die Ausgabe einer Fliesskommazahl je nach Wert in e-Notation erfolgt. die gleiche e-Notation aber wieder zurückspielen fürht dann zu Fehler.
Gut, ätzend aber umschiffbar.

Relevanter finde ich die geschichte mit den inkosistenten Zeitstempeln
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

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: Kleine Anomalie bei Typ real schreiben in Sysvar in wissenschaftlicher Notation

Beitrag von jmaus » 19.12.2018, 12:15

Black hat geschrieben:
19.12.2018, 10:56
Relevanter finde ich die geschichte mit den inkosistenten Zeitstempeln
Du meinst das hier?
viewtopic.php?f=65&t=47544#p475977

Da kommen wir aber leider nicht so richtig weiter denn wie ich dort schon geschrieben hatte (und wir sollten dort weiterdiskutierten) kann ich schwer einschätzen welches der beiden Verhalten richtig sein soll und welches falsch. Und die Chance ist leider zu groß wenn man das jetzt ändert, das dann einem alles auf die Füße fällt.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „RaspberryMatic“