Verriegelung 2er Aktoren zur Lüftersteuerung

Begonnen von wowogiengen, 12 Oktober 2018, 18:50:56

Vorheriges Thema - Nächstes Thema

wowogiengen

Hallo,
ich habe bei mir zu Hause einen Rohreinschublüfter, der mit 240V Wechselspannung arbeitet.
Diesen habe ich bisher manuell über einen speziellen Schaltereinsatz geschalten. Damit kann man zum einen die Phase an- oder abschalten, und zum anderen die Phase auf den Links-Eingang oder den Rechts-Eingang schalten.

Jetzt möchte ich das Ganze automatisieren und habe mir dazu einen 2-Kanal Homematic-Aktor HM-LC-SW2-FM (je einpolig Ein/Aus) und ein passendes Wechsler-Relais gekauft. Mit dem ersten Kanal auf dem Aktor würde ich die Phase an- oder abschalten. Mit dem zweiten Kanal dann über das Relais den geschalteten Ausgang vom ersten Kanal entweder auf den linken oder rechten Eingang des Ventilators legen.

Momentan ist es so, dass die beiden Kanäle, wie auch beim manuellen Schalten, nicht verriegelt sind, so dass man die Drehrichtung während des Betriebs einfach umschalten kann. Das tut dem Ventilatormotor auf Dauer bestimmt nicht gut, und deswegen möchte ich es jetzt bei der Automatisierung verriegeln.

Die Einfach-Lösung wäre bestimmt so, dass ich den ersten Kanal direkt über FHEM ansteuere, so dass die Leistung immer aufgeschalten werden kann, wenn man will. Für die Drehrichtungsumkehr würde ich einen dummy nehmen, der die Zustände links und rechts analog zum Status on oder off des zweiten Kanals annehmen kann. Über ein notify kann ich dann ein DoIf triggern, welches abprüft, ob der erste Kanal aus oder an ist. Nur wenn der erste Kanal aus ist, darf der zweite Kanal dann sofort geschalten werden. Im anderen Fall würde ich den ersten Kanal zunächst abschalten, und dann nach einer gewissen Zeit (AT mit relativer Zeitangabe) den zweiten Kanal auf den Zustand des dummy-Devices setzen.

Oder würde es sich anbieten, hierfür ein Modul zu schreiben, das all diese Aufgaben direkt erledigt?

Viele Grüße
Wolfgang


Beta-User

Wenn man einen Rollladenaktor auf unendliche Fahrzeit stellen könnte, wäre das vermutlich die einfachste Lösung.


Oder mal bei den template-Leuten mal anfragen, ob man das direkt durch entspricht. Registerwerte an dem Aktor einstellen kann.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wowogiengen

Hallo,
ich hab jetzt ein bisschen nachgelesen und ausprobiert...
Folgendes notify ist dabei herausgekommen:

Folgende Devices werden hierbei verwendet:

Ein Dummy- Device, mit dem ich über FHEM die Drehrichtung umschalten kann

define Drehrichtung dummy
attr Drehrichtung devStateIcon REIN:Prev:RAUS RAUS:Next:REIN
attr Drehrichtung eventMap off:REIN on:RAUS
attr Drehrichtung readingList state
attr Drehrichtung room Speis
attr Drehrichtung setList state:RAUS,REIN
attr Drehrichtung webCmd RAUS:REIN

Dieses Device geht auf das untenstehende notify

Dann ein dummy-Device mit dem ich die Leistung ein und ausschalten kann. Dieses müsste auch noch über ein notify oder so auf ein echtes devices gehen.

define Leistung dummy
attr Leistung eventMap off:AUS on:AN
attr Leistung readingList state
attr Leistung room Speis
attr Leistung setList state:AUS,AN
attr Leistung webCmd AUS:AN

Das ist das notify, welches die Arbeit macht - mit vielen Loginformationen zum Testen

define ntfy_Ventilator notify (Drehrichtung:RAUS|Drehrichtung:REIN)\
{\
Log(1,"Notify für Drehrichtung wurde getriggert");;;;\
Log(1,"Leistung ist ".Value("LichtSchlafzimmerHinten"));;;;\
if (Value("LichtSchlafzimmerHinten") eq "off")\
{\
Log(1,"Leistung ist aus!");;;;\
Log(1,"Drehrichtung ist ".Value("LichtSchlafzimmerOben"));;;;\
if (Value("Drehrichtung") eq "RAUS")\
{\
Log(1,"Drehrichtung soll RAUS werden!");;;;\
fhem("set LichtSchlafzimmerOben off");;;;\
Log(1,"Drehrichtung wird RAUS, ohne Leistung");;;;\
}\
else\
{\
if (Value("Drehrichtung") eq "REIN")\
{\
Log(1,"Drehrichtung soll REIN werden!");;;;\
fhem("set LichtSchlafzimmerOben on");;;;\
Log(1,"Drehrichtung wird REIN, ohne Leistung");;;;\
}\
}\
}\
else\
{\
if (Value("LichtSchlafzimmerHinten") eq "on")\
{\
Log(1,"Leistung ist an!");;;;\
Log(1,"Drehrichtung ist ".Value("LichtSchlafzimmerOben"));;;;\
fhem("set LichtSchlafzimmerHinten off");;;;\
fhem("set Leistung AUS");;;;\
if (Value("Drehrichtung") eq "REIN")\
{\
Log(1,"Drehrichtung soll RAUS werden!");;;;\
Log(1,"Drehrichtung wird RAUS, mit Leistung");;;;\
fhem ("define a2 at +00:00:01  set LichtSchlafzimmerOben on");;\
Log(1,"Leistung wieder einschalten");;;;\
fhem ("define a2a at +00:00:02  set LichtSchlafzimmerHinten on");;\
fhem ("define a2b at +00:00:02  set Leistung AN");;\
}\
else\
{\
if (Value("Drehrichtung") eq "RAUS")\
{\
Log(1,"Drehrichtung soll REIN werden!");;;;\
Log(1,"Drehrichtung wird REIN, mit Leistung");;;;\
fhem ("define a2 at +00:00:01  set LichtSchlafzimmerOben off");;\
Log(1,"Leistung wieder einschalten");;;;\
fhem ("define a2a at +00:00:02  set LichtSchlafzimmerHinten on");;\
fhem ("define a2b at +00:00:02  set Leistung AN");;\
}\
}\
}\
}\
}
attr ntfy_Ventilator room Speis


Ich weiß nicht, ob ich die Leistung überhaupt als dummy-Device haben muss, oder ob ich da direkt den Aktor-Kanal nehmen könnte. Aber ich glaube das geht auch direkt...

Viele Grüße
Wolfgang