NEWS
Object Wert per Skript verändern ohne Befehle auszuführen
-
Hallo,
ich bin neu hier und habe vor ca. 2 Wochen mit ioBroker angefangen, und bin bisher begeistert
Allerdings habe ich jetzt ein Problem mit einem Skript und finde nichts passendes und hoffe deswegen hier richtig zu sein.
Ich arbeite mit Blocky für die Skripte und habe jetzt 2 Schalter erstellt, einen um meinen TV Ein/Aus, AV Receiver Ein/Aus und ein paar weitere Dinge zu schalten. Mit dem zweiten Schalter schalte ich meinen Beamer Ein/Aus, AV Receiver Ein/Aus und ein paar weitere Dinge. Dass klappt auch alles wunderbar.
Ich möchte einen weiteren Schalter erstellen womit ich z.B. vom TV zum Beamer wechseln kann. Heißt also der TV soll aus gehen und der Beamer an usw.
Jetzt kommt aber mein Problem, wozu ich bisher nichts finden konnteIch möchte mit einem 3. Schalter bezwecken, dass die Befehle gesendet werden um vom eingeschalteten TV zum Beamer zu wechseln. Aber damit bei der VIS der Schalter 1 & 2 auch den richtigen Wert anzeigen möchte ich den Wert von Schalter 1 zu false wechseln (da der TV ja jetzt ausgeschaltet ist) und bei Schalter 2 den Wert true (Da jetzt der Beamer an ist). Wichtig ist jedoch die Befehle von Schalter 1 & 2 dürfen nicht gesendet werden, da es andere Befehle sind ein Gerät einzuschalten als zwischen ihnen zu wechseln. Also sollen die Befehle von Schalter 3 kommen.
Meine Frage ist jetzt kann ich überhaupt, den Wert des Objects verändern ohne die Befehle aus dem Skript auszuführen? Und wenn ja wie schaffe ich es?
Ich bin sehr dankbar für jeden Tipp!
-
@DJPepper sagte in Object Wert per Skript verändern ohne Befehle auszuführen:
kann ich überhaupt, den Wert des Objects verändern ohne die Befehle aus dem Skript auszuführen?
Ja, mit aktualisiere anstelle steuere. Es wird dann aber ein falscher Aktor-Wert angezeigt.
-
Aktualisieren hab ich schon probiert , leider hat er die Befehle trotzdem gesendet. Dann muss ich nochmal gucken, warum das nicht ging.
Darf ich fragen was Du mit falschen Aktor-Wert meinst?
Danke für die schnelle Antwort
-
Ich verzweifel hier
hebe jetzt ein Skript mit Blocky gemacht,
Möchte ja nichts anderes bewirken als wenn Test true ist, dass Fernseher auf false aktualisiert wird.
Obwohl ich nur aktualisieren genommen habe sendet er immer die befehle und schaltet den Fernseher aus anstatt nur den Wert auf false zu setzen.
Was mach ich falsch?
Es tut mir leid wenn ich hier echt dumme Fragen stelle, bin in dem Thema komplett neu und habe noch nie mit gearbeitet.
-
Definiere dir eine neue Variable und speichere dort den Wert ab.
-
Könntest Du so nett sein, und mir etwas detaillierter Beschreiben was Du damit meinst.
Also wo soll ich welche Variable definieren bzw. was muss ich tun?Sorry ich sagte ja bin ganz neu in dem Thema und versuche noch vieles zu verstehen
-
Hallo nochmal,
wäre echt super wenn mir jemand helfen könnte, so dass ich es als Anfänger mit ioBrocker es auch verstehe.
Bin echt am verzweifel mit dem blöden Schalter und leider zu doof es alleine zu lösen.
-
@DJPepper sagte in Object Wert per Skript verändern ohne Befehle auszuführen:
Hallo nochmal,
wäre echt super wenn mir jemand helfen könnte, so dass ich es als Anfänger mit ioBrocker es auch verstehe.
Bin echt am verzweifel mit dem blöden Schalter und leider zu doof es alleine zu lösen.
Ganz ehrlich? Ich habe nicht so richtig verstanden was Du erreichen willst.
-
Ich habe 2 Skripte, der 1. TV Ein/Aus, das 2. Beamer Ein/Aus.
Ich möchte jetzt mit einem 3. Skript erreichen, zwischen den beiden Geräten zu wechseln. Das ist auch kein Problem aber ich möchte wenn ich z.B. vom TV zum Beamer wechsel, dass der Status des 1. Skript (also TV) auf aus geht. Damit der Schalter aus der VIS auch korrekt anzeigt der TV ist jetzt aus und der Beamer an, da ich ja vom TV zum Beamer gewechselt habe.Ich hatte jetzt mit Blocky versucht "aktualisiere Object ID" dann stellt er zwar den Staus um sendet aber auch die Befehle vom 1. Schalter was zu folge hat das z.B. mein AVR aus ist.
Deshalb möchte ich nur den Wert von true auf false der Object ID verändern aber unter binden das er da durch das Skript ausführt.
-
Aha, da ist also noch ein drittes Gerät im Spiel "AVR"
"AVR" ist für TV UND Beamer zuständig.1.) TV = AN / AVR = AN / Beamer = AUS
2.) Beamer = AN / AVR = AN / TV = AUS
3.) TV = AUS / Beamer = AUS / AVR = AUSSollen das die drei Möglichkeiten sein?
Wie schaltest Du die Geräte?
Und wie stellst Du das in VIS dar? Zeigst Du in VIS den Geräte/Aktor Status?Am Besten exportierst Du mal Deine Blockly hier rein.
Grüße
-
@rantanplan
Im Prinzip sind das Szenen.Von der Logik her kann immer nur eine true sein.
Ich hab leider nicht verstanden was genau Visualisiert werden soll -
@Homoran
Ich gehe mal davon aus, dass er die Geräte über VIS ein- und ausschaltet und den Status dort angezeigt bekommt. -
@DJPepper sagte in Object Wert per Skript verändern ohne Befehle auszuführen:
dass der Status des 1. Skript (also TV) auf aus geht.
Er scheint script enabled zu verwenden
-
@Homoran Das ist jetzt alles "Glaskugel". Keine Ahnung warum er drei Scripte gemacht hat. Eines würde reichen.
Mal schauen was es schreibt. -
-
Ja wie im 1. Post geschrieben sind mehrere Geräte im Spiel.
Ich habe es mit einem Skript gemacht, da die TV und AVR Signale mit einem Broadlink gesendet werden. Und ich habe mich für ein Skript entschieden da ich hier an und aus in einem programmieren kann, sonst müsste ich ja 2 Szenen machen. Da der Broadlink bei false keinen Befehl sendet.
In der VIS sind 2 ganz normale on/off Schalter einer für den TV und Co. einer für den Beamer und Co. Diese funktionieren auch super!
Jetzt möchte ich in der VIS einen Button haben (also Nr.3) wenn ich den Drücke kann ich vom TV zum Beamer wechseln. Dabei wird der TV ausgeschaltet, der AVR auf einen anderen Ausgang gestellt und noch ein paar andere Dinge.Da Skript 1 und 2 super funktionieren, soll Skript 3 jetzt den Status des Wert von dem 1. Skript ändern und den wechsel vom TV zu Beamer veranlassen aber eben nur den Status von true (da der TV ja "AN" war) auf false ändern (da nach Betätigung des 3. Skript der TV "AUS" ist und der Beamer "AN")
ABER! es darf dabei nicht das 1. Skript ausgeführt werden (da beim Ausführen des 1. Skripts bei false auch der AUS Befehle für den AVR mit bei ist)Das sind beiden Skripte, wie gesagt sie machen genau das was sie sollen. Heißt wenn ich nur den TV und alles "EIN" Schalten mag und dann wieder "AUS" klappt es ohne Probleme, dass selbe gilt für den Beamer.
Jetzt hatte ich schon zum Testen folgendes probiert
damit wollte ich nichts schalten sondern eben nur zum Test den Object ID Wert des Fernsehr EIN/AUS auf false setzten.Aber das Problem ist sobald er diesen auf false setzt führt er alle Befehle des Skript aus, wie kann ich dies unterbinden und nur den Wert ändern ohne Befehle?
-
Für solche Szenarien ist eigentlich der Szenen-Adapter sehr gut geeignet. Dort stellst du im Prinzip das gleiche ein:
Szene 1: Fernsehen:
Fernseher EIN
Beamer AUS
AVR ein
...Szene 2: Beamer:
Fernseher AUS
Beamer EIN
AVR ein
...Ob eine Szene wahr ist wird automatisch anhand der konfigurierten Einträge ermittelt. Wenn du also händisch den TV einschaltest, den Beamer ausschaltest und den AVR einschaltest, dann ist Szene 1 wahr, auch wenn du die eigentlich garnicht angetriggert hast.
Wenn Du dich aktuell in Szene 1 befindest und Szene 2 antriggerst, dann geht der Fernseher aus und der Beamer an. Der AVR bleibt, wie er ist.
Szenen werden eingeschaltet, indem man sie genau wie einen normalen Datenpunkt auf true setzt.
Optional kann man eine Szene auch ausschalten. Dann kann man für jeden Eintrag noch einen weiteren Wert einstellen der gesetzt wird, wenn man eine Szene auf false setzt. Das zuvor beschriebene Verhalten bleibt aber trotzdem bestehen.Das ganze hat jedoch seine Grenzen. Meine Szene "Guten Morgen" fährt die Rolläden im EG hoch und schaltet das Küchenradio ein. Aufgrund der etwas komplizierten Steuerung des Küchenradios bleibt die Szene auch dann aktiv, wenn ich das Radio wieder ausschalte, weil die Rückmeldung auf einem anderen Datenpunkt kommt, wie die Ansteuerung (unidirektionale Datenpunkte). Einfache true/false-Werte funktionieren jedoch sehr gut, ebenso Datenpunkte die bidirektional arbeiten.
Aber davon mal ab, im Prinzip ist das doch das, was du willst, oder?
-
Entschuldige, dass ich erst jetzt antworte. In den letzten Wochen hatte ich leider keine Zeit um im ioBroker zu testen ob es mit der Szene funktioniert.
Aber vom Prinzip sollte es mit der Szene klappen. Hatte mich halt für ein Skript entschieden da ich dort an und aus in einem Schalter realisieren konnte. Dies klappt bei meiner Szene jetzt nicht.
Werde mich jetzt mal daran machen und gucken ob ich mit dem Szenen Adapter einen wechsel der Geräte realisieren kann.
Ich bedanke mich vielmals für eure tolle Hilfe und Tipps!