Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.31.25

Fehler in Firmware und WebUI & Workarounds

Moderator: Co-Administratoren

F2EbXg
Beiträge: 73
Registriert: 23.04.2017, 19:12

Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.31.25

Beitrag von F2EbXg » 09.04.2018, 09:08

Seit dem Update 2.31.25 funktionierten einige Funktionen in meiner Anlage nicht mehr.
Heute habe ich mich die ganze Zeit gewundert, wie do an einer Stelle im Script, das Script stoppt, ohne Log-Eintrag.

Habe dann eben festgestellt, dass vier Variablen deren Namen länger als 50 Zeichen lang sind einfach auf exakt 50 Zeichen abgeschnitten wurden.

Ist das ein üblicher Vorgang, dass durch ein Update, das Update die Variablen auf diese Art und Weise anpasst?

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von NickHM » 09.04.2018, 09:29

Guten Morgen

Du meinst Variablen, die Du im Script definierst? Keine SysVar aus der WebUI?

Kannst Du mal den Ausschnitt aus dem Script zeigen? Welcher Typ von Variablen?

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: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von jmaus » 09.04.2018, 09:58

Mir ist diese angebliche Begrenzung in den neuesten ReGaHss Versionen nicht bekannt. Bitte minimalistische Beispiele bringen und dann ggf. im RaspberryMatic Bugtracker ein Issue dazu öffnen wenn das verifiziert werden kann.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

F2EbXg
Beiträge: 73
Registriert: 23.04.2017, 19:12

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von F2EbXg » 09.04.2018, 10:17

Ich kann leider keine Beispiel bringen.
Seitdem Update funktionierte etwas nicht.
Heute schaute ich mir an, woran es liegen könnte.
ich stellte fest, dass ein Script nicht komplett ausgeführt wurde.
Per Konsolenhaltepunkte fand ich heraus, dass er den State eine Variablen nicht setzen konnte.
In diesem Atemzug stellte ich fest, dass vier Variablen (also der Name) abgeschnitten waren.
Habe diese dann wieder mit dem korrekten Namen überschrieben und jetzt geht wieder alles.

Mehr kann ich leider nicht dazu beitragen, sorry

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von NickHM » 09.04.2018, 11:45

Guten Morgen

Wenn das jetzt nicht mehr nachvollziehbar ist, kann Jens das auch nicht beheben.
Ich vermute mal, das nicht sehr viele User VariablenNamen mit mehr als 50 Zeichen verwenden. Also ist das schlecht zu verifizieren.
An Deiner Stelle würde ich die Namen vorsichtshalber kürzen um weiteren Stress zu vermeiden.

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

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von alchy » 10.04.2018, 21:18

Ohne natürlich die Scripte des TE zu kennen, spielen wir mal folgendes durch:

ChangeLog:
2017-07-07 Jens Maus <mail@jens-maus.de>
* fixed bug where object names were always trunctaed to 49 characters so
that GetObject() calls with the full object name didn't match.
Soweit zur Ursache.

Früher waren die Namen auf eben die 49 Stellen beschränkt. Das heißt, Du konntest in der Webui oder per Skript nur einen Namen mit 49 Stellen generieren.
Seit der Beta15 ist es möglich auch längere Namen zu speichern. Gute Idee, .....
Soweit zur Geschichte

Dann testen wir das Ganze doch einfach mal
Legt man nun zwei Systemvariablen an:

1. DiesIstEineSystemvariableMitMehrAlsFuenfzigZeichenImNamen
2. DiesIstEineSystemvariableMitMehrAlsFuenfzigZeichenIm
variablen50Zeichen.jpg
Ergibt das Script:

Code: Alles auswählen

string svId;string oSV;string slist = "";
foreach(svId, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs()) {
object oTmp = dom.GetObject(svId);
integer result  = oTmp.Name().Find("DiesIstEine"); if (result > -1) {
slist = slist #"ISE_ID:"#oTmp.ID()  #"\tNAME:" #oTmp.Name()  #"\r\n";
}}
WriteLine(slist);
korrekt die Ausgabe:

Code: Alles auswählen

ISE_ID:48365	NAME:DiesIstEineSystemvariableMitMehrAlsFuenfzigZeichenIm
ISE_ID:48364	NAME:DiesIstEineSystemvariableMitMehrAlsFuenfzigZeichenImNamen
Soweit so gut.

Nun greifen wir auf das Object zu, benutzen aber nur 49 Buchstaben des Namens.

Code: Alles auswählen

string sysvarname = "DiesIstEineSystemvariableMitMehrAlsFuenfzigZeiche";
object test = dom.GetObject(sysvarname);
if(test){
WriteLine("Object mit Namen: \t\t"#sysvarname #" \t\t ist angeblich vorhanden");
WriteLine("der Name dieses Objectes ist \t"#test.Name() #" \t mit der ID: "#test.ID() #" aber warum?");
}else{
WriteLine("Richtig wäre Object mit Namen: "#sysvarname #" NICHT vorhanden");}

Ergibt dann falsch:

Code: Alles auswählen

Object mit Namen: 		DiesIstEineSystemvariableMitMehrAlsFuenfzigZeiche 		 ist angeblich vorhanden
der Name dieses Objectes ist 	DiesIstEineSystemvariableMitMehrAlsFuenfzigZeichenImNamen 	 mit der ID: 48364 aber warum?
Da es das Object DiesIstEineSystemvariableMitMehrAlsFuenfzigZeiche nicht gibt, sondern nur Objekte mit mehr Buchstaben,
sollte das else ausgeführt werden. Wird es aber nicht, wenn man 49 Buchstaben des Namens verwendet. Es wird falsch das Object benutzt, welche zuerst "gefunden" wird.
Verwendet man mehr oder weniger, ist dann alles wieder in Ordnung.
NickHM hat geschrieben: Wenn das jetzt nicht mehr nachvollziehbar ist, kann Jens das auch nicht beheben.


Er hat es doch eingebaut.
NickHM hat geschrieben: Ich vermute mal, das nicht sehr viele User VariablenNamen mit mehr als 50 Zeichen verwenden. Also ist das schlecht zu verifizieren.
Wieso nicht nachvollziehbar. Es wurde so als Feature eingebaut und (fast) jeder kann es nachvollziehen.
Jetzt könnte man natürlich sagen, Hat eh keiner Variablen mit so vielen Buchstaben. Aber warum wurde es dann eingebaut?


Ticket: E1F1ED15A3DC4

Alchy
Zuletzt geändert von alchy am 13.04.2018, 22:40, insgesamt 1-mal geändert.

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.

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von Gluehwurm » 10.04.2018, 21:44

alchy hat geschrieben:Aber warum wurde es dann eingebaut?
Spart vielleicht Notizzettel ... :wink:

NickHM
Beiträge: 3733
Registriert: 23.09.2017, 12:04
Hat sich bedankt: 66 Mal
Danksagung erhalten: 120 Mal

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von NickHM » 11.04.2018, 10:58

Da es das Object DiesIstEineSystemvariableMitMehrAlsFuenfzigZeiche nicht gibt, sondern nur Objekte mit mehr Buchstaben,
sollte das else ausgeführt werden. Wird es aber nicht, wenn man 49 Buchstaben des Namens verwendet. Es wird falsch das Object benutzt, welche zuerst "gefunden" wird.
Verwendet man mehr oder weniger, ist dann alles wieder in Ordnung.
Ich habe nicht alles verstanden, aber das ist dann ein Fehler, den Jens beheben sollte??

----

"nicht nach vollziehbar" bezog sich auf die Aussage des TE, dass der Fehler bei ihm nach der manuellen Ergänzung der Namen im Script nicht mehr auftaucht. Ausserdem hatte ich das so verstanden, dass die Var Namen im Script Quelltext auf 50 Zeichen gekürzt wurden.

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

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von alchy » 11.04.2018, 11:21

Wieder in Ordnung bringen, wäre natürlich von Vorteil, denn es ist fehlerhaftes Verhalten.
Da sowieso die Aussage/ Frage gekommen wäre "kannst du ein genaues Beispiel" für die Behauptung bringen, habe ich mir die Mühe gemacht alles haarklein zu beschreiben. Das sollte eigentlich für fast jeden hier nachvollziehbar sein. Zumindest wenn man sich die Mühe macht, es zu lesen und so nachzuspielen wie beschrieben.

Ob der TE natürlich über genau diesen Bug oder auch dieses Feature gestolpert ist, kann ich auf Grund der wenigen Informationen des TE auch nicht sagen. Aber es passt sehr gut hier rein.

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.

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Variablen-Namen Begrenzung auf 50 Zeichen seit Update2.3

Beitrag von robsdobs » 11.04.2018, 22:11

.
Zuletzt geändert von robsdobs am 22.04.2018, 21:56, insgesamt 1-mal geändert.

Antworten

Zurück zu „HomeMatic - bekannte Bugs“