NEWS
Datenpunkt setzen Skript vs. Button
-
@wolfgangfb
Es mag jetzt zwar sehr merkwürdig sowie unlogisch klingen, ich hatte aber das gleiche Problem bei meinem Ventilator.
Nachdem ich dann im Script den entsprechenden Befehl mit einem Zeitversatz von einer Sekunde ein zweites Mal hinterlegt habe, funktioniert es jedesmal.@siragus
HiDas werde ich mal probieren, ist aber etwas unbefriedigend da es bei manchen Geräten (Power) kein On bzw. Off sondern nur ein "Toggle" gibt. Das wäre dann schon eine Art Lotteriespiel, ob das Gerät dann ein oder gleich wieder ausgeschaltet wird.
-
Ich habe folgendes Problem. Ich habe eine Harmony Universalfernbedieung über die ich mein Heimkino steurn kann. Der Harmony Adapter läuft auch.
Wenn ich in Vis einen Button (hier: vis-inetwo) nehme, als objekt-ID harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2
und als Wert "true" einsetze schaltet der Projektor jedes mal, wenn ich den Button klicke auf HDMI 2 (wenn er schon auf HDMI 2 steht sehe ich, das Input Menü erscheint, sprich die Aktion ausgeführt wird.
Mach ich das gleiche in einem Skript mit
setState("harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2", true);
klappt das in einem von 10 Fällen, in den restlichen 9 Fälle passiert nichts. In den Logfiles ist nichts zu sehen außer die Debugmeldungen, die ich mir selbst vor und hinter den Befehl gelegt habe um zu sehen, ob die Zeile auch ausgeführt wird (das tut sie definitiv).
Kann mir jemand verraten, warum das per Button immer klappt, per Skript aber so gut wie nie (aber eben manchmal doch)?
Gruß Wolfgang@wolfgangfb
Ein Button setzt nur kurz auf true und dann wieder auf false. Setzt du zu Fuß auf true, bleibt es true. -
@wolfgangfb
Ein Button setzt nur kurz auf true und dann wieder auf false. Setzt du zu Fuß auf true, bleibt es true.@peterfido said in Datenpunkt setzen Skript vs. Button:
@wolfgangfb
Ein Button setzt nur kurz auf true und dann wieder auf false. Setzt du zu Fuß auf true, bleibt es true.Das ist aber unlogisch. Warum klappt es dann, wenn man nach einer Sekunde nochmal den gleichen Befehl absetzt? Truer als true geht doch nicht.
-
Ich habe folgendes Problem. Ich habe eine Harmony Universalfernbedieung über die ich mein Heimkino steurn kann. Der Harmony Adapter läuft auch.
Wenn ich in Vis einen Button (hier: vis-inetwo) nehme, als objekt-ID harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2
und als Wert "true" einsetze schaltet der Projektor jedes mal, wenn ich den Button klicke auf HDMI 2 (wenn er schon auf HDMI 2 steht sehe ich, das Input Menü erscheint, sprich die Aktion ausgeführt wird.
Mach ich das gleiche in einem Skript mit
setState("harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2", true);
klappt das in einem von 10 Fällen, in den restlichen 9 Fälle passiert nichts. In den Logfiles ist nichts zu sehen außer die Debugmeldungen, die ich mir selbst vor und hinter den Befehl gelegt habe um zu sehen, ob die Zeile auch ausgeführt wird (das tut sie definitiv).
Kann mir jemand verraten, warum das per Button immer klappt, per Skript aber so gut wie nie (aber eben manchmal doch)?
Gruß Wolfgang@wolfgangfb sagte: klappt das in einem von 10 Fällen,
Wird der Befehl vom Adapter bestätigt (ack = true), auch wenn es nicht klappt?
-
@wolfgangfb sagte: klappt das in einem von 10 Fällen,
Wird der Befehl vom Adapter bestätigt (ack = true), auch wenn es nicht klappt?
@paul53
Es ist umgekehrt, in den Objects kommt immer, wenn man mit der Maus über den Wert fährt "Wert 0, bestätigt: true", mit einem Zeitstempel der aber nichts mit der aktuellen Uhrzeit zu tun hat.Im Debug Fenster der Skripte Instanz kommt immer.
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2, state={"val":true,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})Das kommt aber auch, wenn es geklappt hat.
-
@paul53
Es ist umgekehrt, in den Objects kommt immer, wenn man mit der Maus über den Wert fährt "Wert 0, bestätigt: true", mit einem Zeitstempel der aber nichts mit der aktuellen Uhrzeit zu tun hat.Im Debug Fenster der Skripte Instanz kommt immer.
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2, state={"val":true,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})Das kommt aber auch, wenn es geklappt hat.
@wolfgangfb sagte: "Wert 0, bestätigt: true"
Weshalb Wert 0? Es wurde doch Wert true gesendet?
Logge mal den Datenpunkt bei verschiedener Weise, ihn zu setzen:on({id: 'harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2'}, function(dp) { log('Wert: ' + dp.state.val + ', bestätigt: ' + dp.state.ack); });EDIT: Laut Doku muss ein String "1" in den Datenpunkt geschrieben werden.
setState("harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2", '1'); -
@wolfgangfb sagte: "Wert 0, bestätigt: true"
Weshalb Wert 0? Es wurde doch Wert true gesendet?
Logge mal den Datenpunkt bei verschiedener Weise, ihn zu setzen:on({id: 'harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2'}, function(dp) { log('Wert: ' + dp.state.val + ', bestätigt: ' + dp.state.ack); });EDIT: Laut Doku muss ein String "1" in den Datenpunkt geschrieben werden.
setState("harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2", '1');Ich habe es mit 1, "1", und true probiert, jedes mal das gleiche.
Bei "1" kommt entsprechend:
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":"1","ack":false,"c":"script.js.Multimedia.OnkyCommand"})(und der Projektor geht nicht an)
In den Objekten ist bei sämtlichen Buttons der Wert 0, betätigt: true (auch solche, die ich noch nie im Leben angefasst habe).
{ "type": "state", "common": { "name": "Optoma_uhl55:PowerOn", "role": "button", "type": "number", "write": true, "read": true, "min": 0 }, "native": { "action": "{\"command\":\"PowerOn\",\"type\":\"IRCommand\",\"deviceId\":\"67971030\"}", "name": "PowerOn", "label": "Power On", "controlGroup": "Power", "deviceId": "67971030" }, "from": "system.adapter.harmony.0", "user": "system.user.admin", "ts": 1618769924573, "_id": "harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", "acl": { "object": 1636, "state": 1636, "file": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } -
@wolfgangfb sagte: "Wert 0, bestätigt: true"
Weshalb Wert 0? Es wurde doch Wert true gesendet?
Logge mal den Datenpunkt bei verschiedener Weise, ihn zu setzen:on({id: 'harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2'}, function(dp) { log('Wert: ' + dp.state.val + ', bestätigt: ' + dp.state.ack); });EDIT: Laut Doku muss ein String "1" in den Datenpunkt geschrieben werden.
setState("harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2", '1');@paul53 sagte in Datenpunkt setzen Skript vs. Button:
Laut Doku muss ein String "1" in den Datenpunkt geschrieben werden.
dann passt das aber wohl nicht, oder?
@wolfgangfb sagte in Datenpunkt setzen Skript vs. Button:
"type": "number",
"write": true,
"read": true,
"min": 0 -
@paul53 sagte in Datenpunkt setzen Skript vs. Button:
Laut Doku muss ein String "1" in den Datenpunkt geschrieben werden.
dann passt das aber wohl nicht, oder?
@wolfgangfb sagte in Datenpunkt setzen Skript vs. Button:
"type": "number",
"write": true,
"read": true,
"min": 0 -
@paul53 sagte
Nein, dann muss es eine Zahl sein.
muss/sollte dann nicht besser auch max:1 definiert sein?
EDIT:
ist bei mir auch nicht drin.
{ "from": "system.adapter.harmony.0", "ts": 1548505066018, "common": { "name": "Epson-Projektor:PowerOn", "role": "button", "type": "number", "min": 0, "write": true, "read": true }, "native": { "action": "{", "name": "PowerOn", "label": "Power On", "controlGroup": "Power", "deviceId": "52897020" }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "harmony.0.Stube.Epson-Projektor.PowerOn", "type": "state" }muss aber jetzt auch sagen, dass ich mit dem Ausschalten auch immer mal wieder Probleme hatte, aber nie an diesen Button gedacht habe
-
@paul53
Es ist umgekehrt, in den Objects kommt immer, wenn man mit der Maus über den Wert fährt "Wert 0, bestätigt: true", mit einem Zeitstempel der aber nichts mit der aktuellen Uhrzeit zu tun hat.Im Debug Fenster der Skripte Instanz kommt immer.
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.InputHdmi2, state={"val":true,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})Das kommt aber auch, wenn es geklappt hat.
@wolfgangfb sagte: Im Debug Fenster der Skripte Instanz kommt immer.
Hast Du den Debug-Modus in Javascript rechts oben eingeschaltet? Dann wird setState() nicht ausgeführt.
-
@paul53 sagte
Nein, dann muss es eine Zahl sein.
muss/sollte dann nicht besser auch max:1 definiert sein?
EDIT:
ist bei mir auch nicht drin.
{ "from": "system.adapter.harmony.0", "ts": 1548505066018, "common": { "name": "Epson-Projektor:PowerOn", "role": "button", "type": "number", "min": 0, "write": true, "read": true }, "native": { "action": "{", "name": "PowerOn", "label": "Power On", "controlGroup": "Power", "deviceId": "52897020" }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "harmony.0.Stube.Epson-Projektor.PowerOn", "type": "state" }muss aber jetzt auch sagen, dass ich mit dem Ausschalten auch immer mal wieder Probleme hatte, aber nie an diesen Button gedacht habe
-
@homoran sagte: muss/sollte dann nicht besser auch max:1 definiert sein?
Das ist nicht nötig, aber "role": "button" passt nicht zu "type": "number" und "read": "true".
@paul53 sagte:
aber "role": "button" passt nicht zu "type": "number" und "read": "true".
siehe mein Edit.
Ist bei mir genau so.@homoran sagte in Datenpunkt setzen Skript vs. Button:
muss aber jetzt auch sagen, dass ich mit dem Ausschalten auch immer mal wieder Probleme hatte, aber nie an diesen Button gedacht habe
Habe nochmal nachgesehen.
Muss doch am Harmony Hub selber liegen, da der manuelle off immer funktioniert:

-
Bei
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1);kommt im Debugfenster (Debugmode: aus, Verbose: an)
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})Bei
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1); timeout = setTimeout(function () { setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1); }, 1000);kommt
18:56:36.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"}) 18:56:36.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setTimeout(ms=1000) 18:56:37.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})und der Projektor geht an. Logisch ist das für mich ehrlich gesagt nicht
-
Bei
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1);kommt im Debugfenster (Debugmode: aus, Verbose: an)
javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})Bei
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1); timeout = setTimeout(function () { setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 1); }, 1000);kommt
18:56:36.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"}) 18:56:36.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setTimeout(ms=1000) 18:56:37.907 info javascript.0 (5647) script.js.Multimedia.OnkyCommand: setForeignState(id=harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn, state={"val":1,"ack":false,"c":"script.js.Multimedia.OnkyCommand"})und der Projektor geht an. Logisch ist das für mich ehrlich gesagt nicht
@wolfgangfb sagte: Logisch ist das für mich ehrlich gesagt nicht
Für mich auch nicht, wenn man den Befehl mit Verzögerung wiederholen muss, damit er ausgeführt wird. Hast Du mal eine kürzere Verzögerung (z.B. 150 ms) versucht?
Oder versuche mal:
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 300);Laut Doku und Quellcode sollte das einen langen Tastendruck (hold) erzeugen.
-
@wolfgangfb sagte: Logisch ist das für mich ehrlich gesagt nicht
Für mich auch nicht, wenn man den Befehl mit Verzögerung wiederholen muss, damit er ausgeführt wird. Hast Du mal eine kürzere Verzögerung (z.B. 150 ms) versucht?
Oder versuche mal:
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 300);Laut Doku und Quellcode sollte das einen langen Tastendruck (hold) erzeugen.
@paul53 sagte:
wenn man den Befehl mit Verzögerung wiederholen muss
@WolfgangFB
und wenn du direkt mit Verzögerung arbeitest - habe ich ja auch (aber aus anderen Gründen) -
@wolfgangfb sagte: Logisch ist das für mich ehrlich gesagt nicht
Für mich auch nicht, wenn man den Befehl mit Verzögerung wiederholen muss, damit er ausgeführt wird. Hast Du mal eine kürzere Verzögerung (z.B. 150 ms) versucht?
Oder versuche mal:
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 300);Laut Doku und Quellcode sollte das einen langen Tastendruck (hold) erzeugen.
@paul53 said in Datenpunkt setzen Skript vs. Button:
@wolfgangfb sagte: Logisch ist das für mich ehrlich gesagt nicht
Für mich auch nicht, wenn man den Befehl mit Verzögerung wiederholen muss, damit er ausgeführt wird. Hast Du mal eine kürzere Verzögerung (z.B. 150 ms) versucht?
Oder versuche mal:
setState("harmony.0.Harmony_Hub.Optoma_uhl55.PowerOn", 300);Laut Doku und Quellcode sollte das einen langen Tastendruck (hold) erzeugen.
Funktioniert nicht (mit 300), bei den Verzögerugen möchte ich jetzt nicht alle Werte durchprobieren, 500 geht aber auch noch.
-
@paul53 sagte:
wenn man den Befehl mit Verzögerung wiederholen muss
@WolfgangFB
und wenn du direkt mit Verzögerung arbeitest - habe ich ja auch (aber aus anderen Gründen)@homoran said in Datenpunkt setzen Skript vs. Button:
@paul53 sagte:
wenn man den Befehl mit Verzögerung wiederholen muss
@WolfgangFB
und wenn du direkt mit Verzögerung arbeitest - habe ich ja auch (aber aus anderen Gründen)Direkt mit Verzögerung geht auch nicht, ich muss ja eh nach dem Einschalten ca. 45 Sekunden Warten bis ich das Kommando zum Umschalten auf HDMI 2 absetzen kann (der doofe Projektor merkt sich das nicht) und diesen Befehl muss ich auch zweimal abschicken.
Was ich eben absolut nicht verstehe ist, dass es ja genau der gleiche Datenpunkt ist, den ich mal per Skript und mal per Vis-Button anspreche und per Vis geht es immer.
-
@homoran said in Datenpunkt setzen Skript vs. Button:
@paul53 sagte:
wenn man den Befehl mit Verzögerung wiederholen muss
@WolfgangFB
und wenn du direkt mit Verzögerung arbeitest - habe ich ja auch (aber aus anderen Gründen)Direkt mit Verzögerung geht auch nicht, ich muss ja eh nach dem Einschalten ca. 45 Sekunden Warten bis ich das Kommando zum Umschalten auf HDMI 2 absetzen kann (der doofe Projektor merkt sich das nicht) und diesen Befehl muss ich auch zweimal abschicken.
Was ich eben absolut nicht verstehe ist, dass es ja genau der gleiche Datenpunkt ist, den ich mal per Skript und mal per Vis-Button anspreche und per Vis geht es immer.
@wolfgangfb arbeitest du mit Activities oder ausschließlich mit Einzelbefehlen?
Ich bin mir nicht sicher, ob der Hub eine schnelle Folge von Befehlen überhaupt abarbeiten kann.
auch weiß ich nicht ob seine "Selbstlernfähigkeit" da nicht zwischenfunkt und Befehle wiederholt und/oder Pausen verlängert.Ich habe den Eindruck, dass man den Hub nicht mit Befehlen zufeuern darf
-
Ich arbeite mit Einzelbefehlen. Es ist aber bereits der erste Befehl, der nicht ausgeführt wird.
Ich verwende den Harmony Adapter auch nur für den Projektor, den Rest (Onkyo AV Receiver oder Medienplayer) steuere ich direkt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden