Ich bekomme es nicht hin das er den Status Anwesenheit_Einer nicht auf ON setzt wenn der Status vorher schon ON ist ..
Hintergrund:
Chris ist on
Dadurch ist dann "Einer on"
Tanja geht zusätzlich on
Und Einer wird wieder on geschaltet ... obwohl er schon on war.
Das wiederrum stört alle meine folge Überwachungen auf Anwesenheit_Einer.
Jemand eine Erklärung wieso das nicht klappt ??
# Anwesenheit Einer
define Anwesenheit_Einer dummy
attr Anwesenheit_Einer loglevel 6
attr Anwesenheit_Einer room Anwesenheit
attr Anwesenheit_Einer setList on off
define Anwesenheit_Einer_FileLog FileLog ./log/Anwesenheit_Einer.log Anwesenheit_Einer
attr Anwesenheit_Einer_FileLog logtype text
attr Anwesenheit_Einer_FileLog room Logfiles
define Anwesenheit_Einer_setzen notify Anwesenheit_.*:.* { \
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on")) { \
fhem ("set Anwesenheit_Einer on") if ("Anwesenheit_Einer" ne "on");; \
} \
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off")) { \
fhem ("set Anwesenheit_Einer off")if ("Anwesenheit_Einer" ne "off");;\
}\
}
#MAIL BEI ANWESEND ÄNDERUNG
define Mail_abwesend notify Anwesenheit.*:.* { sendNotify ("Das Gerät @ ist % gegangen","@ %","@ %","Handy @ ist Zuhause %",0)}
Hi Chris,
in deinem Vergleich vergleichst du, ob der String "Anwesenheit_Einer" ungleich dem String "on" ist. Das ist natürlich immer der Fall. Du musst den Wert mit "on" vergleichen.
Also sowas wieValue("Anwesenheit_Einer") ne "on"
Natürlich nur an die richtige Stelle geschrieben...
Grüße Reinerlein
ahhhh okay Danke nach was herum probieren hab ich es nun geschafft :D
Anwesenheit_.*:.* {
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") ne "on")) {
fhem ("set Anwesenheit_Einer on") if ("Anwesenheit_Einer" eq "on");
}
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off")) {
fhem ("set Anwesenheit_Einer off")if ("Anwesenheit_Einer" ne "off");
}
}
wollte das ganze jetzt nochmal versuchen aber nu klappt EQ und NE nicht
.*._Lueften:.*JA {
fhem (sendNotify ("@ bitte! Zu hohle Luftfeuchte","@ bitte !","1Zeile JA","@ bitte !",2))if (".*._Lueften:.*JA" eq "JA");
}
mit eq passiert Nichts
mit ne passiert was aber IMMER egal ob ja schon gesetzt ist.
Der Status von _Lueften kann JA NEN EGAL sein.
Klappt es vielleicht nicht weil es Dynamisch ist ? Muss ich dafür mit @ arbeiten um das gleich gerät zu Prüfen ?
Ja bei allen 5 _Lueften alle 5 Minuten der Status verändert wird. Wenn dann ALLE JA gehen ?? Gibt das kein Problem?
Okay wohl doch falsch auch der code oben klappt nicht bei Anwesenheit_Einer :(
Den Post von Reinerlein hast du gesehen? Da steht drin, was das Problem ist.
ja klar darafhin habe ich den code ja geändert. Aber irgendwie verstehe ich das wohl noch nicht o_O
Da der jetzige Code nicht mehr Einer auf ON setzt egal was. Egal ob eq oder ne .. wenn ich ne fhem ("set Anwesenheit_Einer on") if ("Anwesenheit_Einer" eq "on"); wieder in ("Anwesenheit_Einer" ne "on") mache dann klappt es aber ON wird dann immer wieder gesetzt,
Was nutzt man den sonst ?? kann man nicht einfach ein = nehmen :P
Anwesenheit_.*:.* {
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on")) {
fhem ("set Anwesenheit_Einer on") if ("Anwesenheit_Einer" eq "on");
}
if ((Value("Anwesenheit_Chris") eq "off") && (Value("Anwesenheit_Tanja") eq "off")) {
fhem ("set Anwesenheit_Einer off")if ("Anwesenheit_Einer" ne "off");
}
}
Der Code ist nicht verändert, da stehet immer noch
("Anwesenheit_Einer" ne "off")
Also ich meine: Du musst auch
if ("Anwesenheit_Einer" eq "on");
anpassen!
oha jetzt bin ich ganz verwirrt :(
Also hab beide Zeilen schon herumgetauscht ne eq on / off aber egal wie habe ich immer entweder geht Einer gar nicht mehr ON oder dauerhaft.
Also auch bei dem was du geschrieben hast.
Hi Chris,
jaa, ich hatte nur ein Beispiel beschrieben, und geschrieben , dass du das an die entsprechenden Stellen setzen solltest. Natürlich auch an alle :-)
Bzw. du kannst dir auch ein paar IFs sparen...
Also:
Anwesenheit_.*:.* {
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on")) {
fhem ("set Anwesenheit_Einer on");
} else {
fhem ("set Anwesenheit_Einer off");
}
Damit wird, sobald irgendeiner der beiden zuhause ist, der Status auf "on" gesetzt, sonst (also wenn keiner zuhause ist) auf "off".
Grüße Reinerlein
Hi Chris,
sorry was übersehen.
Hier also nochmal:
Anwesenheit_.*:.* {
if ((Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on")) {
fhem ("set Anwesenheit_Einer on") if (Value("Anwesenheit_Einer") ne "on");
} else {
fhem ("set Anwesenheit_Einer off") if (Value("Anwesenheit_Einer") ne "off");
}
Jetzt wird auch nur noch beim Wechsel des Wertes geschaltet.
Grüße Reinerlein
hmm so einfach habe ich anfangs auch gedacht aber mit deinem Code wird Einer gar nicht mehr geschaltet o_O
Sorry 2. Post noch nicht gesehen :)
Also auch beim 2. wird EINER nicht geschaltet
Ohaa jetzt spinnt FHEM :D FHEM NEUSTART
und den letzer Code scheint zu klappen ..
Danke ;)
Trotzdem komisch vielleicht klappte daher auch meine ne / eq versuche nicht mehr ? Das wäre eine Erklärung.