So nun bin ich mal wieder Ratlos oder bekomme die CommandRef mal wieder nicht ganz ins Hirn.
Mein Problem: ich hätte gerne, dass bestimmte Aktoren innerhalb einer Scene auf ereignisse reagieren. Hier Konkret Heizung aus wenn fester ,,Auf".
IF ([MelderFENKUE] eq "off") (set KUEHeizungK04 controlManu 30.0) ELSE (set KUEHeizungK04 controlManu off)
--> ist hier die Scene "home" schon aktiv und es ändert sich der Zustand von MelderFENKUE in "on" lässt das die Scene "home" volkommend kalt. Also im Fall der Heizung eher "Warm" >:(
Mein Problem ist, wenn die ,,Scene" aufgerufen wird, und der Zustand andere Aktoren ändert sich, wird dieses von der ,,Scene" ignoriert. Ergo wenn es nicht geht, müsste ich für jede Situation eine neue Scene bauen, und dann würde es sich einfach nicht mehr lohnen.
Ein direktes paering geht nicht denn die Fesntersenoren sind von Home easy und die Heizungsventile von HM.
Jetzt schon mal vielen dank
ich vermute mal das IF ist das kommando das die LightScene ausführen soll. das geht nur über perl mit einem fhem() aufruf. also so: {fhem("...")}
gruß
andre
Also mit anderen Worten back Tod Pearl. Das IF aus fehm greift nicht. Wie müsste ich das If dann bauen. Mit oder ohne notity ?
wenn du setcmd verwendest geht es auch ohne perl. trage einfach dein complettes IF in der detail ansicht unter Edit scene bei dem passenden device mit setcmd statt set ein.
gruss
andre
Also nach einigem hin und her probieren, bin ich jetzt bei folgendem Ergebnis:
ich kann zwar über setcmd ganze IF Bedingungen eingeben, und die ,,Scene" wird auch entsprechend den zu diesem Zeitpunkt eingegebenen Bedingungen geschaltet.
Ändert sich in dieser Zeit eine der in setcmd IF Bedingungen, wird diese aber nicht in der ,,Scene" berücksichtigt.
z.B.
IF ([MelderFENKUE] eq "off") (set KUEHeizungK04 controlManu 30.0) ELSE (set KUEHeizungK04 controlManu off)
Wenn beim Aufrufen der der ,,Scene" der Aktor [MelderFENKUE] auf ,,off" steht --> set KUEHeizungK04 controlManu 30.0. Ändert sich der Status von [MelderFENKUE] auf ,,on" wird die Scene nicht aktualisiert.
Habe ich das jetzt richtig verstanden?
Ich könnte aber über in der ,,Scene" --> Set: controlManu 30.0
schalten müsste dann aber noch definieren:
Define FensterOffen notify MelderFENKUE IF ([MelderFENKUE] eq "on") (set KUEHeizungK04 controlManu off)
Und
followdevices 1
in der "Scene"
Aber wie bekomme ich dann den Status der "Scene" zurück ? denn ich habe ja verschiedene ,,scenes": home, gotosleep, asleep usw. mit unterschiedlichen Temperaturen, und für jede ,,scene" ein Notify bauen mit 2 Bedingungen ist dann irgendwie doof, Also dann IF home + IF MelderFENKUE --> Set ...., ELESE IF gotoseep set... .
Also für jede Hilfe bin ich dankbar, vielleicht habe ich auch einen Denkfehler in meinem Aufbau. Hat jemand eine Idee? Oder so was schon mal gehabt?
Ich will ja "nur" den zustand für eine kurze Zeit ändern, und dann wieder zurück.
Danke an justme1968 für die Geduld 8)
genau. der zweite ansatz ist richtiger. das IF muss eigenständig sein.
wenn du statt des echten device ein dummy in die szenen steckst hast du dort dem zustand auf den die szene schalten würde. diesen dummy kannst mit in das IF stecken und so mit verknüpfen.
statt des dummys ist es vielleicht noch übersichtlicher mit setreading ein rading im device mit dem jeweiligen scene zustand zu verwenden.
gruß
andre
Sorry komme gerade nicht mit :'( würde es aber geren verstehen. Könntets Du vielleicht .... wenn Du so nett bist
8) 8) das mal als Code schreiben 8) 8)
komme da echt gerade nicht mit
du möchtest das die szene auf ereignisse reagiert. das geht aber nicht wie LightScene nichts von ereignissen kennt. umgekehrt geht es aber. LightScene kann ereignisse auslösen auf die du dann reagieren kannst.
deine frage war wie du den status der szene zurück bekommst. du willst aber eigentlich nicht den status der szene sondern den status dein ein bestimmtes device in den die szene hat bzw. hätte.
die idee ist also folgende:
- dieses device schaltest du mit der LightScene nicht direkt sondern merkst dir nur den zustand den es in der szene hätte in einem eigenen reading im device
- in dein IF fügst du als bedienung und trigger noch dieses reading noch dieses eigene reading mit hinzu
- dein IF wird dann ausgeführt wenn sich hier etwas ändert und wenn sich am fenster etwas ändert.
unterm strich gibst du mit der scene dann vor welchen zustand die heizung hätte wenn es nur nach der LightScene geht, im IF kannst du auf diesen 'grundzustand' reagieren und ihn abwandeln.
gruss
andre
So noch einmal einen herzlichen Dank an Justme1968 und eigentlich an das ganze Forum. Die Reaktionszeit ist besser als bei dem meisten Support ::)
Habe die Lösung gestern Abend noch umgesetzt. Der kleine Wermuttropfen ein zusätzlicher Notify pro Heizung. Aber egal.
Ausgangsposition: als Aktoren spielen mit HM Heizungsventile HM-CC-RT-DN (Hamlan) --> ELTHeizungK04 und Home Easy HE852Fensterkontakte (RFXtrx433) --> MelderFENELT.
Die Lightscene ist LSELT, bei mir hat jeder Raum ein.
Anmerkung: aus verschiedenen Gründen benötige ich einen ,,Hauptschalter" HZGStatusD, der zwischen Sommer und Winter unterscheidet den ich hier dann gleich noch mit verbaut habe.
Als erstes den Dummy für die jeweilige Heizung definieren:
define ELTHeizungD dummy
In der LSELT nicht die ELTHeizungK04 sondern den dummy ELTHeizungD einsetzen, und in der jeweiligen ,,Scene" den Wert zuweisen:
SET: controlManu 20.0 (Befehl für HM)
Dieser wird dann in den dummy übergeben.
Jetzt noch fix der notify, wobei LSELT auch überwacht werden muss, da sich sonst beim ,,Scene" Wechsel nichts tut.
define HZGELTNTFY notify (MelderFENELT|HZGStatusD|LSELT) IF ([MelderFENELT] eq "off" and ([HZGStatusD] eq "on")) (set ELTHeizungK04 [ELTHeizungD]) ELSE (set ELTHeizungK04 controlManu off)
Irgendwie habe ich am Anfang falschrum gedacht. Aber so geht es
noch zwei vorschläge:
du kannst statt dem extra dummy mit setreading ein reading im device verwenden.
ich bin mir ziemlich sicher das du auf das notify verzichten kannst wenn das das zusätzliche reading direkt im IF mit verknüpfst.
aber das kannst du alles in ruhe probieren. es echt ja erst mal.
gruß
andre