Hauptmenü

userreadings mit if Abfrage

Begonnen von australien, 24 November 2018, 17:39:32

Vorheriges Thema - Nächstes Thema

australien

Hallo zusammen

ich würde gerne zwei userreadings erstellen und mit den Ein-/Ausschaltzeiten des Schalters füllen wüllen, leider hab ich einen Knoten im Kopf

mein Ansatz

attr shelly_Keller userReadings on_time {ReadingsVal("shelly_Keller","Licht",'')eq"on" ? ReadingsTimestamp("shelly_Keller","Licht",''):''},
off_time {ReadingsVal("shelly_Keller","Licht",'')eq"off" ? ReadingsTimestamp("shelly_Keller","Licht",'') :''}


hier wird der andere Wert immer gelöscht! Es sollen beide Werte beschrieben werden.
Ich würder mir gerne eine DOIF erstparren, habe da noch mehrere Schalter wo das rein soll.

danke für Eure Hilfe!
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

#1
Hi,

klar wird die Alternative gelöscht, Du bietest die Alternative für "wahr" doch als '' an.
So eventuell? Das andere entsprechend :)
on_time {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"on")}

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

australien

Das ist mir schon klar. nur ohne : funktioniert das gar nicht, oder ich verstehe es nicht.

Das Andere gibt es nicht, es wird die Zeit von einem Schalter verwendet, ein - aus.
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

Was willst Du mir sagen? Mein Ansatz funktioniert nicht?
Nochmal Komplett
attr shelly_Keller userReadings  on_time {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"on")}, off_time {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"off")}}
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

amenomade

Ich vermute, dein wird auch nicht gehen, Otto.

Was ergibt {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"on")} wenn shelly_Keller "off" ist ?

Ohne spezifische Trigger in jeweiligen userReadings, werden beide jedes mal kalkuliert. Da aber shelly_Keller nur entweder "on" oder "off" ist, wird immer nur ein Wert gesetzt, der andere gelöscht.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

australien

Zitat von: Otto123 am 24 November 2018, 22:53:09
Was willst Du mir sagen? Mein Ansatz funktioniert nicht?
Nochmal Komplett
attr shelly_Keller userReadings  on_time {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"on")}, off_time {ReadingsTimestamp("shelly_Keller","Licht",'') if (ReadingsVal("shelly_Keller","Licht",'')eq"off")}}

Hallo Otto

Leider funktioniert dein Ansatz auch nicht.
Es wir entweder der eine oder der andere Werte geschrieben, aber der andere wieder gelöscht.
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Otto123

#6
Ja amenomade hat Recht  :-[ war mir dann auch klar als er es schrieb. Nichts zurück geliefert wird eben auch gesetzt  :D

Wie wäre die Idee, es mit einem notify und setreading zu machen?

Also trigger: shelly_Keller:Licht.(on|off)
Ausführungsteil {if ($EVTPART1 eq "on") {fhem("setreading shelly_keller on_time ".ReadingsTimestamp('shelly_Keller','Licht',''))} else {fhem("")}}

Das ist jetzt nur der Ansatz nicht ausformuliert und nicht getestet. Du musst den Event genau anschauen und $EVTPARTx eventuell anpassen. Auch bin ich jetzt nicht sicher ob der Befehl mit der concatenation stimmt (zu spät ;)).

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

OdfFhem

Es ist zwar schon spät, aber reicht es nicht, im else-Fall

statt

:''

einfach den bisherigen ReadingsVal zurückzugeben?


:ReadingsVal("shelly_Keller","on_time",''")
bzw.
:ReadingsVal("shelly_Keller","off_time",''")

amenomade

Vielleicht. Ich weiss nicht, ob dann noch verfügbar. Sonst OldReadingsVal
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

australien

Guten morgen

nach einer durchgearbeiteten Nacht kam mit Hilfe von @amoenomade, OldReadingsVal die Lösung.


on_time {ReadingsVal("shelly_Keller","Licht",'')eq"on" ? ReadingsTimestamp("shelly_Keller","Licht",'') : ReadingsVal("shelly_Keller","on_time",'')},
off_time {ReadingsVal("shelly_Keller","Licht",'')eq"off" ? ReadingsTimestamp("shelly_Keller","Licht",'') : ReadingsVal("shelly_Keller","off_time",'')},
timer {ReadingsTimestamp("shelly_Keller","Licht",'')},
onoff_time {ReadingsVal("shelly_Keller","Licht",'')eq"off" ? time_str2num(ReadingsVal("shelly_Keller","timer",''))-time_str2num(OldReadingsVal("shelly_Keller","timer",'')):0}


Die Aussage von @OdfFhem mit dem nochmaligen Eintragen des ReadingsVal war für das urspüngliche Problem die Lösung, die Code, nur zur Veranschaulichung.

Das eigentliche Vorhaben, die Einschaltdauer des Lichtes geht jetzt mit dem Reading timer und dern OldReadingsVal.

Die Ausgabe erfolgt noch in sec und soll noch in ein Zeitformat DD:HH:MM:SS umgewandelt werden, gibt es dafür auch noch eine einfach Möglichkeit?


Ich danke Euch nochmals für Eure Hilfe

gute Nacht
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)