Hallo Zusammen,
folgendes funktioniert bei mir nicht wie ich es erwarten würde:
(["^EG_WZ_HT_Climate$:^humidity"] < 51)
Nach meinem Verständnis sollte das nur triggern, wenn die Luftfeuchtigkeit unter 51% liegt? Richtig?
Bei mir triggert das aber ständig obwohl die Luftfeuchtigkeit bei 54% liegt. Hab ich nen Denkfehler?
Mit repeatcmd sollte das wenn es unter 51 bleibt dann immer weiter triggern bis es wieder über 51 geht?
Der gesamte Def des DoIt sieht so aus:
(["^EG_WZ_HT_Climate$:^humidity"] < 51) ((set Telegram_Bot message @Empfänger Luftfeuchtigkeit im {(AttrVal("$DEVICE","alias", "$DEVICE"))} ist unter 50% gefallen. Bitte Luftbefeuchter einschalten!))
Falls noch jemand eine Idee, hat, wie ich den Luftfeuchtigkeitswert Dynamisch mitgeben kann, immer her damit. Das hab ich nicht hinbekommen.
Hallo,
bei mir geht das mit der Helligkeit so:
([HM_Sensor:luminosity] < 1)
müsste bei Dir bedeuten:
([EG_WZ_HT_Climate:humidity] < 51)
Gruß Rolf
Hi,
ich gebe die Luftfeuchtigkeit mit ner Variabel mit
({
my $msg_msgText_feucht = ReadingsVal('$DEVICE','humidity','');;
fhem ("set ............. $msg_msgText_feucht % Luftfeuchtigkeit. Bitte das Fenster öffnen.");;
})
Wenn das einfacher geht, gerne her damit :-)
Das Problem, du triggerst wie ich auch auf ein Event. Damit wird der DOIF-Fall immer wahr, der Vergleich dahinter wohl ignoriert. So hab ich das zumindest verstanden und durch Testen auch bemerkt, ich frag dann dahinter mit and [$DEVICE:humidity] < 51
nochmal ab.
Falls auch das einfacher oder richtiger geht bin ich auch daran interessiert :-)
Grüße
Achim
Danke schon mal für Eure Hilfe. Ich teste das mal.
Am liebsten hätte ich ein Doif, dass auf alle *_TH_Climate Devices und dort auf das Reading humidity triggert.
Das würde wohl mit (["^_HT_Climate:^humidity"]
gehen.
Am liebsten nur auf die Devices, die unter Alias einen "Menschen lesbaren Namen" eingetragen haben.
Daher trigger ich im Moment nur auf das Wohnzimmer, da ich dort einen Alias habe. Hab es nicht hinbekommen Deveices auszuschließen, bei denen das Attribut Alias nicht existiert.
Wie man dann den Humidity Wert in der Nachricht ausgibt wäre noch interessant.
Im Beispiel von DBSnake muss die Variable ja auch im Ausführungsteil des Doif vor dem Versenden der Telegram Nachricht mit dem Reading gefüllt werden? Oder?
Das einzubauen übersteigt aktuell meine Fähigkeiten :-(
Das funktioniert:([EG_WZ_HT_Climate:humidity] < 51)
die Frage ist, warum geht (["^EG_WZ_HT_Climate$:^humidity"] < 51)
nicht?
Weil das eine ein Event ist und das andere ein Reading darstellt.
Hi,
"Befüllt" wird mit der Ausführung automatisch. Ich hab das mal für dich angepasst. Versuchs mal mit
({
my $msg_msgText_feucht_alias = AttrVal('$DEVICE','alias','');;
my $msg_msgText_feucht_humidity = ReadingsVal('$DEVICE','humidity','');;
fhem ("set Telegram_Bot message @Empfänger Luftfeuchtigkeit im $msg_msgText_feucht_alias ist $msg_msgText_feucht_humidity % . Bitte Luftbefeuchter einschalten!")}
Anstatt
((set Telegram_Bot message @Empfänger Luftfeuchtigkeit im {(AttrVal("$DEVICE","alias", "$DEVICE"))} ist unter 50% gefal..........
Grüße
Achim
Gesendet von meinem SM-P605 mit Tapatalk
irgendwie funktioniert das nicht :-(
2016.11.23 22:28:32 1: PERL WARNING: Possible unintended interpolation of @Telegram_Empfänger in string at (eval 271952) line 1.
2016.11.23 22:28:32 3: eval: { my $msg_msgText_feucht_alias = AttrVal('EG_WZ_HT_Climate','alias',''); my $msg_msgText_feucht_humidity = ReadingsVal('EG_WZ_HT_Climate','humidity',''); fhem ("set Telegram_Bot message @@Telegram_Empfänger Luftfeuchtigkeit im $msg_msgText_feucht_alias ist $msg_msgText_feucht_humidity % . Bitte Luftbefeuchter einschalten!")}
2016.11.23 22:28:32 2: di_Trockenheits_Warnung_Tg: { my $msg_msgText_feucht_alias = AttrVal('EG_WZ_HT_Climate','alias','');; my $msg_msgText_feucht_humidity = ReadingsVal('EG_WZ_HT_Climate','humidity','');; fhem ("set Telegram_Bot message @@Telegram_Empfänger Luftfeuchtigkeit im $msg_msgText_feucht_alias ist $msg_msgText_feucht_humidity % . Bitte Luftbefeuchter einschalten!")}: Global symbol "@Telegram_Empfänger" requires explicit package name at (eval 271952) line 1.
ohne die zwei @@ gab reichlich fehler für Syntax. Und es fehlte noch eine klammer am Ende.
Moin,
den set Telegram Befehl hab ich mir aus deinem Code geholt ;-) und ja ne Klammer am schluss ging verloren ;-) mit dem @@ geht es? oder haste noch immer Fehler? Wenn ja poste doch mal die ganze DEF
Grüße
Achim
Hallo, die Fehler kommen mit dem doppel @.
Mit nur einem bekommen ich Syntax Fehler.
Brauch ich das fhem vor dem Befehl überhaupt? Ich kann das grad nicht testen.
Das Problem an Deinem ursprünglichen DOIF ist, dass Du das Triggern durch ein Event und den Wertevergleich trennen musst:
Ich würde es mal so probieren:
(["^EG_WZ_HT_Climate$:^humidity"] and [?$DEVICE:humidity] < 51)
Das DOIF wird durch ein humidity-Event getriggert und prüft dann, ob beim triggernden Device das Reading humidity < 51 ist.
Im Ausführungsteil kannst Du auch einfach [$DEVICE:humidity] verwenden, um den Wert auszugeben.
Was Alias angeht, würde ich überlegen, darauf zu verzichten und den Geräten lieber gleich passende Namen zu geben. Das ist mit dem rename-Befehl auch nachträglich möglich. Ein Alias ist nur für eine anschaulichere Darstellung in der Weboberfläche vorgesehen und kann beispielsweise von DOIF nicht ausgewertet werden. Sinnvoller ist es, die Devices selbst systematisch und "sprechend" zu benennen.
Danke! Ich probiers mal aus.
Meine Geräte sind sehr systematisch benannt... :-)
Aber Heizung Wohnzimmer ist halt besser als EG_WZ_HT
Für Scripte etc. sind die kurzen Bezeichnungen besser.
Du könntest für jedes Gerät einen beliebigen sprechenden Namen Deiner Wahl in einem Reading bzw. UserReading speichern. Auf den kannst Du dann auch von einem DOIF aus zugreifen.
Hi,
ja das fhem vor dem Befehl brauchst du ;-) vorher warst du durch die { in perl, nun musst du zurück zur fhem ebene.
Was passiert wenn du alles zwischen den " " ohne die $ direkt oben in der Eingabe abschickst? geht das durch? also
set Telegram_Bot message @@Telegram_Empfänger Luftfeuchtigkeit im msg_msgText_feucht_alias ist msg_msgText_feucht_humidity % . Bitte Luftbefeuchter einschalten!
Warum hast du Räume bzw Geräte ohne Alias? ;-)
Grüße
Achim