[gelöst] mit DOIF Klimaanlage aus, wenn Fenster geöffnet wird

Begonnen von marboj, 05 März 2021, 14:12:50

Vorheriges Thema - Nächstes Thema

marboj

Hallo ihr,

ich möchte hinbekommen, dass wenn ein Fenster geöffnet wird, abhängig davon, ob die Klimaanlage an ist, dass diese ausgeschaltet wird. Habe bereits einen event-on-change beim Fenster-STATE. Dieser funktioniert auch, da ich beim Öffnen des Fensters eine Nachricht per Pushover bekomme.

Mein DOIF-Versuch hat einen Fehler, den ich nicht finde:

define di_fensterSZ_klima DOIF (MQTT2_msh_schlafzimmer_fenster_:STATE:.open AND sz_d_klima:state = 1) (set sz_d_klima state 0)


Hier die beiden Geräte:

defmod MQTT2_msh_schlafzimmer_fenster_ MQTT2_DEVICE msh_schlafzimmer_fenster_
attr MQTT2_msh_schlafzimmer_fenster_ IODev m2server
attr MQTT2_msh_schlafzimmer_fenster_ alias Schlafzimmer Fenster
attr MQTT2_msh_schlafzimmer_fenster_ devStateIcon close.*:fts_window_1w open.*:fts_window_1w_tilt unknown.*:fts_window_1w
attr MQTT2_msh_schlafzimmer_fenster_ event-on-change-reading STATE
attr MQTT2_msh_schlafzimmer_fenster_ icon fts_window_1w
attr MQTT2_msh_schlafzimmer_fenster_ jsonMap d_schlafzimmer_fenster__details:STATE
attr MQTT2_msh_schlafzimmer_fenster_ readingList msh/d_schlafzimmer_fenster_:.* { json2nameValue($EVENT, 'd_schlafzimmer_fenster__', $JSONMAP) }
attr MQTT2_msh_schlafzimmer_fenster_ room 20_Schlafzimmer,Medion
attr MQTT2_msh_schlafzimmer_fenster_ stateFormat STATE


defmod sz_d_klima dummy
attr sz_d_klima alias Schlafzimmer Klimaanlage Steuerung
attr sz_d_klima group Klimaanlage
attr sz_d_klima icon icoKLIMA
attr sz_d_klima readingList state desired-temp nanoe operationmode ecomode
attr sz_d_klima room 20_Schlafzimmer
attr sz_d_klima setList state:1,0 desired-temp nanoe:2,1 operationmode:0,1,2,3,4 ecomode:0,1,2
attr sz_d_klima stateFormat {\
if (ReadingsVal("sz_d_klima","state","") eq "1" ) {\
my $state_info = "Eingeschaltet";;\
\
my $temperature = ReadingsVal("sz_d_klima","desired-temp","");;\
$temperature .= "°C";;\
\
\
my $ecomode;;\
if (ReadingsVal("sz_d_klima","ecomode","") eq "0" ){\
$ecomode = "EcoMode Auto";;\
}\
elsif (ReadingsVal("sz_d_klima","ecomode","") eq "1" ){\
$ecomode = "EcoMode Powerful";;\
}\
elsif (ReadingsVal("sz_d_klima","ecomode","") eq "2" ){\
$ecomode = "EcoMode Quiet";; \
}\
\
\
my $operationmode;;\
if (ReadingsVal("sz_d_klima","operationmode","") eq "0" ){\
$operationmode = "Modus Auto";;\
}\
elsif (ReadingsVal("sz_d_klima","operationmode","") eq "1" ){\
$operationmode = "Modus Dry";;\
}\
elsif (ReadingsVal("sz_d_klima","operationmode","") eq "2" ){\
$operationmode = "Modus Cool";; \
}\
elsif (ReadingsVal("sz_d_klima","operationmode","") eq "3" ){\
$operationmode = "Modus Heat";;\
}\
elsif (ReadingsVal("sz_d_klima","operationmode","") eq "4" ){\
$operationmode = "Modus NANOE";;\
}\
\
my $nanoe;;\
if (ReadingsVal("sz_d_klima","nanoe","") eq "1" ){\
$nanoe = "Nanoe Aus";;\
}\
elsif (ReadingsVal("sz_d_klima","nanoe","") eq "2" ){\
$nanoe = "Nanoe An";;\
}\
else {\
$nanoe = "Nanoe Aus";;\
}\
\
$state_info = join(" / ", $state_info, $temperature, $nanoe, $operationmode, $ecomode);;\
\
}\
else {\
return "Ausgeschaltet";; \
}\
}
attr sz_d_klima userReadings params {sz_klima_control()}
attr sz_d_klima webCmd state:operationmode
attr sz_d_klima webCmdLabel an(1)/aus(0):Modus (0=Auto / 1=Trocken / 2=Kühlen / 3=Heizen / 4=Nanoe)
attr sz_d_klima widgetOverride desired-temp:slider,16.0,0.5,30.0,1


Den Dummy zur Steuerung der Klimaanlage habe ich von hier: https://forum.fhem.de/index.php/topic,101791.msg952670.html#msg952670

Könnte bitte einmal ein "Kenner" drüberschauen?

Vielen Dank und viele Grüße
Marco



meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Otto123

#1
Hallo Marco,

Du erinnerst Dich? https://forum.fhem.de/index.php/topic,119100.msg1135408.html#msg1135408

Der geht so nicht:
define di_fensterSZ_klima DOIF (MQTT2_msh_schlafzimmer_fenster_:STATE:.open AND sz_d_klima:state = 1) (set sz_d_klima state 0)

Das wäre der Syntax zur Abfrage (siehe Doku):
[sz_d_klima:state] = 1

Der hier könnte ein Eventrigger sein?
MQTT2_msh_schlafzimmer_fenster_:STATE:.open oder wolltest Du auch was abfragen?

Und der hier set sz_d_klima state 0  - Heinrich mir graust vor Dir!

Tu mir einen Gefallen: vergiss BITTE, dass Du state und STATE selbst manipulieren kannst - überlass diese den Geräten - und arbeite mit anderen Readings!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Christoph Morrison

Zitat von: Otto123 am 05 März 2021, 16:13:37
Das wäre der Syntax zur Abfrage (siehe Doku):
[sz_d_klima:state] = 1

Bitte doppelte == bei einem Vergleich und gerne noch :i spendieren um numerischen Kontext zu erzwingen.

Allgemein scheint mir der Perl-Code im stateFormat auch ziemlich Kraut und Rüben zu sein.

marboj

Habe mir beim Fenster ein anderes Reading genommen:

([MQTT2_msh_schlafzimmer_fenster_:d_schlafzimmer_fenster__details] eq "open" AND [sz_d_klima:state] == 1) (set sz_d_klima state 0)

Es erscheint aber folgender Fehler:     

condition c01: syntax error, line 1, near ""open" AND "

Den Dummy zur Steuerung der Klimaanlage kann ich leider nur über state steuern...
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

Damian

Zitat von: marboj am 05 März 2021, 18:24:12
Habe mir beim Fenster ein anderes Reading genommen:

([MQTT2_msh_schlafzimmer_fenster_:d_schlafzimmer_fenster__details] eq "open" AND [sz_d_klima:state] == 1) (set sz_d_klima state 0)

Es erscheint aber folgender Fehler:     

condition c01: syntax error, line 1, near ""open" AND "

Den Dummy zur Steuerung der Klimaanlage kann ich leider nur über state steuern...

and wäre richtig gewesen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

marboj

Vielen Dank. Mit dem kleinen and kommt zumindest kein Syntaxfehler mehr. Testen kann ich erst, wenn die Mitbewohner mal nicht da sind ;-).
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

marboj

meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II