(Gelöst) at mit ReadingsVal

Begonnen von Hackstall, 26 Juli 2018, 23:06:25

Vorheriges Thema - Nächstes Thema

Hackstall

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

helmut

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
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Otto123

Hi,

anstatt defmod würde auch modify gehen  modify at_Bewaesserung *{ReadingsVal("configGartenBewaesserung","Start","19:30:00")}

Vielleicht etwas "sparsamer"  :D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

helmut

Vermutlich, aber bei der ersten Anlage musst Du daran denken. Von daher halte ich defmod fuer sicherer.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Otto123

#4
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

helmut

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
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Otto123

#6
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

helmut

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
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Hackstall

Hallo,
Ihr habt mein Problem gelöst
Vielen Dank!

Hackstall

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


Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Hackstall

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Hackstall

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