Programmnamen nach dem Editieren um Ziffern ergänzt

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

Moderatoren: jmaus, Co-Administratoren

Stefan0815
Beiträge: 74
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Stefan0815 » 18.04.2020, 18:58

Baxxy hat geschrieben:
18.04.2020, 18:28
Alles gut bei mir. Gleiches Ergebnis wie bei Xel66.

Grüße
Baxxy
Kennt Ihr das Verhalten gar nicht?

Baxxy
Beiträge: 747
Registriert: 18.12.2018, 15:45
System: Alternative CCU (RaspberryMatic etc.)
Hat sich bedankt: 72 Mal
Danksagung erhalten: 119 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Baxxy » 18.04.2020, 19:30

Stefan0815 hat geschrieben:
18.04.2020, 18:58
Kennt Ihr das Verhalten gar nicht?
Doch schon. Aber wenn's hochkommt hatte ich das vielleicht 3-4 mal im letzten Jahr.

Grüße
Baxxy

Stefan0815
Beiträge: 74
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Stefan0815 » 18.04.2020, 19:40

Baxxy hat geschrieben:
18.04.2020, 19:30
Stefan0815 hat geschrieben:
18.04.2020, 18:58
Kennt Ihr das Verhalten gar nicht?
Doch schon. Aber wenn's hochkommt hatte ich das vielleicht 3-4 mal im letzten Jahr.

Grüße
Baxxy
Kommt sicher auf die Häufigkeit der Änderungen an. Ich programmiere gerade meine Sonnenschutzsteuerung für die Markisen und Rollladen in Abhängigkeit von diversen Sensoren. Da bastelt man halt häufig an den Scripten.

Stefan0815
Beiträge: 74
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Stefan0815 » 24.04.2020, 19:00

OK. Nach mehreren Tagen programmieren habe ich den Fehler gefunden. Wie üblich sitzt er vor dem Rechner. :roll:

Man darf den Editormodus der Programme nur mit "Abbrechen" oder "OK" verlassen. Da ich gelegentlich den aktuellen Status von Systemvariablen nachsehen oder einfach ein anderes Programm öffnen wollte, klickt man dann schon mal einfach in die obere Menüleiste. Das ist genau das Problem, denn dann wird das Programm anscheinend nicht zurückgeschrieben. Hält man sich an "Abbrechen" oder "OK", gibt es auch kein Problem.

Der beste Weg Scripte zu schreiben und zu testen ist aber in jedem Fall der Script Developer. :D Dann einfach das getestete Script hineinkopieren... fertig.

Ist schon mal jemand aufgefallen, dass:

real Faktor = 2.0;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);

real Faktor = 2;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);
:shock: :shock: :shock:

unterschiedliche Werte ergibt? Homematic Script ist aber auch ein Mimöschen.

Grüße Stefan

Xel66
Beiträge: 6865
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 204 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Xel66 » 24.04.2020, 20:34

Wie ich schon geschrieben habe, beim Abbrechen wird die Bearbeitungskopie gelöscht und nicht in die Datenbank zurückgeschrieben. Darum konnte das auch nicht die Ursache sein. Ebenso bei OK, da werden die Änderungen zurückgeschrieben. Verlässt man das Editorfenster auf eine andere Art, wird beim weiteren Öffnen eben eine weitere Kopie des Programss geöffnet. Dieses erhält dann eine Ziffer. War schon immer so. Der Bug hat schon immer zwei Beine gehabt. :lol: Alle vorherigen diesbezüglichen Bugreports kamen zu dem gleichen Ergebnis.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 103 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
253 Programme, 218 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.45.7.20190622
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

Hütte
Beiträge: 393
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 8 Mal
Danksagung erhalten: 28 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Hütte » 04.05.2020, 18:10

Stefan0815 hat geschrieben:
24.04.2020, 19:00
...
Ist schon mal jemand aufgefallen, dass:

real Faktor = 2.0;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);

real Faktor = 2;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);
:shock: :shock: :shock:

unterschiedliche Werte ergibt? Homematic Script ist aber auch ein Mimöschen.

Grüße Stefan
Ich würde vorschlagen, dafür einen separaten Thread aufzumachen. Denn in diesem Thread geht das bestimmt unter.

Xel66
Beiträge: 6865
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 204 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Xel66 » 04.05.2020, 18:22

Weil im ersten Beispiel die Real als Real behandelt wird und im zweiten Fall als Integer, weil der erste Therm eine Integerzahl ist (auch wenn Du sie als real deklariert hast). Die CCU rechnet von rechts nach links und beachtet keine mathematischen Regeln wie Punkt vor Strichrechnung. Ist auch so dokumentiert und bedarf deswegen auch nicht unbedingt eines separaten Threads.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 103 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
253 Programme, 218 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.45.7.20190622
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

Benutzeravatar
jmaus
Beiträge: 5793
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 14 Mal
Danksagung erhalten: 285 Mal
Kontaktdaten:

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von jmaus » 04.05.2020, 18:29

Hütte hat geschrieben:
04.05.2020, 18:10
Stefan0815 hat geschrieben:
24.04.2020, 19:00
...
Ist schon mal jemand aufgefallen, dass:

real Faktor = 2.0;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);

real Faktor = 2;
real x = 10.10;
real z = 20.20;
real y = x+(Faktor*z);
WriteLine(y);
:shock: :shock: :shock:

unterschiedliche Werte ergibt? Homematic Script ist aber auch ein Mimöschen.

Grüße Stefan
Ich würde vorschlagen, dafür einen separaten Thread aufzumachen. Denn in diesem Thread geht das bestimmt unter.
Dafür brauch man aber auch keinen extra Thread. Diese "Limitation" bzw. eigenheit der Homematic Skriptsprache ist schon länger bekannt und das liegt an der Reihenfolge der impliziten Datentypwandlungen die leider ursprünglich von den Entwicklern der Skriptsprache statt von rechts nach links von links nach rechts gewählt wurde wie das eigentlich in anderen Programmiersprachen üblich ist. So so ist "der schuldige" in dem oberen Beispiel die Zeile

Code: Alles auswählen

real y =  x+(Faktor*z);
Wenn man diese kurzhand in folgende ändert stimmt alles wieder:

Code: Alles auswählen

real y = x+(z*Faktor);
D.h. wie man daran erkennen kann kommt es sehr wohl auf die Reihenfolge der Argumente bei eine solchen Berechnung an, denn "Faktor" wird ja durch das fehlen des ".0" am schluss implizit in ein Integer gewandelt und somit kommt es da eben zu Rundungen.
RaspberryMatic 3.51.6.20200420 @ ESXi mit ~170 HomeMatic Geräten + ioBroker – GitHubGitHub Sponsors / PayPalTwitter

Stefan0815
Beiträge: 74
Registriert: 16.04.2019, 15:15
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Stefan0815 » 04.05.2020, 18:50

...woran das liegt, war mir schon klar. Als "normaler" Softwareentwickler hat man sowas allerdings selten auf dem Schirm. :D Ich hatte gerade ein Script in der Mache, was den gewichteten Mittelwert, Varianz und Standardabweichung einer Datenreihe berechnet. Überschlägig (rund 200 Werte) sehen die Daten dann gut aus. Zufällig habe ich das dann in Excel übernommen und von Hand gerechnet. Erst dann fällt diese kleine Unzulänglichkeit auf. Wenn bei expliziter Variablendeklaration eine Typumwandlung erfolgt, ist das schon etwas schräg. Also alles nur noch als var und AUFPASSEN.

Grüße
Stefan

Xel66
Beiträge: 6865
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 204 Mal

Re: Programmnamen nach dem Editieren um Ziffern ergänzt

Beitrag von Xel66 » 04.05.2020, 19:00

Stefan0815 hat geschrieben:
04.05.2020, 18:50
Also alles nur noch als var und AUFPASSEN.
Damit verhinderst Du auch keine Typenwandlung, denn diese geschieht auf Basis des Rechenwertes. Ergibt dieses eine Ganzzahl, wird automatisch mit Integer gerechnet. Kommt es auf Genauigkeit an, ist der Wert eben vor der Weiterverarbeitung mit 1.0 zu multiplizieren.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 103 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
253 Programme, 218 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.45.7.20190622
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

Antworten

Zurück zu „RaspberryMatic“