Zustand Dimmwert vor Änderung speichern ?

Begonnen von ak323, 22 Januar 2023, 19:14:17

Vorheriges Thema - Nächstes Thema

ak323

Hi, ich suche mir nen Wolf !

Ich habe einen Dimmer, der Abend auf z.B 10% gesetzt wird
Ein Bewegungsmelder soll ihn für 20s auf 100% setzen und danach wieder auf den Ausgangswert. Hier in diesem Beispiel 10%.
Wenn der Dimmer aus irgendeinem Grund (manuelle Bedienung) z.B. auf 0% oder 1% stand bevor der Bewegungsmelder ihn auf 100% gestellt hat, soll er nach 20s weder auf den Ursprungswert von 0% oder 1% gestellt werden.

Das kann doch nicht so schwer sein !?

So funktioniert es jedefall nicht den Dimmerwert von "EG.Flur.Garderobe.Ambiente:Dimmer" zwischenzuspeichern ... ?!

define di_EGFlur_Bewegung2 DOIF (([FlurSensor_data_PIR1:state] eq "ON") and [UmweltSensor_data_BH1750_Illuminance] < 3000) [u][i](setreading EG.Flur.Garderobe.Ambiente dimstore [EG.Flur.Garderobe.Ambiente:Dimmer])[/i][/u] (set EG.Flur.Garderobe.Ambiente Dimmer 100) (set EG.Flur.Garderobe.Ambiente [u][i]dimstore[/i][/u])
attr di_EGFlur_Bewegung2 do resetwait
attr di_EGFlur_Bewegung2 wait 0,15


Danke für Eure Hilfe !
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

betateilchen

Das Abspeichern des vorherigen Wertes sollte der Dimmer selbst können.

https://commandref.fhem.de/#oldreadings
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ak323

Woher weisst Du denn was ich für einen Dimmer habe ?

Das ist ein ESP8266 mit tasmota über MQTT ...
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

DeeSPe

Ich mache sowas immer mit dem Modul LightScene.
Erst Werte speichern:
set <LightScene> save last
Danach könntest Du eine andere LightScene (HELL) starten mit:
set <LightScene> scene HELL
Bei der Scene HELL kannst Du dann auf "setcmd" statt "set" umstellen und Deinen set Befehl für "HELL" eingeben, dann sleep 20 und dann wieder die Scene "last" aufrufen:
set <LAMPE> dim 100; sleep 20; set <LightScene> scene last

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

ak323

Das muss doch einfacher gehen ?

SPEICHERE Wert von [EG.Flur.Garderobe.Ambiente:Dimmer] in Variable DIMSTORE
set EG.Flur.Garderobe.Ambiente Dimmer 100
sleep 20
set EG.Flur.Garderobe.Ambiente Dimmer DIMSTORE

Oder ist sowas einfaches mit FHEM nicht möglich ?
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

betateilchen

Zitat von: ak323 am 22 Januar 2023, 19:24:49
Woher weisst Du denn was ich für einen Dimmer habe ?

Das muss ich gar nicht wissen, weil es ziemlich wurscht ist, um was für ein device es sich handelt.
Das Abspeichern des vorherigen Wertes eines readings ist eine Grundfunktion von FHEM. Wenn es im device ein reading mit dem Dimmwert gibt, kann man auch auf den vorherigen Wert zugreifen, wenn man das Attribut entsprechend gesetzt hat.

Noch einfacher geht es wirklich nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen


define dimmerDummy dummy
attr dimmerDummy oldreadings dim
attr dimmerDummy readingList dim
attr dimmerDummy setList dim

define dimmerDummy_notify notify dimmerDummy:dim:.* {Debug OldReadingsVal('dimmerDummy','dim',-1)}


Wenn Du jetzt z.B. "set dimmerDummy dim 70" eingibst, wird der neue Wert gesetzt und der vorherige Wert als Debug Meldung ins Log geschrieben.
Das notify dient nur dazu, zu zeigen, dass der vorherige Wert von "dim" tatsächlich von FHEM automatisch im device gespeichert wird und für irgendwas verwendet werden kann. Man könnte den Wert auch dazu verwenden, um nach 20 Sekunden den alten Wert wieder herzustellen. Dabei muss man nur darauf achten, keine Dauerschleife zu erzeugen  8) Aber das herauszufinden, überlasse ich dem geneigten Leser.

Das Ganze funktioniert natürlich erst ab dem zweiten Setzen, weil es beim ersten Mal noch gar keinen "vorherigen" Wert gibt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!