[gelöst] Automatisch at-Erzeugung je nach dummywert wie möglich?

Begonnen von tklein, 04 Mai 2019, 18:35:31

Vorheriges Thema - Nächstes Thema

tklein

Hallo zusammen,

wie kann ich mir z.B at's alle 5/2 min automatisch in Abhängigkeit von Dummywerten erzeugen lassen?
Habe
- dummy startzeit -> "9"
- dummy endzeit -> "18"
- dummy action -> "on"

Sofern action = on ist und es zwischen 9 - 18 Uhr ist, sollte ein at automatisch erzeugt werden.

Momentan habe ich immer die at's im system unabhängig von den dummywerten.

Vielleicht hat da jemand eine Idee für mich?

Kann man eigentlich ein notify auf $hour setzen?
Oder könnte man disabledForIntervals mit den dummywerte setzen?

Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

Hi,

ich fange mal von hinten an:
ZitatIf parts of the attribute value are enclosed in {}, they are evaluated:
{sunset_abs()}-24 {sunrise_abs()}-08
könnte also so gehen, ich habe es nicht getestet
attr DeinAt disabledForIntervals {ReadingsVal("DeinDummy","Startzeit","09")}-{ReadingsVal("DeinDummy","Endzeit","18")}
Ein Notify reagiert auf einen Event. $hour ist kein Event. Sicher kannst Du irgendwie einen Event erzeugen wenn die Stunde wechselt, darauf könnte ein notify reagieren.

Zu Deiner einleitenden Frage habe ich keinen Ansatz, bzw. habe ich es nicht ganz verstanden.
Es wird sicher mit Dummy, notify und at ziemlich komplex. Ich würde da eher eine Lösung mit DOIF angehen.

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

Ellert

#2
Wenn Du nicht auf at fixiert bist, versuche DOIF.

Dann benötigst Du keine extra Dummys, sondern die Widgets sind im DOIF integriert.

Für den Import mit Raw definition

defmod IntervallTimer DOIF ([[$SELF:startzeit]-[$SELF:endezeit],+[$SELF:intervall]] and [$SELF:action] eq "on") {Log3 "$SELF", 1, "$SELF: Intervall"}
attr IntervallTimer do always
attr IntervallTimer readingList startzeit endezeit action intervall
attr IntervallTimer room 0_Test
attr IntervallTimer setList startzeit:time endezeit:time action:on,off intervall:300,150
attr IntervallTimer webCmd startzeit:endezeit:action:intervall
attr IntervallTimer webCmdLabel Start\
:Ende\
:Action\
:Intervall

setstate IntervallTimer initialized
setstate IntervallTimer 2019-05-04 19:48:45 action on
setstate IntervallTimer 2019-05-04 19:53:28 cmd 0
setstate IntervallTimer 2019-05-04 19:34:59 endezeit 20:00
setstate IntervallTimer 2019-05-04 19:48:32 intervall 150
setstate IntervallTimer 2019-05-04 19:53:28 mode enabled
setstate IntervallTimer 2019-05-04 19:30:31 startzeit 12:00
setstate IntervallTimer 2019-05-04 19:53:28 state initialized


Im Frontend kann es aussehen, wie in der Anlage dargestellt.

tklein

#3
Zitatattr DeinAt disabledForIntervals {ReadingsVal("DeinDummy","Startzeit","09")}-{ReadingsVal("DeinDummy","Endzeit","18")}

Danke Otto, habe die Zeiten umgedreht, da es im Intervall nicht pausiert werden soll. Hat aber leider bei mir mit
attr poolsolarpumpe_anschalten disabledForIntervals {ReadingsVal("solarpumpe_zeit_bis","state",0)}-{ReadingsVal("solarpumpe_zeit_ab","state",0)}
nicht geklappt

@Ellert: Danke für den Code. Werde ich mir anschauen und versuchen zu verstehen :-)

EDIT:

Nach dem Import bekomme ich diese Meldungen zu Readings:
setstate IntervallTimer 2019-05-04 20:52:46 timer_01_c01 error: Wrong timespec : either HH:MM:SS or {perlcode}
setstate IntervallTimer 2019-05-04 20:52:46 timer_02_c01 error: Wrong timespec : either HH:MM:SS or {perlcode}
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

Ja klar, das mit den Zeiten habe ich dann mal falsch angesetzt.  ::)

Ich liebe solche Aussagen: "Es hat nicht geklappt..." Was ist das für eine Fehlerbeschreibung?  :'(

Du hast noch selbstständig ein bisschen in der Doku gelesen?
ZitatTo specify an interval spawning midnight, you have to specify two intervals, e.g.:
23:00-24:00 00:00-01:00
Also dann so:
attr poolsolarpumpe_anschalten disabledForIntervals {ReadingsVal("solarpumpe_zeit_bis","state",0)}-24 00-{ReadingsVal("solarpumpe_zeit_ab","state",0)}

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

tklein

Hi Otto,

das Problem lag bei mir darin, dass in solarpumpe_zeit_* jeweils nur 9 bzw. 18 und nicht 09:00 bzw. 18:00 Uhr drinstehen

Zitatch liebe solche Aussagen: "Es hat nicht geklappt..." Was ist das für eine Fehlerbeschreibung?
--> Das at wurde halt nicht deaktiviert.  ;)
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

Ok - in der Doku steht aber nicht, dass das Format 12:00 sein muss sondern das es 00 sein muss.
Hast Du anstatt 9 mal 09 probiert?
Du könntest es so mit einer führenden Null erzeugen:
{sprintf("%02.0f", ReadingsVal("solarpumpe_zeit_bis","state",0))}
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

Ellert

Zitat von: tklein am 04 Mai 2019, 20:49:27
Danke Otto, habe die Zeiten umgedreht, da es im Intervall nicht pausiert werden soll. Hat aber leider bei mir mit
attr poolsolarpumpe_anschalten disabledForIntervals {ReadingsVal("solarpumpe_zeit_bis","state",0)}-{ReadingsVal("solarpumpe_zeit_ab","state",0)}
nicht geklappt

@Ellert: Danke für den Code. Werde ich mir anschauen und versuchen zu verstehen :-)

EDIT:

Nach dem Import bekomme ich diese Meldungen zu Readings:
setstate IntervallTimer 2019-05-04 20:52:46 timer_01_c01 error: Wrong timespec : either HH:MM:SS or {perlcode}
setstate IntervallTimer 2019-05-04 20:52:46 timer_02_c01 error: Wrong timespec : either HH:MM:SS or {perlcode}

Dann setze die Parameter übers Frontend neu oder Du hast eine alte DOIF Version.

tklein

Hi Ellert,

habe aktuell $Id: 98_DOIF.pm 18890 2019-03-13 18:56:41Z Damian $
SO wie es aussieht, habe ich die Initialisierung nicht richtig hinbekommen.


@Otto

Ich werde die Werte im Dummy mit der führenden 0 anlegen (08,09...) sonst habe ich mit der sprintf variante glaube ich ein problem wenn ich auf 10 + wechsel.

@all: Vielen Dank für eure erneuten schnellen und wertvollen Tips.
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

Nein hast Du nicht. Probier es in der FHEM Kommandozeile einfach aus:  ;)
{sprintf("%02.0f", "12")}
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

tklein

du hast mal wieder recht. :-)

Hätte ich ja auch mal selber probieren können. Da erkennt man den "Wochenend-Fhemler".

Besten Dank
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

tklein

mhmm

...
attr Dachpumpe_aus disable 0
attr Dachpumpe_aus disabledForIntervals {sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_bis","state",0))}-24 00-{sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_ab","state",0))
attr Dachpumpe_aus room Pool,Zeitsteuerung

setstate Dachpumpe_aus disabled
setstate Dachpumpe_aus 2019-05-05 12:34:22 state disabled


jetzt habe ich da ein state disable drin, obwohl das at aktiv sein sollte nachdem ich ein "execNow" ausgeführt hatte
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

Otto123

Was bekommst Du denn zurück, wenn Du das in der FHEM Kommandozeile testest?
{sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_bis","state",0))}


Sehe gerade, da fehlte die letzte }
attr Dachpumpe_aus disabledForIntervals {sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_bis","state",0))}-24 00-{sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_ab","state",0))}
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

tklein

die fehlende Klammer habe ich ergänzt, leider ohne Änderung.

Die jeweiligen Werte 09 und 19 werden mit
{sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_bis","state",0))}
bzw.
{sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_ab","state",0))}
ausgegeben.

Bei Eingabe von {foo()} in der Kommandozeile liefert meine Testfunktion

sub foo() {
return {sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_bis","state",0))} . "-24 00-" . {sprintf("%02.0f", ReadingsVal("dachpumpe_zeit_ab","state",0))};
}


folgendes: HASH(0x90e7d20)-24 00-HASH(0x8a13058)

komplett verwirrt..
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

tklein

um die Verwirrung zu toppen kann ich jetzt sagen, dass das at nun ausgeführt wird ?!?

setstate Dachpumpe_aus Next: 13:14:22
setstate Dachpumpe_aus 2019-05-05 13:12:22 state Next: 13:14:22


Werde das mal genau beobachten und erstmal in die anderen at einbauen.
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2