Hallo zusammen :)
ich wähne mich eigentlich fast am Ziel :)
Das DOIF soll mir eine Nachricht schicken, wenn die Temperatur um 06:00 Uhr kleiner als 5°C ist.
Die Temperatur erhalte ich vom netatmo, die Uhrzeit durch die Angabe der Sekunden.
Die Uhrzeit klappt und mein Test sollte vorhin testweise die Nachricht schicken sollen. Deshalb die zu hohe Sekundenanzahl und die 15°C, weil wir aktuell knapp drunter liegen.
Leider erhalte ich die Telegram-Nachricht nicht und das list zeigt einen Fehler auf den ich nicht kapiere.
Vielleicht kann mir wer die Augen öffnen?
Was ich in der commandref und den vielen post gelesen habe was irgendwie passt, da komme ich zu meinem Ansatz/meiner Lösung
Internals:
CFGFN
DEF (([76920])and(netatmo temperature eq <15))(set SmartHomeBot message \@\@Ralph Achtung Strassenglätte!)
FUUID
MODEL FHEM
NAME strassenGlaette
NOTIFYDEV global
NR 341
NTFY_ORDER 50-strassenGlaette
STATE initialized
TYPE DOIF
VERSION 22913 2020-10-04 21:46:02
READINGS:
2020-10-17 21:21:16 cmd 0
2020-10-17 21:22:00 error condition c01: Unterminated <> operator, line 1.
2020-10-17 21:21:16 mode enabled
2020-10-17 21:21:16 state initialized
2020-10-17 21:22:00 timer_01_c01 18.10.2020 21:22:00
Regex:
accu:
condition:
0 (::DOIF_time_once($hash,0,$wday))and(netatmo temperature eq <15)
days:
do:
0:
0 set SmartHomeBot message \@\@Ralph Achtung Strassenglätte!
1:
helper:
DEVFILTER ^global$
NOTIFYDEV global
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
triggerDev
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1603048920
realtime:
0 21:22:00
time:
0 76920
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1603048920:
localtime 1603048920
hash:
uiTable:
Attributes:
room DOIF,Zentrale
Ich hätte eben nur gerne die Nachricht, ob ich aufs Mopped steigen kann, oder lieber den Bus nehme :D
Ich würde mich sehr freuen, wenn das jemand korrekturlesen könnte...
Grüßle!
Warum kein einfaches at!?
Und: eq < ist Quatsch!
Da du numerisch vergleichen willst wohl eher <
EDIT: eq -> equal zum Vergleich von Zeichenketten ("Strings") und < > etc. zum Vergleich von numerischen Werten. Beides zusammen ist Quatsch! ;)
EDIT: und auch einfach (netatmo temperature) ist Quatsch. Mal commandref oder/und Wiki bzgl. DOIF Syntax lesen...
EDIT: und auch mal bzgl. Perl einlesen...
EDIT: in etwa so
define atFrost at *06:00:00 {if(ReadingsNum("netatmo","temperature",20) < 15){fhem("set SmartHomeBot message \@\@Ralph Achtung Strassenglätte!")}}
sofern dein netatmo Device "netatmo" heißt und das Readings für Temperatur "temperature" heißt und nat. der Befehl bzgl. Telegram-Nachricht korrekt ist...
...ansonsten halt anpassen...
EDIT: damit sollte jeden Tag um 06:00 geprüft werden, wie kalt es ist und unter 15 Grad eine Nachricht kommen...
Gruß, Joachim
^- das und vor allem wäre es:
([netatmo:temperature] < 15)
Mmmh ich denke da geht noch einiges durcheinander - aber das haben ja andere bereits bemerkt
und bei telegram solltest Du besser keine Namen sondern eine Kontaktid verwenden, ich weiss nicht ob Telegram ids mehrfach vergibt
Okay - von "at" hab ich keinen Schimmer...
Wg. eq, ich versuche so gut wie möglich da rein zu kommen.
Die commandref ist auch das erste was ich mir anschaue. Perl ist aber keine von mir erlernte Programmiersprache. Es ist ein ausprobieren und zusammenreimen. Scheinbar sind meine Versuche wohl eher als stümperhaft zu betrachten...
Naja.
eq für Strings - check, ohne ist hier besser.
Ich hab es mit der KontaktId versucht, hat (warum auch immer) nicht funktioniert, aber ich versuche es nochmal.
Aber mal ehrlich - für einen Noob hab ich schonmal das \@\@ herausgefunden 8)
Danke auf jeden Fall!!!
Ich versuche den Ansatz von MadMax
... war noch nicht 100% - aber keine echte Fehlermeldung und schon was spät. Ich schau später nochmal drauf.
Schönes WE zusammen!