Hallo,
ich tracke mittlerweile den Status zweier Smartphones und führe diese via Residents in einem Device namens "Anwesenheit" zusammen.
Nun möchte ich Folgendes erreichen:
if("Anwesenheit:presence-Wechsel nach absent" ist mind. 20 Minuten her) set Device x off;
if("Anwesenheit:presence-Wechsel nach present") set Device x on;
Das mit den 20 Minuten möchte ich nicht mit absenceTimeout in den Presence-Devices lösen, sondern eine autarke Regel definieren, die nur für das Device x gelten soll.
Eine grobe Richtung, mit welchen "Werkzeugen" sich dies am Besten lösen könnte, würde mir schon fürs Erste reichen. :)
Gruß Chris
Das erste mit watchdog, das zweite mit notify.
Ok, gut.
Wie behält man denn die Übersicht innerhalb von FHEM, wenn man für solch eine Aktion bereits zwei unterschiedliche Devices anlegen muss?
Das kann dann ja, je nach Anzahl der zu steuernden Geräte, sehr schnell sehr unübersichtlich werden.
Macht "man" das dann über Gruppen?
Gruß Chris
Du siehst in der Detailansicht der Devices immer mit welchem anderen Device es "Probably associated" ist.
Ja, schon.
Ich dacht nur, dass man die riesen Liste in "Everything" irgendwie etwas ordnen könnte.
Ich gehe eigentlich immer in "Everything", um mir einen Überblick zu verschaffen, aber vielleicht gibt es ja auch diesbezüglich einen besseren Weg.
Gruß Chris
Gruppen, Räume, persönliche Notizen. Such Dir was aus. Du kannst mittels devspec wunderbar suchen nach Kriterien.
Zitat von: chq am 10 Juli 2018, 22:15:26
Ja, schon.
Ich dacht nur, dass man die riesen Liste in "Everything" irgendwie etwas ordnen könnte.
Ich gehe eigentlich immer in "Everything", um mir einen Überblick zu verschaffen, aber vielleicht gibt es ja auch diesbezüglich einen besseren Weg.
Gruß Chris
das kannst du mit dem Modul MSwitch in einem Device erledigen .
hier das zugehörige wiki:
https://wiki.fhem.de/wiki/MSwitch.pm (https://wiki.fhem.de/wiki/MSwitch.pm)
wenn du es damit versuchen willsz und hilfe benötigst , hier der passende thread:
https://forum.fhem.de/index.php/topic,86199.0.html (https://forum.fhem.de/index.php/topic,86199.0.html)
gruss Byte09
PS: Das Modul bietet eine Möglichkeit , recht einfach den Überblick zu behalten :
https://wiki.fhem.de/wiki/MSwitch.pm#MSwitch_Inforoom (https://wiki.fhem.de/wiki/MSwitch.pm#MSwitch_Inforoom)
Hallo,
das MSwitch-Modul möchte ich zunächst einmal nicht verwenden und versuchte (entgegen Euren Vorschlägen) das Ganze mit einem DOIF zu lösen.
Ich bin zu dem Schluss gekommen, dass es mit einem DOIF nicht geht (ja, ich habe mir die Commandref. (die im Fall von DOIF auch sehr gut dokumentiert ist) angeschaut). Ich möchte meine Versuche mit DOIF an dieser Stelle beenden und das Ganze wie bereits vorgeschlagen mit einem Watchdog und einem Notify lösen.
Gruß Chris
Edit: Es hapert wohl noch etwas an der Formatierung. :-\
defmod nf_NAS notify ([Bewohner:state] eq "home") set NAS on
defmod wd_NAS watchdog ([Bewohner:state] not eq "home") 00:10:00 ([Bewohner:state] eq "home") set NAS off
Hab mir zum Testen nun mal einen Dummyschalter, eine Dummylampe und ein Notify erzeugt.
Ich möchte mit dem Schalter die Lampe einschalten und hierfür explizit auf das Reading state des Schalters zugreifen.
Das hier schaltet zwar die Lampe, bringt mich aber nicht weiter, da ich ja wissen möchte, wie man auf ein def. Reading zugreift:
schalter:on set lampe on
Das hier schaltet die Lampe leider nicht:
schalter:state:on set lampe on
Ist mein Problem, dass ich über ReadingsVal lösen müsste, wenn ich bestimmte Readings "abfragen" möchte?
Schalter:
Internals:
CFGFN
NAME schalter
NR 3882
STATE on
TYPE dummy
READINGS:
2018-07-23 07:59:06 state on
Attributes:
room Testraum
webCmd on:off
Lampe:
Internals:
CFGFN
NAME lampe
NR 3878
STATE on
TYPE dummy
READINGS:
2018-07-23 07:59:06 state on
Attributes:
room Testraum
Notify:
Internals:
CFGFN
DEF schalter:on set lampe on
NAME n_lampe
NOTIFYDEV schalter
NR 3980
NTFY_ORDER 50-n_lampe
REGEXP schalter:on
STATE 2018-07-23 07:59:06
TYPE notify
READINGS:
2018-07-23 07:59:00 state active
Attributes:
room Testraum
Zitat von: chq am 23 Juli 2018, 08:01:57
Hab mir zum Testen nun mal einen Dummyschalter, eine Dummylampe und ein Notify erzeugt.
Ich möchte mit dem Schalter die Lampe einschalten und hierfür explizit auf das Reading state des Schalters zugreifen.
Der Satz ist Mist. Was genau willst Du? Man reagiert nicht auf ein Reading sondern auf ein Event. Immer!
schalter:state:on
Dieses Event gibt es so nicht, dafür muss man ein Attribut setzen beim notify. addStateEvent Dann sollte glaube das hier gehen
schalter:state.on
Kommen wir zu Deinem komischen Satz. Möchtest Du ein Reading vorher abfragen?
Was ich möchte ist dann vermutlich Folgendes:
Wenn das event "on" des Readings state von schalter erzeugt wird, soll die Lampe angehen.
Wenn das event "home" des Readings state von Bewohner erzeugt wird, soll das NAS angehen.
state kann doch unterschiedliche Status haben und genau auf einen dieser Status soll das Notify auslösen.
defmod nf_NAS notify ([Bewohner:state] eq "home") set NAS on
Hier stimmt doch nur die Formatierung nicht, oder? Das ist doch nicht grundsätzlich falsch.
Gruß Chris
Zitat von: chq am 23 Juli 2018, 08:42:20
Was ich möchte ist dann vermutlich Folgendes:
Wenn das event "on" des Readings state von schalter erzeugt wird, soll die Lampe angehen.
Wenn das event "home" des Readings state von Bewohner erzeugt wird, soll das NAS angehen.
state kann doch unterschiedliche Status haben und genau auf einen dieser Status soll das Notify auslösen.
defmod nf_NAS notify ([Bewohner:state] eq "home") set NAS on
Hier stimmt doch nur die Formatierung nicht, oder? Das ist doch nicht grundsätzlich falsch.
Gruß Chris
Das ist sogar super falsch.
Entweder 2 Notify
1.
defmod nf_NAS notify Bewohner:home set NAS on
2.
defmod nf_NAS notify Bewohner:on set Lampe on
oder ein notify
defmod nf_NAS notify Bewohner:(home|on) {
fhem("set NAS on") if $EVENT eq 'home';
fhem("set Lampe on") if $EVENT eq 'on';
}
Vielen Dank, aber was mache ich denn z.B. wenn es nicht um state gehen würde, sondern das eventerzeugende Reading z.B. sensor1234 heissen würde?
Würde ich dann z.B. das hier schreiben..
defmod nf_NAS notify Bewohner:home set NAS on
..wüsste FHEM ja gar nicht, dass er vom Device Bewohner das Reading sensor1234 auslesen sollte.
Gruß Chris
So ganz verstehe ich Dich nicht. Aber ich rate mal.
Triggern soll er immer noch auf Bewohner home aber soll dann für eine weitere Entscheidung ein Reading auslesen
defmod nf_NAS notify Bewohner:(home|on) {
fhem("set NAS on") if( ReadingsVal($NAME,'sensor1234','none') eq 'WERT' );
fhem("set Lampe on") if $EVENT eq 'on';
}
http://commandref.fhem.de/#readingFnAttributes
Hallo,
ich möchte an dieser Stelle kurz anhalten, um Konfusion vorzubeugen. Ich bin deshalb den Thread von Beginn an bis zum Ende noch einmal durch und kann verstehen, dass nicht alles klar ist, was ich erreichen möchte. Der Einfachheit halber ist es in Summe denke ich am einfachsten, wenn wir bei dem Beispiel mit dem Dummyschalter und der Dummylampe bleiben.
Der Schalter hat ein Reading namens state. Um den Zustand des Schalters z.B. für ein notify zu verwenden, reicht es (ohne Angabe von state)
Folgendes zu schreiben:
schalter:on set lampe on
Warum state hierbei nicht angegeben muss verstehe ich zwar nicht, akzeptiere dies jedoch.
Die Frage die sich mir stellt ist, wie ich Events weiterer Readings dieses Schalters (die jedoch nicht state lauten) als Basis für das notify verwenden kann. Hierzu müsste ich doch an irgendeiner Stelle das entsprechende Reading angeben.
Gruß Chris
schalter:sensor1234:.* set lampe on
Sobald das Reading sensor1234 irgendein Wert bekommt schaltet die Lampe an.
Allerdings wird es so langsam Zeit das hier einfach mal zu lesen
http://commandref.fhem.de/commandref_DE.html#notify
Zitat von: chq am 23 Juli 2018, 19:33:29
Hallo,
ich möchte an dieser Stelle kurz anhalten, um Konfusion vorzubeugen. Ich bin deshalb den Thread von Beginn an bis zum Ende noch einmal durch und kann verstehen, dass nicht alles klar ist, was ich erreichen möchte. Der Einfachheit halber ist es in Summe denke ich am einfachsten, wenn wir bei dem Beispiel mit dem Dummyschalter und der Dummylampe bleiben.
Der Schalter hat ein Reading namens state. Um den Zustand des Schalters z.B. für ein notify zu verwenden, reicht es (ohne Angabe von state)
Folgendes zu schreiben:
schalter:on set lampe on
Warum state hierbei nicht angegeben muss verstehe ich zwar nicht, akzeptiere dies jedoch.
Die Frage die sich mir stellt ist, wie ich Events weiterer Readings dieses Schalters (die jedoch nicht state lauten) als Basis für das notify verwenden kann. Hierzu müsste ich doch an irgendeiner Stelle das entsprechende Reading angeben.
Gruß Chris
warum nimmst du da nicht den Eventmonitor als Grundlage und erstellst das Notify von dort ( create notify ) - direkt für das passende event ? ..... dann hast du es doch direkt ?!
gruss Byte09
Cool, danke.
Das mit dem Eventmoitor hat mein Problem gelöst.
Warum..
schalter:state:on set lampe on
..nicht die Dummylampe einschaltet verstehe ich trotzdem nicht.
Gruß Chris
Zitat von: CoolTux am 23 Juli 2018, 08:18:12
Der Satz ist Mist. Was genau willst Du? Man reagiert nicht auf ein Reading sondern auf ein Event. Immer!
schalter:state:on
Dieses Event gibt es so nicht, dafür muss man ein Attribut setzen beim notify. addStateEvent Dann sollte glaube das hier gehen
schalter:state.on
Kommen wir zu Deinem komischen Satz. Möchtest Du ein Reading vorher abfragen?