Schaltbefehl vom Aktorenstatus abhängig machen

Begonnen von domi-ch, 26 August 2013, 22:15:06

Vorheriges Thema - Nächstes Thema

domi-ch

Setup
ich habe einen Intertechno ITS-2000 Funk-Twinsender hinter einem bestehenden Schalter eingesetzt. Der Schalter ist ein Taster, der ITS-2000 sendet dementsprechend den Befehl "on" oder "off". Geschalten wird eine Steckdose. Angesprochen werden die Komponenten durch den TRXFRX.

Dummy für die Steckdose
define office_light TRX_LIGHT AC CODE light

Schalter
define office_wallswitch TRX_LIGHT AC CODE light

Problem
Zusätzlich zum Wandschalter will ich die Steochdose auch via anderer Wand-/Handschalter ansteuern. Das Problem liegt nun darin, da der Wandschalter (via ITS-2000) nur "on" oder "off" sendet und es entsprechend keine Reaktion gibt, wenn ich zwischendurch einen Schaltvorgang abseites des Wandschalters gemacht habe.


Lösungsversuch
Ich habe versucht, den Sendebefehl vom Status des Aktors (office_light) abhängig zu machen mittels folgendem Code
define office_light_wallswitch notify office_wallswitch { if (Value("office_light") eq "on" ) { fhem("set office_light off")} else { fhem("set office_light on")} }
Das funktioniert aber nur halb. Dies Lampe wird zwar ein bzw ausgeschaltet, aber anschliessend folgt auch gleich der "Gegenbefehl": die Lampe schaltet also zB ein, und gleich wieder aus.

Was mache ich falsch?

SSSleep

Wenn ich dich richtig verstehe, dann Empfängt doch der Empfänger sowohl das Telegramm des Wandsenders als auch das manipulierte Signal von fhem!?...liegt hier vielleicht das Problem. Oder sind die Geräte indirekt gepaart?

domi-ch

SSSleep, danke für den Input. Die Geräte sind nur indirekt gepairt, dh. wenn ich den notify code rausnehme, geschieht nichts.

Zudem habe ich den gleichen setup auch mit einem Handschalter ausprobiert, der dedizierte "on" und "off" Buttons hat. Hier ist das Verhalten, das gleiche, egal ob ich den "on" oder "off" button schicke: die lampe geht aus (oder an) und anschliessend gleich wieder an(oder aus).

Zrrronggg!



ZitatDas Problem liegt nun darin, da der Wandschalter (via ITS-2000) nur "on" oder "off" sendet und es entsprechend keine Reaktion gibt, wenn ich zwischendurch einen Schaltvorgang abseites des Wandschalters gemacht habe.

Ich verstehe das Problem noch noch ganz. Meint das, dass der ITS-2000 on und off abwechselnd sendet?

In dem Fall wäre deine Idee

define office_light_wallswitch notify office_wallswitch { if (Value("office_light") eq "on" ) { fhem("set office_light off")} else { fhem("set office_light on")} }


richtig und müsste auch gehen. Aber warte mal:

ZitatDummy für die Steckdose
define office_light TRX_LIGHT AC CODE light


Schalter
define office_wallswitch TRX_LIGHT AC CODE light

Hm. Sag uns bitte mal die richtigen Codes

Und was sagt das Logfile, ggf in verbose?
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Zrrronggg!

Vergiss es. Ich habe mir angesehen, was der ITS-2000 Funk-Twinsender genau macht.

Meine Vermutung ist folgende:

Für den Einsatz mit einem Taster ist der eher weniger geeignet, denn der sendet bei jeder Betätigung des Tasters exact erst ON und dann OFF in sehr kurzem Abstand. Weil der Taster ja quasi nichts anderes ist, als ein Schalter der von selbst sofort wieder auschaltet.

Dein Code
define office_light_wallswitch notify office_wallswitch { if (Value("office_light") eq "on" ) { fhem("set office_light off")} else { fhem("set office_light on")} }

löst aber bei JEDEM Event des Tasters aus und da der Taster bei jeder Betätigung 2 Events absetzt wird daher grundsätzlich mit jedem Betätigen des Tasters dein Code ZWEIMAL ausgelöst.

Zum Glück gibt's da ne ganz einfache Lösung:

define office_light_wallswitch notify office_wallswitch:on { if (Value("office_light") eq "on" ) { fhem("set office_light off")} else { fhem("set office_light on")} }

Fertich.

notify office_wallswitch:on

bewirkt, dass dein Code NUR beim "on" Signal (also dem ersten Signal) ausgelöst wird.

(Das Teil ITS-2000 Funk-Twinsender werd ich mir mal merken, den kannte ich noch nicht. Ich hab bestimmt mal einen Anwendungsfall für den.)
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

domi-ch

Zrrronggg, vielen Dank für deine Hilfe.

Deine Vermutung ist gut, aber falsch. Trotzdem hat mich deine Hinweise auf das vermeintliche Problem geführt. Bei allen Intertechno Sendern (via TRX_LIGHT) bekomme ich 2 Befehle


2013-08-27 06:46:07 TRX_LIGHT office_remote3 light: on
2013-08-27 06:46:07 TRX_LIGHT office_remote3 on


Was erklärt, dass wenn keine "logik" eingebaut ist (direkt/indirekt gepairt) der "on" oder "off" Befehl ausgeführt wird. Die Logik basierend auf dem Status des Aktors funktioniert aber so wie im Moment implementiert nicht, da zwar der 1. Befehl korrekt umgesetzt wird, der 2. Befehl aber das ganze wieder umkehrt.

notify office_wallswitch:on
funktioniert, aber nur zum Einschalten. Nun müsste ich eine "Selektion" im notify entweder nur auf "light:on" / "light:off" oder nur auf "on" / "off" (ohne "light" machen können. Da weiss ich noch nicht wie weiter.

Willi

Wie sieht denn jetzt Dein notify genau aus?

Der Code im Notify

define office_light_wallswitch  office_remote3:on { ....

sollte ja dann genau einmal pro Drücken ausgeführt werden.

ZitatTRX_LIGHT office_remote3 light: on
sollte dann nichts matchen.

Du kannst natürlich auch den regex nur auf light schalten lassen:
define office_light_wallswitch  office_remote3:light.*on { ....
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

Willi

Da es anscheinend verwirrend ist, dass die TRX-Module bei Empfang neben dem State auch noch ein zusätzliches Reading zurückliefern (z.B. light), habe ich gerade im SVN die Module so erweitert, dass man bei devicelog auch "none" setzen kann.
In diesem Fall wird dann kein zusätzliches Reading z.B. "light" zurückgeliefert.

Du könntest daher auch
define office_wallswitch TRX_LIGHT AC CODE light
in folgendes abändern:
define office_wallswitch TRX_LIGHT AC CODE none

Habe ich bereits getestet und ist im SVN. Ist daher morgen per Update verfügbar.
Wenn Du es schon früher testen willst, kannst Du dir Version vorher aus dem SVN holen.

Grüße

Willi
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

domi-ch

Das Update schaue ich mir gerne heute abend oder morgen mal an. Vielen Dank!

Ich bin mir nun nicht mehr sicher, mit welchen notify ich alles herumgespielt habe.

domi-ch

2 Versuche habe ich heute Abend gemacht:

define office_light_remote notify office_remote2:on {...
--> funktioniert, aber nur mit dem "on" button (der fernbedienung), die lampe geht wie gewollt abwechseln an und aus. Der "off" button löst aber nichts aus. Macht eingentlich Sinn, da der notify nur auf ":on" lauscht.

auf dem Vorschlag von Willi aufbauend (und aus den Erfahrungen aus dem ersten Versuch oben) habe ich es wie folgt versucht.
define office_light_remote notify office_remote2:light.*  {...
--> Erfolg! Egal ob ich "on" oder "off" drücke, die Lampe geht an, bei einem weiteren Knopfdruck wieder aus usw. Folglich denke ich auch, dass das Update von Willi zum Erfolg führen wird (persönlich noch nicht ausprobiert), da es ja wie der code oben einen der zwei Telegramme unterdrückt/ignoriert.

Oh ja, mit dem ITS-2000 geht's auch wie oben beschrieben (was ja relevanter ist als bei der Fernbedienung)

Zrrronggg!

ZitatCode: [alles markieren] [anzeigen/verstecken]
define office_light_remote notify office_remote2:on {...

--> funktioniert, aber nur mit dem "on" button (der fernbedienung), die lampe geht wie gewollt abwechseln an und aus. Der "off" button löst aber nichts aus. Macht eingentlich Sinn, da der notify nur auf ":on" lauscht.

Ja klar, ich war zu faul das komplett durchzufomulieren. Ich hatte noch überlegt, ob ich das erwähnen soll, dachte mir aber, das siehst du selber (hast du ja auch letztlich)


Ich verwende diese Methode übrigens häufig um aus Tastern Toggle zu machen, ohne das man am FS20 Sender doppelte Kanalzahl einstellen muss.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

domi-ch

Zitat von: Willi schrieb am Di, 27 August 2013 12:37Da es anscheinend verwirrend ist, dass die TRX-Module bei Empfang neben dem State auch noch ein zusätzliches Reading zurückliefern (z.B. light), habe ich gerade im SVN die Module so erweitert, dass man bei devicelog auch "none" setzen kann.
In diesem Fall wird dann kein zusätzliches Reading z.B. "light" zurückgeliefert.

Du könntest daher auch
define office_wallswitch TRX_LIGHT AC CODE light
in folgendes abändern:
define office_wallswitch TRX_LIGHT AC CODE none

Habe ich bereits getestet und ist im SVN. Ist daher morgen per Update verfügbar.
Wenn Du es schon früher testen willst, kannst Du dir Version vorher aus dem SVN holen.

Grüße

Willi

Heute habe ich upgedated und das erfolgreich getested


2013-08-28 19:38:10 TRX_LIGHT office_light on
2013-08-28 19:38:10 TRX_LIGHT office_remote2 on
2013-08-28 19:38:15 TRX_LIGHT office_light off
2013-08-28 19:38:15 TRX_LIGHT office_remote2 on


Willi, Zrrronggg: vielen Dank für die Hilfe!

Zrrronggg!

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL