HTTPMOD und Active Low Relais

Begonnen von freetz, 21 Dezember 2016, 02:04:17

Vorheriges Thema - Nächstes Thema

freetz

Hallo zusammen,

ich stehe etwas auf dem Schlauch bei der Anbindung meines Active Low Relais - dieses hat ja die Eigenschaft, dass die Geräte, die an den einzelnen Relais aktiv (ein) sind, wenn der Rückgabewert 0 (LOW) ist und entsprechend inaktiv (aus) sind, wenn der Rückgabewert 1 (HIGH) ist.

Ich kann das Relais gut über HTTPMOD ansprechen, aber es geht mir dabei um mehr als nur die Optik der richtigen Icons. Wenn ich z.B. den Befehl "set Luefter 1" (oder "on") aufrufe, möchte ich, dass dann letztlich an das Gerät eine "0" gesendet wird. Umgekehrt möchte ich, wenn ich den Status des Relais abfrage, dass von der ausgelesenen "0" ausgehend eine "1" in den state des Devices geschrieben wird. Wie gesagt, die reine Änderung der Anzeige (die ich über webcmd hinbekommen würde) reicht nicht aus.

Ich habe es schon mit setIMap und readingOMap probiert, aber ohne Erfolg.

Hier meine Device-Definition:

define EthRelais HTTPMOD http://192.168.1.50/G03/G04/G05 45
attr EthRelais userattr reading0Name reading0Regex reading1Name reading1Regex reading2Name reading2Regex readingOExpr readingOMap set0Name set0URL set1Name set1URL set2Name set2URL setIMap setParseResponse:0,1 setRegex
attr EthRelais event-on-change-reading .*
attr EthRelais reading0Name Heater
attr EthRelais reading0Regex GPIO3:[ \t](\d)
attr EthRelais reading1Name Fan
attr EthRelais reading1Regex GPIO5:[ \t](\d)
attr EthRelais reading2Name Bell
attr EthRelais reading2Regex GPIO4:[ \t](\d)
attr EthRelais readingOMap 0:1, 1:0
attr EthRelais room Heizung
attr EthRelais set0Name Heater
attr EthRelais set0URL http://192.168.1.50/G03=$val
attr EthRelais set1Name Fan
attr EthRelais set1URL http://192.168.1.50/G05=$val
attr EthRelais set2Name Bell
attr EthRelais set2URL http://192.168.1.50/G04=$val
attr EthRelais setIMap 0:1, 1:0
attr EthRelais setParseResponse 1
attr EthRelais setRegex GPIO[0-9]+:[ \t](\d)
attr EthRelais timeout 5


Dazu noch einmal als Ergänzung das DOIF bzw. Notify für den Lüfter:

([EthRelais:Fan] == 1)(setreading Luefter state 1) DOELSEIF ([EthRelais:Fan] == 0)(setreading Luefter state 0)
Luefter set EthRelais Fan $EVENT

Momentan "pendelt" der Lüfter dabei etwa alle 45 Sekunden (wohl der oben angegebene Polling-Intervall) zwischen Lüfter ein und Lüfter aus, wenn ich den Lüfter über das Webinterface einmal ein- oder ausschalte, ohne, dass ich danach etwas mache. Wenn ich das Relais direkt über das Webinterface des Relais schalte, ist das kein Problem und der Status wird dann auch richtig umgewandelt (also "0" über das Webinterface an das Relais gesendet wird zu einer "1" in FHEM).

Hier das entsprechende Event-Log:

2016-12-21 02:01:35 dummy Klingel 0
2016-12-21 02:01:35 DOIF di_EthRelais_Bell cmd_nr: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Bell cmd: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Bell cmd_event: EthRelais
2016-12-21 02:01:35 DOIF di_EthRelais_Bell cmd_2
2016-12-21 02:01:35 dummy Luefter 0
2016-12-21 02:01:35 DOIF di_EthRelais_Fan cmd_nr: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Fan cmd: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Fan cmd_event: EthRelais
2016-12-21 02:01:35 DOIF di_EthRelais_Fan cmd_2
2016-12-21 02:01:35 dummy Therme 0
2016-12-21 02:01:35 DOIF di_EthRelais_Heater cmd_nr: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Heater cmd: 2
2016-12-21 02:01:35 DOIF di_EthRelais_Heater cmd_event: EthRelais
2016-12-21 02:01:35 DOIF di_EthRelais_Heater cmd_2
2016-12-21 02:01:35 HTTPMOD EthRelais Heater: 0
2016-12-21 02:01:35 HTTPMOD EthRelais Fan: 0
2016-12-21 02:01:35 HTTPMOD EthRelais Bell: 0
2016-12-21 02:02:20 dummy Klingel 1
2016-12-21 02:02:20 DOIF di_EthRelais_Bell cmd_nr: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Bell cmd: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Bell cmd_event: EthRelais
2016-12-21 02:02:20 DOIF di_EthRelais_Bell cmd_1
2016-12-21 02:02:20 dummy Luefter 1
2016-12-21 02:02:20 DOIF di_EthRelais_Fan cmd_nr: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Fan cmd: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Fan cmd_event: EthRelais
2016-12-21 02:02:20 DOIF di_EthRelais_Fan cmd_1
2016-12-21 02:02:20 dummy Therme 1
2016-12-21 02:02:20 DOIF di_EthRelais_Heater cmd_nr: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Heater cmd: 1
2016-12-21 02:02:20 DOIF di_EthRelais_Heater cmd_event: EthRelais
2016-12-21 02:02:20 DOIF di_EthRelais_Heater cmd_1
2016-12-21 02:02:20 HTTPMOD EthRelais Heater: 1
2016-12-21 02:02:20 HTTPMOD EthRelais Fan: 1
2016-12-21 02:02:20 HTTPMOD EthRelais Bell: 1


Freue mich über jeden Hinweis!

Gruß,

F.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/BSB-LAN

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan