FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Hackstall am 26 Juli 2018, 23:06:25

Titel: (Gelöst) at mit ReadingsVal
Beitrag von: Hackstall am 26 Juli 2018, 23:06:25
Hallo,

ich würde gerne ein define als at anlegen bei dem die Zeit durch ein widget verändert wird.

Derzeitig habe ich folgendes implementiert:

define configGartenBewaesserung dummy
attr configGartenBewaesserung DbLogExclude .*
attr configGartenBewaesserung event-on-change-reading .*
attr configGartenBewaesserung group Grp-Bewaesserung-Auto-Steuerung
attr configGartenBewaesserung icon sani_water_tap
attr configGartenBewaesserung readingList Sicherheitsschaltung Start Giessfrequenz MinFeuchtigkeit
attr configGartenBewaesserung room 2.0a_GartenSteuerung
attr configGartenBewaesserung setList Sicherheitsschaltung:Ja,Nein Start:time Giessfrequenz:slider,1,1,7 MinFeuchtigkeit:slider,0,10,100
attr configGartenBewaesserung sortby 2
attr configGartenBewaesserung webCmd Sicherheitsschaltung:Start:Giessfrequenz:MinFeuchtigkeit
attr configGartenBewaesserung webCmdLabel Sicherheitsschaltung:Start:Giessfrequenz:Mindest Feuchtigkeit
attr configGartenBewaesserung widgetOverride readingList|setList|webCmd|webCmdLabel:textField-long


define at_Bewaesserung at *{ReadingsVal("configGartenBewaesserung","Start","19:30:00")} {myGardenIrrigation("default","on")}
attr at_Bewaesserung DbLogExclude .*
attr at_Bewaesserung group Grp-System-At
attr at_Bewaesserung icon time_timer
attr at_Bewaesserung room 9.6_System


Ich denke das sollte auch funktionieren. Aber bei Änderung der Zeit wird die neue Zeit nicht übernommen.
Sofern ich per list prüfe welche Zeit mein at hat steht dort die alte.
Was kann ich tun dass meine neue per Widget eingestellte Zeit für at übernommen wird?

Danke Andreas
Titel: Antw:at mit ReadingsVal
Beitrag von: helmut am 27 Juli 2018, 15:16:44
Hallo Andreas,

die Aenderung bekommt der at nicht mit. Die Zeit wird bei der Definition beziehungweise der Modifikation derselben
festgelegt. Dafuer brauchst Du einen notify in der Art:

defmod not_Bewaesserung notify configGartenBewaesserung.Start.* { fhem "defmod at_Bewaesserung at $EVTPART1 {myGardenIrrigation(\"default\",\"on\")}" }
Gruss Helmut
Titel: Antw:at mit ReadingsVal
Beitrag von: Otto123 am 27 Juli 2018, 15:42:05
Hi,

anstatt defmod würde auch modify  (https://commandref.fhem.de/commandref_DE.html#modify)gehen  modify at_Bewaesserung *{ReadingsVal("configGartenBewaesserung","Start","19:30:00")}

Vielleicht etwas "sparsamer"  :D

Gruß Otto
Titel: Antw:at mit ReadingsVal
Beitrag von: helmut am 27 Juli 2018, 16:24:37
Vermutlich, aber bei der ersten Anlage musst Du daran denken. Von daher halte ich defmod fuer sicherer.

Gruss Helmut
Titel: Antw:at mit ReadingsVal
Beitrag von: Otto123 am 27 Juli 2018, 16:45:10
naja einmal das define mit dem default Wert gemacht:
define at_Bewaesserung at *19:30:00 {myGardenIrrigation("default","on")}

Und modify erzeugt kein rotes Fragezeichen :)

Man müsste ja auch nicht mit einem extra Dummy arbeiten sondern kann den Wert einfach in ein Reading vom at schreiben?
Aber da gibt es sicher 100 Möglichkeiten.

Gruß Otto
Titel: Antw:at mit ReadingsVal
Beitrag von: helmut am 27 Juli 2018, 17:19:18
Zitat von: Otto123 am 27 Juli 2018, 16:45:10
naja einmal das define mit dem default Wert gemacht:

Hallo Otto,

sagte ich nicht, Du musst bei der Anlage daran denken? Ich habe nicht gesagt, es geht nicht ;-)

Zitat von: Otto123 am 27 Juli 2018, 16:45:10
Man müsste ja auch nicht mit einem extra Dummy arbeiten sondern kann den Wert einfach in ein Reading vom at schreiben?
Mit dem dummy kann ich Dir nicht folgen.

Und den Wert in das Reading vom at zu schreiben veraendert dessen Triggerzeitpunkt? Da bin ich
aber sehr skeptisch. Oder habe ich Dich da missverstanden?

Gruss Helmut
Titel: Antw:at mit ReadingsVal
Beitrag von: Otto123 am 27 Juli 2018, 17:49:28
Naja mein Hauptargument für modify ist: Du bekommst kein rotes Fragezeichen.

Nein, mit dem Reading hast Du falsch verstanden, dein notify ist da trotzdem notwendig, nur anstatt extra dummy einfach in ein vorhandenes Gerät schreiben, z.B. das at oder wo auch immer es hinpasst.
Ich habe ja keine Ahnung wie das Userinterface aussehen soll.
Eigentlich hat ja at schon ein Interface zum Zeit setzen :)

Gruß Otto
Titel: Antw:at mit ReadingsVal
Beitrag von: helmut am 27 Juli 2018, 20:00:16
Zitat von: Otto123 am 27 Juli 2018, 17:49:28
Naja mein Hauptargument für modify ist: Du bekommst kein rotes Fragezeichen.
Hallo Otto,

ich gebe mich geschlagen, weil ich nun ahne, worauf Du hinauswillst: Das rote Fragezeichen, das Dich auf
die Aenderung in der Konfiguration hinweist, nicht wahr? Wenn das bei einem defmod auch passiert, hast
Du natuerlich recht.

Zitat von: Otto123 am 27 Juli 2018, 17:49:28
Nein, mit dem Reading hast Du falsch verstanden, dein notify ist da trotzdem notwendig, nur anstatt extra dummy einfach in ein vorhandenes Gerät schreiben, z.B. das at oder wo auch immer es hinpasst.
Ich habe ja keine Ahnung wie das Userinterface aussehen soll.
Eigentlich hat ja at schon ein Interface zum Zeit setzen :)
Der Wunsch von Andreas war eben, die Werte aus dem Widget zu uebernehmen; ein wie ich finde, legaler
Wunsch im Sinne der Nutzerfreundlichkeit.

Gruss Helmut
Titel: Antw:at mit ReadingsVal
Beitrag von: Hackstall am 28 Juli 2018, 19:42:33
Hallo,
Ihr habt mein Problem gelöst
Vielen Dank!
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Hackstall am 29 Juli 2018, 23:53:55
hallo noch eine finale Frage.

ich habe Euren Vorschlag mit notify implementiert.

Wenn ich aber nun vor dem $event nach dem at noch ein * mache wird (um diesen zeitpunkt wiederholen zu lassen) dann wird die fhem.cfg bei jeder Zeitaenderung geaendert und muss manuell gespeichert werden.

Kann das auch noch automatisch erfolgen?

Danke Andreas
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Frank_Huber am 30 Juli 2018, 08:46:17
https://fhem.de/commandref_DE.html#save
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Otto123 am 30 Juli 2018, 09:07:19
Zitat von: Hackstall am 29 Juli 2018, 23:53:55
ich habe Euren Vorschlag mit notify implementiert.
Hallo Andreas,

es gab mehrere Vorschläge, was genau hast Du jetzt realisiert?

Gruß otto
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Hackstall am 31 Juli 2018, 19:35:28
Hallo also bisher habe ich folgendes implementiert:


define ntfy_Bewaesserung notify configGartenBewaesserung.Start.* { fhem "defmod at_Bewaesserung at *$EVTPART1 {myGardenIrrigation(\"default\",\"on\")}" }
attr ntfy_Bewaesserung DbLogExclude .*
attr ntfy_Bewaesserung group Grp-System-Notify
attr ntfy_Bewaesserung icon time_timer
attr ntfy_Bewaesserung room 9.6_System


dieses veranlasst wenn ich das widget bediene den folgenden Eintrag in meiner Fhem.cfg


define at_Bewaesserung at *21:30 {myGardenIrrigation("default","on")}
attr at_Bewaesserung DbLogExclude .*
attr at_Bewaesserung group Grp-System-at
attr at_Bewaesserung icon time_timer
attr at_Bewaesserung room 9.6_System


Der Eintrag ist auch richtig und funktioniert jedoch muss ich nun bei jeder Uhrzeitänderung fhem.log erneut speichern.

Das würde ich gerne vermeiden

Habt Ihr da Tips.

Danke A. Krause
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Otto123 am 31 Juli 2018, 20:13:37
Hi,

gut, Du meinst sicher die fhem.cfg speichern.

Mein Vorschlag aus #2 gefiel Dir nicht? Der macht aus meiner Sicht genau was Du willst.
https://commandref.fhem.de/commandref_DE.html#modify

Gruß Otto
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Hackstall am 01 August 2018, 20:41:41
Hallo vielleicht stelle ich mich auch nicht so ganz wissend an aber ich bin ja in einem Anfängerforum.

Nun verstehe ich auch die Sache mit dem Fragezeichen. Ich habe einen andere Skin und da kommt kein Fragezeichen.
Die Änderung der fhem.cfg wird anders dargestellt.

Wie auch immer ich wollte nun auf Dein 2te Lösung zurückkommen und habe folgendes implementiert:


efine at_Bewaesserung at *21:30 {myGardenIrrigation("default","on")}
attr at_Bewaesserung DbLogExclude .*
attr at_Bewaesserung group Grp-System-at
attr at_Bewaesserung icon time_timer
attr at_Bewaesserung room 9.6_System
modify at_Bewaesserung *{ReadingsVal("configGartenBewaesserung","Start","19:30:00")}


Nun ist es so dass per List Befehl der at_Bewaesserung immer auf 19:30 stehenbleibt egal ob ich
per widget die Zeit verändere oder nicht. Muss ich da doch noch ein notify haben.

Danke Andreas
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Otto123 am 01 August 2018, 23:47:26
Hallo Andreas,

Der modify Befehl ist anstatt dem defmod zu sehen. das notify brauchst du genau so.

Beide Befehle modifizieren dein at.

Gruß Otto
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Hackstall am 02 August 2018, 19:40:06
Hallo Otto,

also vielleicht bin etwas langsam im Verständnis aber jetzt habe ich folgendes und per List funktioniert auch aber
die frage mit dem ? oder die Markierung fhem.cfg zu speichern kommt trotzdem.


define ntfy_Bewaesserung notify configGartenBewaesserung.Start.* { fhem "modify at_Bewaesserung *{ReadingsVal(\"configGartenBewaesserung\",\"Start\",\"19:30:00\")}" }
attr ntfy_Bewaesserung DbLogExclude .*
attr ntfy_Bewaesserung group Grp-System-Notify
attr ntfy_Bewaesserung icon time_timer
attr ntfy_Bewaesserung room 9.6_System

define at_Bewaesserung at *{ReadingsVal("configGartenBewaesserung","Start","19:30:00")} {myGardenIrrigation("default","on")}
attr at_Bewaesserung DbLogExclude .*
attr at_Bewaesserung group Grp-System-at
attr at_Bewaesserung icon time_timer
attr at_Bewaesserung room 9.6_System

Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Otto123 am 03 August 2018, 00:05:28
Hallo,

ja sorry, mein Test war offenbar zu kurz ausgelegt, so wie in Deinem Fall kommt auch bei einem modify die cfg Änderung. Habe das eben nochmal probiert.

Da hab ich jetzt leider auch keine Idee dazu.

Gruß Otto
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: amenomade am 03 August 2018, 01:09:06
Und mit
set at_Bewaesserung modifyTimeSpec {ReadingsVal("configGartenBewaesserung","Start","19:30:00")}
statt { fhem "modify at_Bewaesserung ....
?
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: MadMax-FHEM am 03 August 2018, 08:41:44
Oder nur einen einmaligen Timer und in der Sub myGardenIrrigation diesen erneut "anlegen" (defmod) abhängig von den Zeiten im Dummy...

Ebenso im Notify...

Ein Timer der nur 1x läuft/laufen soll landet nicht in der Config...

Mache ich so für wiederholte Aufrufe (z.B. Waschmaschinr leeren).
Der Timer wird einmalig/erstmalig "eingerichtet" wenn das Ereignis auftritt (hier müsste er halt einmalig von Hand angelegt werden oder per notify bei "Zeitänderung" / bei mir eben, wenn Waschmaschine fertig) und wird dann so lange in der Sub gesetzt/wieder "angelegt" bis er nicht mehr gebraucht wird (Waschmashine geleert / hier wohl "endlos")...

Allerdings ist der Timer dann auch in keinem room (glaube ich) und auch mit den weiteren Attributen wird es schwer...

Gruß, Joachim
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: Wzut am 03 August 2018, 08:49:18
Zitat von: MadMax-FHEM am 03 August 2018, 08:41:44
Allerdings ist der Timer dann auch in keinem room (glaube ich) und auch mit den weiteren Attributen wird es schwer...
Man kann diesen Eintagsfliegen ganz normal das Attribut room verpassen, dann ist er da zu sehen wo es gewünscht ist.
Mache ich intern in meinem SIP Modul auch so damit der User den ggf. ohne große Suche leichter löschen kann
Titel: Antw:(Reopen) at mit ReadingsVal
Beitrag von: MadMax-FHEM am 03 August 2018, 09:48:04
Zitat von: Wzut am 03 August 2018, 08:49:18
Man kann diesen Eintagsfliegen ganz normal das Attribut room verpassen, dann ist er da zu sehen wo es gewünscht ist.
Mache ich intern in meinem SIP Modul auch so damit der User den ggf. ohne große Suche leichter löschen kann

Ah, ok: again what learned ;)

Da ich das nicht brauche für meine Timer und kaum einer länger als 15min "lebt" dachte ich, dass es für so "Eintagsfliegen" gar nicht geht...

Allerdings ist der Timer nach Ablauf ja "verschwunden" und dann doch auch die gesetzten Attribute!?
Erscheint dann für das setzen von Attributen nach erneutem "Anlegen" des "Eintagsfliegen-Timers" auch kein "Fragezeichen"?!

Kanns grad nicht testen...

Gruß, Joachim
Titel: Antw:(Gelöst) at mit ReadingsVal
Beitrag von: Hackstall am 06 August 2018, 23:10:53
Hallo mit modifyTimeSpec funktionierts.
Jetzt kann ich die Zeit ändern wie ich will. Dieses führt zu keinem Fragezeichen mehr.

Vielen Dank an alle