Via Notify values von zwei "Devices" in ein weiteres Device eintragen

Begonnen von buzzmain, 01 März 2024, 14:39:13

Vorheriges Thema - Nächstes Thema

buzzmain

Moin ihr Lieben,
ich bin ein wenig verzweifelt und komm nicht drauf wie ich das Problem löse.

Konkret...
Ich möchte vie Tablet UI (nicht die 3er Version) die Zeiten für diverse AT-Devices einstellen (Benutzerfreundlich s.z.s)
Ich habe zwei Dummys die mit den gewünschten Werten (Uhrzeit, Name des jeweiligen Device) gefüllt werden:
D_JaloStellDevice <-- hier wäre dann z.b. state = JaloEG_EZ_Buro_OstZu
D_JaloStellZeit <-- hier wäre dann z.b. state = 19:30

Ich möchte jetzt ein Notify bauen, welches sowie der Wert im Dummy "D_JaloStellZeit" gesetzt wird, dann die informationen zusemmsetz und ein:
"set DEVICENAME modifiedTimeSpec UHRRZEIT"
absetzt

Allerdings scheitere ich völlig an diese Aufgabe :(
Kann mir jemand helfen?
Danke
... And on the 8th Day God Created The Homeautomation.

Otto123

Hi,

ich vermute für "set DEVICENAME modifiedTimeSpec UHRRZEIT"
willst Du dies? Also im Ausführungsteil des notify ;)
setreading $NAME modifiedTimeSpec {(strftime("%H:%M",localtime()))}Oder meinst Du so?
setreading $NAME modifiedTimeSpec [D_JaloStellZeit:state]Das notify selbst erstellst Du Dir mit dem Eventmonitor. :)

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

buzzmain

 ;D
ich glaube variante zwei... Die Eckigen Klammern, das wars was ich vermutlich fasch gemacht habe. Ich werde es direkt ausprobieren. Danke
... And on the 8th Day God Created The Homeautomation.

buzzmain

So richtig bekomme ich es noch nicht hin.

Also ich versuche es nochmal anders zu erklären. Evtl wird es dann klarer.
(sorry wenn ich das so wirr erklärt habe)

Also, wenn sich der Wert in "D_JaloStellZeit" ändert (durch TabletUI ausgelößt), dann soll die Uhzeit in einem AT Device geändert werden. Dies geht via "modifiedTimeSpec".
Soweit recht einfach.

Aber...
WELCHES Device es jeweis sein soll, steht in State von "D_JaloStellDevice".
Und das bekomme ich nicht hin.

Rauskommen sollen am Ende Strings wie:
"set JaloEGaufWE modifiedTimeSpec 10:30"
"set AussenDekoLichtAus modifiedTimeSpec 22:30
usw...

Um das zu erreichen habe ich diesen String im Notify:

D_JaloStellZeit set [D_JaloStellDevice:state] modifiedTimeSpec [D_JaloStellZeit:state]
Aber leider scheint das nicht zu klappen :(

Danke für Deine Hilfe

... And on the 8th Day God Created The Homeautomation.

Otto123

Moin,

naja den Code hast Du Dir ausgedacht, steht nirgendwo, dass dies so gehen könnte :) die Form [dev:reading] ist fürs Device nicht möglich.

Wenn Du sowas haben willst musst Du Perlcode im Ausführungsteil schreiben, in etwa so - ungetestet:
{my $dev=ReadingsVal('D_JaloStellDevice','state',''); my $time=ReadingsVal('D_JaloStellZeit','state',''); fhem("set $dev modifiedTimeSpec $time")}

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

Nobbynews


buzzmain

Ja, entschuldigt bitte, da habe ich mich vertippt.
im Code habe ich auch  modifyTimeSpec verwendet.

[/quote]
Muss es bei einem at nicht
modifyTimeSpecheißen?
[/quote]


Werde gleich mal Eure Ideen ausprobieren und hier berichten.
Danke, Ihr seid toll
... And on the 8th Day God Created The Homeautomation.

TomLee

ZitatIch möchte vie Tablet UI (nicht die 3er Version) die Zeiten für diverse AT-Devices einstellen (Benutzerfreundlich s.z.s)
Ich habe zwei Dummys die mit den gewünschten Werten (Uhrzeit, Name des jeweiligen Device) gefüllt werden:
D_JaloStellDevice <-- hier wäre dann z.b. state = JaloEG_EZ_Buro_OstZu
D_JaloStellZeit <-- hier wäre dann z.b. state = 19:30

Ich möchte jetzt ein Notify bauen, welches sowie der Wert im Dummy "D_JaloStellZeit" gesetzt wird, dann die informationen zusemmsetz und ein:
"set DEVICENAME modifiedTimeSpec UHRRZEIT"
absetzt

Hallo,

wie (mit welchem Widget) schreibst du denn die Uhrzeit in den Dummy ? (Datetimepicker) ?
Brauchst du die Zeiten in dem Dummy noch für andere Zwecke ?

Mit Datetimepicker könntest doch mit dem Attribut data-set-value direkt das modifyTimeSpec in den ats ausführen und Dir das notify sparen !?
Mit Hilfe der Attribute ftui-hide-on/off zeigst abhängig vom D_JaloStellDevice-Status die jeweilige Datetimepicker-Definition an und die anderen aus.
Evtl. hab ich die gewünschte Umsetzung aber auch nicht ganz verstanden und interpretiere da zu viel.

Thomas


buzzmain

Zitat von: TomLee am 03 März 2024, 14:04:05Hallo,

wie (mit welchem Widget) schreibst du denn die Uhrzeit in den Dummy ? (Datetimepicker) ?
Brauchst du die Zeiten in dem Dummy noch für andere Zwecke ?

Mit Datetimepicker könntest doch mit dem Attribut data-set-value direkt das modifyTimeSpec in den ats ausführen und Dir das notify sparen !?
Mit Hilfe der Attribute ftui-hide-on/off zeigst abhängig vom D_JaloStellDevice-Status die jeweilige Datetimepicker-Definition an und die anderen aus.
Evtl. hab ich die gewünschte Umsetzung aber auch nicht ganz verstanden und interpretiere da zu viel.

Thomas




Hi Thomas,
da bringst Du mich auf eine ganz neue Idee.
Tatsächlich habe ich da nicht so drüber nachgedacht.
Zur Zeit habe ich dies...
Für die Auswahl des zu einzustellendenZeitplanungselement:
<div data-type="select"
   data-device="D_JaloStellDevice"
   data-set=""
   data-get="STATE"
   data-items='["JaloEG_EZ_Buro_OstZu","JaloEGaufWE","JaloEGaufWT","JaloEGzu"]'
   data-alias='["EG Buero zu","EG Wochende auf","EG Wochentag auf","EG alle zu"]'>
</div>

und zum einstellen der Zeit dies:

<div class="left small">
    <div data-type="settimer"
        data-device="D_JaloStellZeit"
    data-get="D_ZeitenDummyFuerAnzeige:state"
    data-running-get="state"
    data-running-get-on="!inactive"
    data-running-get-off="inactive"
    data-running-blink="true">
<div>Startzeit einstellen</div>
</div>

Der Code mit den Dummys und dem Notify funktioniert jetzt auch super.

Das einzige was noch (aus sicht der Usability) stört ist dass die angezeigten werte beim settimer sich nicht ändern wenn ich im Dropdown ein anderes Devise auswähle.

hast Du eine bessere Idee?
Bin ganz Ohr(Auge)
;)



... And on the 8th Day God Created The Homeautomation.

buzzmain

Zumindest funktioniert das jetzt super.

So habe ich derzeit die tollen Tipps übernommen:
defmod N_JaloAutomatikStellZeit notify D_JaloStellZeit {my $dev=ReadingsVal('D_JaloStellDevice','state','');; my $time=ReadingsVal('D_JaloStellZeit','state','');; fhem("set $dev modifyTimeSpec $time")}


Das klappt gut, Danke dafür schon mal.
Wenn es elegantere Lösungen gibt... immer her damit :D
 
... And on the 8th Day God Created The Homeautomation.

TomLee

Zitat von: buzzmain am 04 März 2024, 11:39:16hast Du eine bessere Idee?
Bin ganz Ohr(Auge)
;)

Schau, so in die Richtung dacht ich mir das.
Im Raum FTUI befinden sich alle zugehörigen Devices.
Warum sich die Seite nach Auswahl nicht alleine aktualisiert hab ich keine Lust mich mit zu beschäftigen, habs mit attr WEB longpoll websocket und attr WEB longpoll 1 versucht.