Link zur Doku:
https://www.eq-3.de/Downloads/eq3/downl ... l_V1.2.pdf
Die Methode .Variable() ist laut Doku auf Systemvariablen anwendbar.
Wendet man jedoch die Methode fälschlicherweise auf einen Datenpunkt an, so wird der entsprechende Kanal / Datenpunkt unbrauchbar.
ACHTUNG soll heissen, danach ist der Kanal nicht mehr schaltbar über die Klickibunti!
Schrei nach Testcase vorauseilend beantwortet:
Hab mir eine HM-LC-Sw1-Pl Steckdose ausgesucht. (Spielt aber nur eine untergordnete Rolle. Man kann sich auch alle Geräte mit einem Miniscript lahmlegen)
Die Steckdose funktioniert ohne Probleme und ist in meinem Arbeitszimmer unweit der CCU vorhanden, damit ideales Testgerät.
Ich führe folgendes Script aus:
Code: Alles auswählen
object oDP = datapoints.Get("BidCos-RF.HEQ0157604:1.STATE");
if(oDP){
oDP.Variable(1);
}else{ WriteLine("Datenpunkt nicht vorhanden");}
Code: Alles auswählen
oDP.Variable(1);
da gehört
Code: Alles auswählen
oDP.State(1);
Also mein Fehler (falls wer denkt ich wüsste dies nicht),
Ich habe nämlich in der Doku was von Variable() gelesen und schreibe grad meine ersten Scripte.
Kurzum, der Test schlägt fehl. Die Steckdose wird durch mein Script nicht geschalten.
Man fragt mich nach dem Fehlerprotokoll - da steht so was
Code: Alles auswählen
Jul 16 16:07:35 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallXmlrpcMethod: execute result isFault; method =getValue Params = {"1","STATE"} result= [faultCode:-2,faultString:"Unknown instance"] [iseXmlRpc.cpp:2605]
Jul 16 16:07:35 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [iseXmlRpc.cpp:1432]
Jul 16 16:07:35 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = 0 [iseDOMdpHSS.cpp:130]
Jeglicher weiterer Schaltversuch über die Klickibunti - Status und Bedienung, auch ein HM-Script oder auch Remote HMScript wird ab sofort ebenso mit dieser Fehlermeldung quittiert.
Schalte ich die Steckdose per Taster am Gerät selber, wird sie zwar ein/aus -geschalten, jedoch bekommt die CCU nichts mehr davon mit.
Das hat auch seinen Grund. denn .Variable() hat man nicht auf einen Datenpunkt anzuwenden. Aber wieso ist dies möglich?
DAS war *IMHO* nicht immer so, die Methode .Variable() war nur auf OT_VARDP - sprich Systemvariablen zulässig.
Wann das in der RegaHss geändert wurde und warum weiß ich im Moment noch nicht, es gehört aber *IMHO* umgehend zurück geändert.
Ein kleiner Fehler in einem Script, in einer neuen APP usw. und die Geräte sind bis auf weiteres erstmal unbrauchbar.
Darauf muss man dann erstmal kommen!
Ich kann mich daran erinnern, das ich im Forum das ein oder andere Mal eine diesbezügliche Fehlerbeschreibung gelesen hätte. Auch die Fehlermeldung faultCode:-2,faultString:"Unknown instance" im Log habe ich schon gelesen.
Gibt es vielleicht den ein oder anderen Anwender der "falschen" Methode ??
Nachschauen ob man betroffen ist und Hife
Folgendes Script unter Script testen oder im xecuter oder... ausführen und Bildschirmausgaben anschauen / befolgen:
Code: Alles auswählen
!Bug .Variable() auf Datenpunkt Reparatur
!v0.1 (c) by Alchy
string svId;integer countA= 0;integer countB = 0;
foreach(svId, dom.GetObject(ID_DATAPOINTS).EnumUsedIDs()) {
var dp = dom.GetObject(svId);
if (dp.IsTypeOf(OT_DP)) {
object ch = dom.GetObject(dp.Channel());
countB = countB +1;
string hssA = dp.HSSAddress();
string hssB = dp.Name().StrValueByIndex(".", 1);
if(hssA != hssB){ countA = countA+1; WriteLine("Datenpunkt: "#dp #" von Kanal: "#ch.Name() #" - weil: "#hssA #" ist ungleich: "# hssB);
WriteLine("\tBitte folgende Zeile zur Reparatur unter Script testen ausführen:");
WriteLine("\tdom.GetObject(\""#dp.Name()#"\").HSSAddress(\""#hssB#"\");\r ");
}
}}
WriteLine("\r\t"#countA #" von "#countB #" Datenpunkten falsch\r ");
Platz für Updates:
Ticket: E72C94C5B638E erzeugt
Update Antwort 17.07.2018 - 11:05 Uhr:
Hallo Alchy,
das beschriebene Verhalten ist an die Entwicklungsabteilung weitergeleitet und wird unter der Bearbeitungsnummer EQ3_SUPPORT-1388 geführt.
Mit freundlichen Grüßen aus Leer
Ihr eQ-3 Support-Team
Update 18.07.2018 - Nachfrage nach Firmware und RegaHss Version
Antwort:
Getestet wurde das unter:
VERSION=2.35.16
Version: 2.1.369
Build: R1.00.0388.0128
Standard oder Community spielt jedoch keine Rolle.
Legacy gehört aus der Firmware entfernt, da innerhalb der internen Scripte Methoden wie z.B. .Replace() benutzt werden, welche in der Legacy NICHT enthalten sind.
Siehe auch viewtopic.php?t=44288&p=443220#p443213
Update 09.11.2018
in:
Code: Alles auswählen
VERSION=3.41.7
Version: 2.1.369
Build: R1.00.0388.0202