[gelöst] Ausgang Relais per Taster schalten

Begonnen von dan1180, 03 Dezember 2021, 11:01:03

Vorheriges Thema - Nächstes Thema

dan1180

Hallo zusammen,

ich habe ein Denkovi 1wire-Relais für meine Heizungssteuerung im Einsatz.
https://denkovi.com/1-wire-eight-channel-relay-board-for-home-automation

Meine Belegung:
A: Ölbrenner
B: Umwälzpumpe
E: Pumpe Fußbodenheizung
F: Pumpe Heizkörperkreis
G: Mischer Fußbodenheizung öffnen
H: Mischer Fußbodenheizung schließen

E und F habe ich über readinsProxy "sichtbar" gemacht.
A und B habe ich über einen Dummy-Switch und jeweils ein DOIF angesteuert, welche beim Drücken das Relais für eine Zeit X einschalten und gleichzeitig den Status zurückgeben.

Hier das DOIF:
bttmrobk=Button Timer Ölbrennkessel=Dummy
owswitch=Denkovi 1wire-Relais
obk=Ausgang A


([bttmrobk:state] eq "on")
     (set owswitch output obk on-for-timer 1800)
DOELSEIF
([owswitch:obk] eq "0")
     (set bttmrobk off)
DOELSEIF
([bttmrobk:state] eq "off")
     (set owswitch output obk off)


Mein "Traum" wäre es, erstens die Ausgänge direkt schaltbar zu machen (wie bei einem HM-LC-SW4-DR) und/oder einen Taster zu haben, der beim Betätigen meinen Befehl ausführt, ohne ein separates notify oder DOIF zu benötigen. Geht das?

Besten Dank für jede Hilfe.
Dan


FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Beta-User

Hallo zurück,

habe zwar kein "echtes" 1-wire (außer "ein paar" DS18B20 an diversen MySensors-Nodes), aber zum einen meine ich, dass es eigentlich reichen sollte, den out-Ausgang als readingsProxy zu vereinzeln, wie das im Wiki auch empfohlen ist.

Falls das nicht reicht und eine Art "sidekick" auf ein anderes Device erforderlich ist, hilft dir eventuell das (ab) hier weiter: https://forum.fhem.de/index.php/topic,124240.msg1190483.html#msg1190483
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

dan1180

Hallo Beta-User,

danke für die schnelle Antwort. Leider kann ich mit einem readingsProxy die Ausgänge nur lese aber nicht schalten. Mein readingsProxy, das ich mir zum Testen mal auf einen blinden Ausgang gelegt habe, sieht wie folgt aus:

Internals:
   CFGFN     
   DEF        owswitch:C
   DEVICE     owswitch
   FUUID      61a9eef8-f33f-bc18-c429-00adab826d58244b
   NAME       TestRP
   NOTIFYDEV  global,owswitch
   NR         18512
   NTFY_ORDER 50-TestRP
   READING    C
   STATE      0
   TYPE       readingsProxy
   CONTENT:
     owswitch   1
   READINGS:
     2021-12-03 11:23:11   lastCmd         on
     2021-12-03 11:19:59   state           0
Attributes:
   eventMap   on:1 off:0
   setList    on off
   webCmd     on:off


Die Attribute habe ich alle einzeln und in jeder erdenklichen Kombination versucht.

Deinen anderen Threat werde ich mir jetzt mal zu Gemüte führen.

Gruß
Dan
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

dan1180

OK...ich bin mal einen riesen Schritt weiter. Mit


Internals:
   CFGFN     
   DEF        owswitch:C
   DEVICE     owswitch
   FUUID      61a9eef8-f33f-bc18-c429-00adab826d58244b
   NAME       TestRP
   NOTIFYDEV  global,owswitch
   NR         18512
   NTFY_ORDER 50-TestRP
   READING    C
   STATE      0
   TYPE       readingsProxy
   CONTENT:
     owswitch   1
   READINGS:
     2021-12-03 11:53:20   lastCmd         on
     2021-12-03 11:53:33   state           0
Attributes:
   devStateIcon 1:btn_OfenAn 0:btn_off
   setFn      {fhem("set owswitch output C on-for-timer 10")}
   setList    on off


schaffe ich es mein Primärziel, den Brenner für eine Zeit X ohne Notify oder DOIF einzuschalten.

Leider bekomme ich mit folgenden Attributen

Internals:
   CFGFN     
   DEF        owswitch:C
   DEVICE     owswitch
   FUUID      61a9eef8-f33f-bc18-c429-00adab826d58244b
   NAME       TestRP
   NOTIFYDEV  global,owswitch
   NR         18512
   NTFY_ORDER 50-TestRP
   READING    C
   STATE      off
   TYPE       readingsProxy
   CONTENT:
     owswitch   1
   READINGS:
     2021-12-03 11:48:31   lastCmd         on
     2021-12-03 11:49:59   state           off
Attributes:
   devStateIcon 1:btn_OfenAn 0:btn_off
   setFn      {fhem("set owswitch output C on". ($CMD eq "on")? "on" : "off")}
   setList    on off
   valueFn    { !$VALUE ? "off" : "on" }


eine Fehlermeldung
ZitatOWSWITCH: Set with unknown argument Unknown
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Beta-User

...wie im anderen Thread erläutert, müssen bei der setFn zuerst die Variablen ermittelt werden, diese concatenation klappt nicht in der Weise, dass man das "hinterher" mittels ternärem Operator schreiben könnte. Siehe meine (verbesserten) Beispiele.
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

dan1180

Man muss natürlich auch im Richtigen Post schauen...

Viiielen Dank. Es funktioniert ALLES so wie ich es mir erhofft habe.
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte

Beta-User

Danke für das [gelöst] im Titel.

Super wäre es, wenn du deine fertige Lösung noch posten könntest und dabei vielleicht noch etwas klarer machen, was für was zuständig ist (welches "hardware"-Device input ist, welches dargestellt wird und was output-Kommandos sind).

Es fehlt leider bisher an einer geschlossenen Darstellung solcher Probleme, und hier stünde für "copy/paste" dann wieder nur (d)eine vorherige, also FALSCHE Lösung bereit ;) ...
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

dan1180

#7
Aber klar doch. Danke für den Hinweis.

Ich bin nun mit meinem "Wissen" auch noch auf einen Eintrag im Wiki gestoßen, der das Problem beschreibt. Allerdings muss man dazu nach "readingsProxy" suchen und wird dann unter den Anwendungsbeispielen
Zitat1-Wire 8-fach switch (DS2408) mit OWSWITCH als Output (erster Kanal)
fündig. Auf die Idee bin ich leider nicht gekommen...  ::):
https://wiki.fhem.de/wiki/ReadingsProxy

Fragestellung:
Relais auf Denkovi 1-Wire 8-fach Relais-Karte (DS2408) direkt, ohne Dummy-Schalter und Notify/DOIF, schalten.

Anwendung:
1. Brenner Ölheizung ein-/ausschalten.
2. Umwälzpumpe für Warmwasser für 5 Minuten einschalten.

Mit dem im Wiki angegebenen Code hat es bei mir allerdings nicht auf Anhieb funktioniert. Ich musste im Attribut setFN die beiden Kommandos "output A off" und "output A on" vertauschen sowie, ebenfalls mit vertauschtem ,,on"/,,off", das Attribut valueFN aus dem nächsten Absatz (on/off vertauschen) verwenden. Mit dem originalen valueFN bekam ich regelmäßig die Fehlermeldung
ZitatPERL WARNING: Argument "off" isn't numeric in numeric eq (==) at (eval 2762) line 1.

Lösung:
So hat es bei mir dann funktioniert:

define SchalterA readingsProxy OWX:xxx
attr SchalterA setFn {($CMD eq "on")?"output A on":"output A off"}
attr SchalterA setList on off
attr SchalterA valueFn {($VALUE eq "on")?"on":"off"}
attr SchalterA webCmd on:off


Für den Timer (hier 5 Minuten) einfach setFN wie folgt angeben:

attr SchalterA setFn {fhem("set OWX output A on-for-timer 300")}


Wer, wie ich, nur das Icon zum Schalten haben möchte, kann unter webCmd nur einen ":" eintragen. Somit sind "on" und "off" ausgeblendet.

Ich hoffe es ist einigermaßen verständlich und ihr könnt mit der Erklärung etwas anfangen. Vielen Dank jedenfalls nochmal an Beta-User für seine Unterstützung!  :)
FHEM 6.2 auf RPi4B
Raspberrymatic 3.X auf RPI3B

1xDS2408 und 6xDS18B20 an GPIO über Modul RPI_1Wire
>50 Homematic-Geräte