In der Tat komisch.. Und was gibt folgendes aus:
Code: Alles auswählen
object o=interfaces.Get("BidCos-RF");
WriteLine ("ID: " # o.ID ());
WriteLine ("Type:" # o.TypeName());
Moderatoren: jmaus, Co-Administratoren
In der Tat komisch.. Und was gibt folgendes aus:
Code: Alles auswählen
object o=interfaces.Get("BidCos-RF");
WriteLine ("ID: " # o.ID ());
WriteLine ("Type:" # o.TypeName());
führt zum gleichen Ergebnis:jmaus hat geschrieben: ↑24.09.2020, 10:31In der Tat komisch.. Und was gibt folgendes aus:
Code: Alles auswählen
object o=interfaces.Get("BidCos-RF"); WriteLine ("ID: " # o.ID ()); WriteLine ("Type:" # o.TypeName());
Code: Alles auswählen
ID: 1013
Type:INTERFACE
Hmm, das ist umso komischer. Und mit dem "dom.GetObject("BidCos-RF")" geht es wirklich nicht? Eigentlich sollte das in der Tat gehen auch wenn das "interfaces.Get()" die sauberere Lösung von beiden ist. Kann das jemand reproduzieren? Nicht das das ein negativer Nebeneffekt meiner kürzlich hinzugefügten Option in der GetObject() ist das man dort den Objecttyp nun direkt einschränken kann?!?franky1275 hat geschrieben: ↑24.09.2020, 11:21führt zum gleichen Ergebnis:jmaus hat geschrieben: ↑24.09.2020, 10:31In der Tat komisch.. Und was gibt folgendes aus:
Code: Alles auswählen
object o=interfaces.Get("BidCos-RF"); WriteLine ("ID: " # o.ID ()); WriteLine ("Type:" # o.TypeName());
Ich habe den Betreff mal mit [Workaround] markiert.Code: Alles auswählen
ID: 1013 Type:INTERFACE
Falls das nicht passt, bitte Bescheid geben
@Jens: Da müsstest du mal jetzt mal in deinen debugger schauenjmaus hat geschrieben: ↑24.09.2020, 13:22Hmm, das ist umso komischer. Und mit dem "dom.GetObject("BidCos-RF")" geht es wirklich nicht? Eigentlich sollte das in der Tat gehen auch wenn das "interfaces.Get()" die sauberere Lösung von beiden ist. Kann das jemand reproduzieren? Nicht das das ein negativer Nebeneffekt meiner kürzlich hinzugefügten Option in der GetObject() ist das man dort den Objecttyp nun direkt einschränken kann?!?
Ich denke, du musst dir die Implementierung mal ansehen, jens, das kann bösartiken Seiteneffekt haben für Funktionen, wo ein Object als parameter übergeben werden kann.jmaus hat geschrieben: ↑24.09.2020, 13:22Hmm, das ist umso komischer. Und mit dem "dom.GetObject("BidCos-RF")" geht es wirklich nicht? Eigentlich sollte das in der Tat gehen auch wenn das "interfaces.Get()" die sauberere Lösung von beiden ist. Kann das jemand reproduzieren? Nicht das das ein negativer Nebeneffekt meiner kürzlich hinzugefügten Option in der GetObject() ist das man dort den Objecttyp nun direkt einschränken kann?!?
Code: Alles auswählen
!Fall 1 geht nicht!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!-xmlrpc.PutParamset(dom.GetObject("BidCos-RF"),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
!-Fall 2 geht
!-xmlrpc.PutParamset(interfaces.Get (1009),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
!Fall 3geht
!-xmlrpc.PutParamset(interfaces.Get ("BidCos-RF"),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
!-Fall 4geht
!-xmlrpc.PutParamset(dom.GetObject("BidCos-RF",OT_INTERFACE),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
!-Fall 5geht
!-xmlrpc.PutParamset((dom.GetObject("BidCos-RF")),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
!-Fall 6geht
!-xmlrpc.PutParamset((dom.GetObject("BidCos-RF",OT_INTERFACE)),"MEQ0330450:1","MEQ0330450:1","LONG_ON_TIME",0.6);
Hmm, sehr interessant, in der Tat. Passiert das denn auch innerhalb anderer Methoden wenn man da dom.GetObject() nun direkt einsetzt? Denn der Aufschrei diesbzgl. müsste dann doch eigentlich etwas größer sein oder passiert das nur bei diesen xmlrpc.XXXX() Methodenaufrufen dann wäre der Fehler vielleicht dort irgendwie zu suchen. Oder das deutet gar auf irgendeinen komischen Parserfehler hin der genereller Natur ist und das wäre natürlich schon eher etwas für einen Supergau bzw. würde ne längere Bugsuche nach sich ziehen...Black hat geschrieben: ↑26.09.2020, 20:11Ich denke, du musst dir die Implementierung mal ansehen, jens, das kann bösartiken Seiteneffekt haben für Funktionen, wo ein Object als parameter übergeben werden kann.jmaus hat geschrieben: ↑24.09.2020, 13:22Hmm, das ist umso komischer. Und mit dem "dom.GetObject("BidCos-RF")" geht es wirklich nicht? Eigentlich sollte das in der Tat gehen auch wenn das "interfaces.Get()" die sauberere Lösung von beiden ist. Kann das jemand reproduzieren? Nicht das das ein negativer Nebeneffekt meiner kürzlich hinzugefügten Option in der GetObject() ist das man dort den Objecttyp nun direkt einschränken kann?!?
Code: Alles auswählen
string str="XXecho hallo123";
string stdout;
string stderr;
! Funktioniert
string str2=str.Substr(2);
system.Exec(str2, &stdout, &stderr);
WriteLine(stdout);
! Funktioniert nicht
system.Exec(str.Substr(2), &stdout, &stderr);
WriteLine(stdout);
WriteLine("END");
Code: Alles auswählen
hallo123
Code: Alles auswählen
!macht BÄNG
object o= dom.CreateObject(OT_ENUM,"TEST");
o.Add(dom.GetObject("Anwesenheit"));
o.Add(dom.GetObject("Anwesenheit.Black"));
WriteLine (o.EnumNames());
o.MoveObject(dom.GetObject("Anwesenheit"),1);
dom.DeleteObject(o);
Code: Alles auswählen
Sep 27 20:58:11 homematic-ccu2 local0.err ReGaHss: ERROR: ScriptRuntimeError: object o= dom.CreateObject(OT_ENUM,"TEST");^M o.Add(dom.GetObject("Anwesenheit"));^M o.Add(dom.GetObject("Anwesenheit.Black"));^M WriteLine (o.EnumNames());^M o.MoveObject(dom.GetObject("Anwesenheit"),1);^M dom.DeleteObject(o);^M [ExecError():iseESPexec.cpp:12885
Code: Alles auswählen
!Läuft
object o= dom.CreateObject(OT_ENUM,"TEST");
o.Add(dom.GetObject("Anwesenheit"));
o.Add(dom.GetObject("Anwesenheit.Black"));
WriteLine (o.EnumNames());
o.MoveObject(dom.GetObject("Anwesenheit",OT_VARDP),1);
dom.DeleteObject(o);
Code: Alles auswählen
!Läuft
object o= dom.CreateObject(OT_ENUM,"TEST");
o.Add(dom.GetObject("Anwesenheit"));
o.Add(dom.GetObject("Anwesenheit.Black"));
WriteLine (o.EnumNames());
o.MoveObject(dom.GetObject (ID_SYSTEM_VARIABLES).Get("Anwesenheit"),1);
dom.DeleteObject(o);
Code: Alles auswählen
!Läuft auch, ist der Code, der auf der aktuellen BÄNG macht
object o= dom.CreateObject(OT_ENUM,"TEST");
o.Add(dom.GetObject("ANW.Gast"));
o.Add(dom.GetObject("ANW.Susa"));
WriteLine (o.EnumNames());
o.MoveObject(dom.GetObject ("ANW.Gast"),1);
dom.DeleteObject(o);
Der Fehler ist jedoch nur für die Nutzung von "dom.GetObject()" neu weil eben nur in der neuesten ReGaHss GetObject() ja nun auch zwei Parameter annehmen kann. Vorher kannte GetObject() ja nur maximal ein Parameter. Bei anderen Methoden die schon in vorherigen ReGaHss schon zwei oder mehrere Parameter annehmen tritt der Fehler auch mit diesen älteren ReGaHss versionen auf (siehe mein system.Exec()+str.Substr() Beispiel von oben).Black hat geschrieben: ↑27.09.2020, 21:07[...]
und nun wirds böse, der Fehler ist nämlich neu in dieser version.
entgegen meiner sonstigen Gewohnheit hab ich das Script mal auf dem Hauptsystem laufen lassen, eine noch nicht geupdatete RMatik.. diese Bildschirmfoto
[...]
Zeigt, der code, der auf der aktuellen BÄNG macht, läuft auf der Vorgängerversion (hier nur andere Sysvarnamen weil anderes System)
[...]
Also ich bin mal schnell hingegangen und bin die ReGaHss binaries im OCCU zurück bis zur "Ursprungsversion" R1.00.0388.0102 (CCU Firmware 2.15.5 von 2016) gegangen und es sieht in der Tat so aus das selbst mit dieser Version das Problem bereits schon existiert und es wohl in der Tat kein in neuester Zeit reingewandertes Problem zu sein scheint. Vielleicht kann das ja mal jemand mit ähnlichen Tests bestätigen.jmaus hat geschrieben: ↑27.09.2020, 21:23Die aktuelle Frage wäre allerdings wann genau dieser Fehler denn in ReGaHss reingewandert ist oder ob dieser schon immer existiert hat. Nun müsste man eben mal ne alte ReGaHss Version hernehmen und mein system.Exec()+str.Substr() Beispiel zu Rate ziehen um durchzutesten ob das Problem da auch schon existiert hat und wenn nicht sich dann eben mal durch die Versionen durcharbeiten bis man die Version gefunden hat wo es das erste mal auftritt.