Hallo Zusammen,
ich stehe ein wenig auf dem Schlauch und hoffe, dass mir vielleicht jemand einen Denkanstoß geben kann.
Ich versuche in meiner FHEM Zentrale einen Rolladenaktor von Homematic zu steuern und damit die Behanghöhe automatisiert je nach Temperatur einzustellen.
Der Rolladenaktor ist in FHEM eingerichtet und lässt sich problemlos steuern.
Ich habe dazu ein DOIF eingerichtet, welches die Temperatur und den Anwesenheitsstatus prüft und dann einen Status setzt.
Ein weiteres DOIF prüft dann den entsprechenden Status und führt die Aktion für den Rolladenaktor aus.
Funktioniert soweit auch gut. Allerdings wird diese Aktion mehrfach ausgeführt, was unerwünscht ist.
Kann mir vielleicht jemand helfen?
Irgendwo habe ich doch sicher einen Denkfehler oder?
Zitat von: Tutti_Bomovski am 29 Juli 2022, 14:04:33
Ich habe dazu ein DOIF eingerichtet, welches die Temperatur und den Anwesenheitsstatus prüft und dann einen Status setzt.
Ein weiteres DOIF prüft dann den entsprechenden Status und führt die Aktion für den Rolladenaktor aus.
Warum ein DOIF was einen Status setzt, damit ein weiteres DOIF dann etwas ausführt?
Warum nicht einfach statt Status setzen gleich ausführen?
Zitat von: Tutti_Bomovski am 29 Juli 2022, 14:04:33
Funktioniert soweit auch gut. Allerdings wird diese Aktion mehrfach ausgeführt, was unerwünscht ist.
Kann mir vielleicht jemand helfen?
Irgendwo habe ich doch sicher einen Denkfehler oder?
Eventuell weil der/die "auslösenden" Events öfter kommen?
-> event-on-change-reading?
https://wiki.fhem.de/wiki/Event-on-change-reading
Ansonsten:
ohne lists der DOIF (und der beteiligten Devices) ist es schwer zu helfen, außer meinem ins Blaue geratenen Hinweis.
Gruß, Joachim
Ich mache das für meine Markise und es reicht ein DOIF.
Wozu ein Status?
Schön, wenn man erzählt was man getan hat, besser man zeigt es auch (List).
Hallo Zusammen,
vielen Dank für Eure Nachricht.
Hier das DOIF was aus der Temperatur und dem Anwesenheitsstatus den Status setzt und das DOIF was dann aus dem Status die Rollade steuert.
Ich kann es auch kombinieren. Es soll halt "nur" einmal ausgeführt werden.
Zitat von: Tutti_Bomovski am 08 August 2022, 13:51:41
Hallo Zusammen,
vielen Dank für Eure Nachricht.
Hier das DOIF was aus der Temperatur und dem Anwesenheitsstatus den Status setzt und das DOIF was dann aus dem Status die Rollade steuert.
Ich kann es auch kombinieren. Es soll halt "nur" einmal ausgeführt werden.
Der Button mit dem # über den Editorfenster ist Dir schon aufgefallen?
Das man mit einem List der Devices besser helfen kann, ist neu für Dich?
Jedesmal wenn Dein Dummy ein event erzeugt (wo ist das List vom Dummy?) wird der Rollladen um weitere 25% geschlossen.
Das willst Du so?
Einfach mal formulireren, was eigentlich gewünscht ist.
Zitat von: rabehd am 08 August 2022, 14:41:37
Jedesmal wenn Dein Dummy ein event erzeugt (wo ist das List vom Dummy?) wird der Rollladen um weitere 25% geschlossen.
Das willst Du so?
Einfach mal formulireren, was eigentlich gewünscht ist.
Ich möchte die Rollade einmalig um 25% öffnen, wenn die Temperatur 23° überschreitet und der Anwesenheit Status "nicht zu Hause" ist.
Der Wert für die Temperatur kommt aus Proplanta. Der Wert für die Anwesenheit aus einem Status.
Reicht das so? und sorry, aber das mit dem List kenne ich nicht.
Zitat von: Tutti_Bomovski am 08 August 2022, 17:06:43
Ich möchte die Rollade einmalig um 25% öffnen, wenn die Temperatur 23° überschreitet und der Anwesenheit Status "nicht zu Hause" ist.
Der Wert für die Temperatur kommt aus Proplanta. Der Wert für die Anwesenheit aus einem Status.
Reicht das so? und sorry, aber das mit dem List kenne ich nicht.
Was heißt "einmalig"?
Einmal und nie wieder wohl kaum :)
Zitat von: Damian am 08 August 2022, 17:22:38
Was heißt "einmalig"?
Einmal und nie wieder wohl kaum :)
;D ;D
Zitat von: Tutti_Bomovski am 08 August 2022, 17:06:43
... und sorry, aber das mit dem List kenne ich nicht.
Immer noch nicht?
Man kann einen Beitrag auch bearbeiten, also statt Bilder Code einfügen. ;)
Zitat von: Tutti_Bomovski am 08 August 2022, 17:06:43
...und sorry, aber das mit dem List kenne ich nicht.
Siehe auch hier: https://forum.fhem.de/index.php/topic,71806.0.html
Da ist der Name Programm ;)
Gruß, Joachim
naja, einmalig heißt, dass er sobald die Temperatur über 23° ist, das halt einmal durchführt und nicht, wenn die Wetterdaten aktualisiert werden (1. Mal 24°, Aktualisierung Wetter 26°) die Rollade um noch mal 25% hochfährt. Wenn die Temperatur dann natürlich wieder unter 23° geht, soll er es noch mal durchführen.
Das Thema mit List schaue ich mir noch mal an.
Danke für die Ratschläge.
Zitat von: Tutti_Bomovski am 09 August 2022, 08:47:00
naja, einmalig heißt, dass er sobald die Temperatur über 23° ist, das halt einmal durchführt und nicht, wenn die Wetterdaten aktualisiert werden (1. Mal 24°, Aktualisierung Wetter 26°) die Rollade um noch mal 25% hochfährt. Wenn die Temperatur dann natürlich wieder unter 23° geht, soll er es noch mal durchführen.
Das Thema mit List schaue ich mir noch mal an.
Danke für die Ratschläge.
Ich würde an eine Hysterese denken, nicht dass es mal hin und her schwankt: 23 -> 24 -> 22 (wegen Schatten/Wolken) -> 23 -> 24 usw.
Gruß, Joachim
Zitat von: Tutti_Bomovski am 09 August 2022, 08:47:00
naja, einmalig heißt, dass er sobald die Temperatur über 23° ist, das halt einmal durchführt und nicht, wenn die Wetterdaten aktualisiert werden (1. Mal 24°, Aktualisierung Wetter 26°) die Rollade um noch mal 25% hochfährt. Wenn die Temperatur dann natürlich wieder unter 23° geht, soll er es noch mal durchführen.
Das Thema mit List schaue ich mir noch mal an.
Danke für die Ratschläge.
Täglich? Wöchentlich?...
Wann soll es zurückgesetzt werden? Bei unter 23 Grad um 25% runter?
Genau. Es sollte erstmal klar sein, was programmiert werden soll.
Zitat von: Thyraz am 09 August 2022, 09:32:16
Genau. Es sollte erstmal klar sein, was programmiert werden soll.
Genau.
Sauber formulierte "wenn-dann-Bedingungen" sollten sich ja "leicht" in ein DOIF (oder notify mit if/else) gießen lassen...
Bevor man da nicht sauber durchdacht "fertig" ist, wird das eh nichts gescheites/sauberes...
...bzw. "endloses Gebastel"...
(was nicht heißen soll, dass es gleich zu Beginn 100% "fertig" sein soll/muss und nie mehr angepasst/erweitert werden kann/soll aber zumindest in einem "Formulierungsstand" der schon Sinn macht zu laufen / weitere Anpassungen sollten dann nur noch Optimierungen etc. sein)
Gruß, Joachim
Vielleicht versuche ich mein Vorhaben hier noch mal zu beschreiben.
Einiges davon habe ich auch schon eingerichtet. Funktioniert halt "nur" nicht zu 100%.
Die Rollade soll, wenn es wärmer als 23° und der Anwesenheitsstatus "nicht zu Hause" ist um 25% nach oben fahren (wenn sie geschlossen ist).
Dazu nutzt mein DOIF die Temperatur aus dem Proplanta und den Anwesenheitsstatus.
Wenn die Temperatur nun wieder unter 23° geht und der Anwesenheitsstatus weiterhin "nicht zu Hause" ist, dann soll die Rollade vollständig schließen.
Wenn der Anwesenheitsstatus "zu Hause" ist, dann passiert einfach nichts.
Wenn in Proplanta nun aufgrund der Updates die Temperatur sich ändert und größer 23° bleibt, dann soll natürlich nicht bei jedem Update in proplante die Rollade wieder um 25% hoch gehen, sondern unverändert so bleiben. Sonst ist sie ja irgendwann komplett offen.
Den Status "Summer" setze ich wie bereits erwähnt durch ein DOIF. Das kann man sicher in einem DOIF kombinieren.
Ich hoffe, das hilft nun noch mal ein wenig weiter bei meinem Vorhaben und sorry nochmal, wenn meine Leitung manchmal etwas länger ist. 8) Ich versuche ja zu lernen. ;)
Internals:
DEF ([Summer] eq "warm_nichtzuHause") (set d_RolladeTerrassentuer up 25)
FUUID 5d1b432e-f33f-8c13-2cb7-8acd877819a68778
MODEL FHEM
NAME di_Rollade_warmnichtzuHause
NOTIFYDEV global,Summer
NR 239
NTFY_ORDER 50-di_Rollade_warmnichtzuHause
STATE cmd_2
TYPE DOIF
VERSION 26182 2022-06-29 18:57:26
eventCount 76
READINGS:
2022-08-09 10:54:22 Device Summer
2022-08-07 17:54:22 cmd 2
2022-08-07 17:54:22 cmd_event Summer
2022-08-07 17:54:22 cmd_nr 2
2022-08-09 10:54:22 e_Summer_STATE kalt_zuHause
2022-07-29 14:13:02 mode enabled
2022-08-07 17:54:22 state cmd_2
Regex:
accu:
collect:
cond:
Summer:
0:
&STATE ^Summer$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'Summer','STATE') eq "warm_nichtzuHause"
do:
0:
0 set d_RolladeTerrassentuer up 25
1:
helper:
NOTIFYDEV global,Summer
event kalt_zuHause
globalinit 1
last_timer 0
sleeptimer -1
timerdev Summer
timerevent kalt_zuHause
triggerDev Summer
timerevents:
kalt_zuHause
timereventsState:
state: kalt_zuHause
triggerEvents:
kalt_zuHause
triggerEventsState:
state: kalt_zuHause
hmccu:
internals:
all Summer:STATE
readings:
trigger:
uiState:
uiTable:
Attributes:
group Rolladensteuerung
room Homematic,Sommer
Internals:
DEF ([Summer] eq "kalt_nichtzuHause") (set d_RolladeTerrassentuer close)
FUUID 5d1b51c9-f33f-8c13-f7ea-64794f725ce33a8b
MODEL FHEM
NAME di_Rollade_kaltnichtzuHause
NOTIFYDEV global,Summer
NR 243
NTFY_ORDER 50-di_Rollade_kaltnichtzuHause
STATE cmd_1
TYPE DOIF
VERSION 26182 2022-06-29 18:57:26
eventCount 207
READINGS:
2022-08-09 10:54:22 Device Summer
2022-08-09 01:15:05 cmd 1
2022-08-09 01:15:05 cmd_event Summer
2022-08-09 01:15:05 cmd_nr 1
2022-08-09 10:54:22 e_Summer_STATE kalt_zuHause
2022-06-08 13:20:34 mode enabled
2022-08-09 01:15:05 state cmd_1
Regex:
accu:
collect:
cond:
Summer:
0:
&STATE ^Summer$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'Summer','STATE') eq "kalt_nichtzuHause"
do:
0:
0 set d_RolladeTerrassentuer close
1:
helper:
NOTIFYDEV global,Summer
event kalt_zuHause
globalinit 1
last_timer 0
sleeptimer -1
timerdev Summer
timerevent kalt_nichtzuHause
triggerDev Summer
timerevents:
kalt_nichtzuHause
timereventsState:
state: kalt_nichtzuHause
triggerEvents:
kalt_zuHause
triggerEventsState:
state: kalt_zuHause
internals:
all Summer:STATE
perlblock:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
group Rolladensteuerung
room Homematic,Sommer
Zitat
Die Rollade soll, wenn es wärmer als 23° und der Anwesenheitsstatus "nicht zu Hause" ist um 25% nach oben fahren (wenn sie geschlossen ist).
Wenn du die Bedingung aus der Klammer rausnimmst und "ernst" nimmst, dann KANN der Rollo ja gar nicht mehrmals um 25% fahren, selbst wenn das DOIF ausgelöst wird/würde, da ja der Rollo NICHT (mehr) geschlossen ist nach der ersten 25% Fahrt...
Was soll passieren, wenn der Anwesenheitsstatus wechselt?
Weil neben den Bedingungen ist bei DOIF auch wichtig: soll die "Bedingung" ein "Auslöser" sein oder "nur" abgefragt werden!
Also soll, wenn sich der Anwesenheitsstatus ändert was passieren -> dann muss das Ereignis triggern
Soll nichts passieren, sondern "nur" in Abhängigkeit vom aktuellen Zustand das eine oder das andere (oder auch nichts) passieren, dann eben "nur" abfragen, also nicht triggern...
Also für mich sieht das noch nicht "zu Ende" gedacht aus ;)
Gruß, Joachim
Zitat von: MadMax-FHEM am 09 August 2022, 11:48:19
Wenn du die Bedingung aus der Klammer rausnimmst und "ernst" nimmst, dann KANN der Rollo ja gar nicht mehrmals um 25% fahren, selbst wenn das DOIF ausgelöst wird/würde, da ja der Rollo NICHT (mehr) geschlossen ist nach der ersten 25% Fahrt...
Was soll passieren, wenn der Anwesenheitsstatus wechselt?
Weil neben den Bedingungen ist bei DOIF auch wichtig: soll die "Bedingung" ein "Auslöser" sein oder "nur" abgefragt werden!
Also soll, wenn sich der Anwesenheitsstatus ändert was passieren -> dann muss das Ereignis triggern
Soll nichts passieren, sondern "nur" in Abhängigkeit vom aktuellen Zustand das eine oder das andere (oder auch nichts) passieren, dann eben "nur" abfragen, also nicht triggern...
Also für mich sieht das noch nicht "zu Ende" gedacht aus ;)
Gruß, Joachim
Hallo Joachim,
vielen Dank für deine Geduld mit mir. :)
Außer den beiden Punkten soll er halt "nichts" machen.
Wenn sich der Anwesenheitsstatus ändert, dann soll nichts passieren.
"Nur" die Steuerung der Rollade basierend auf der Temperatur und Status "nicht zu Hause".
Ich hatte ergänzend über die Bedingung "wenn Rollade geschlossen" ist nachgedacht und man kann das mit einbauen.
Dann dürfte ja quasi nicht mehrfach die Rollade bei Update der Temperatur um weitere 25% geöffnet werden.
Variante 1) wenn Temperatur >23° UND Anwesenheit "Nicht zu Hause" UND Rollade "Geschlossen" DANN 25% hoch.
([Temperatur] >23 and [Anwesenheit] eq "nicht zu Hause" and [Rollade] eq "closed") (set Rollade up 25)
Variante 2) wenn Temperatur <23° UND Anwesenheit "Nicht zu Hause" UND Rollade "nicht Geschlossen" DANN 100% schließen.
Danke und Gruß,
Michael
Jetzt noch aus Variante Zweig machen, dann sieht es für mich schon gut aus und wäre die erste Version des DOIF.
Na ja, die Frage Trigger ja oder nein fehlt noch.
Trigger wäre für mich nur die Temperatur, der Rest wird nur abgefragt.
([Temperatur] >23 and [?Anwesenheit] eq "nicht zu Hause" and [?Rollade] eq "closed") (set Rollade up 25)
Zitat von: rabehd am 09 August 2022, 12:48:19
Jetzt noch aus Variante Zweig machen, dann sieht es für mich schon gut aus und wäre die erste Version des DOIF.
Na ja, die Frage Trigger ja oder nein fehlt noch.
Trigger wäre für mich nur die Temperatur, der Rest wird nur abgefragt.
([Temperatur] >23 and [?Anwesenheit] eq "nicht zu Hause" and [?Rollade] eq "closed") (set Rollade up 25)
Danke für deine Nachricht.
Ja, die Temperatur soll der Trigger sein. Wenn Anwesenheit oder Rolladenstatus sich ändert soll nichts passieren.
Die Fragezeichen sind dann der entsprechende Hinweis für nur die Abfrage?
Zitat von: Tutti_Bomovski am 10 August 2022, 08:31:07
Die Fragezeichen sind dann der entsprechende Hinweis für nur die Abfrage?
Ja, steht ja so in der commandref zu DOIF ;)
https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Gruß, Joachim
Zitat von: MadMax-FHEM am 10 August 2022, 08:45:59
Ja, steht ja so in der commandref zu DOIF ;)
https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Gruß, Joachim
Dankeschön!
Ich hab im Wiki nachgeschaut und die Information nicht gefunden.
Für das nächste Mal dann die Commandref :)
Ich werde das heute dann mal testen und berichten.
Vielen, vielen Dank für Eure Hilfe bis hier hin!
Zitat von: Tutti_Bomovski am 10 August 2022, 08:52:01
Ich hab im Wiki nachgeschaut und die Information nicht gefunden.
Für das nächste Mal dann die Commandref :)
Ich schon ;):
https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Ereignisse
Zitat
Alle Auslöser
[?<Auslöserangabe>] Auslöser, die mit Fragezeichen beginnen lösen nicht aus, sie werden nur abgefragt
commandref/DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger
Gruß, Joachim
Zitat von: MadMax-FHEM am 10 August 2022, 09:24:33
Ich schon ;):
https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen#Ereignisse
Gruß, Joachim
Wer lesen kann... ???
@Tutti_Bomovski
mich würde mal der "nutzen/sinn" dieser automation interessieren.
warum lässt du wärme ins haus, wenn keiner da ist?
Zitat von: frank am 10 August 2022, 10:09:50
@Tutti_Bomovski
mich würde mal der "nutzen/sinn" dieser automation interessieren.
warum lässt du wärme ins haus, wenn keiner da ist?
Ich lasse ja keine Wärme ins Haus.
Wenn wir alle das Haus verlassen, sind die bodentiefen Fensterrolladen zu 100% geschlossen. Gerade auf der Südseite zieht es dann aber die Rollade immer in Mitleidenschaft, wenn es zu warm / heiß wird. Daher öffne ich die Rollade dann minimal einen Spalt breit unten. :)
ZitatWenn wir alle das Haus verlassen, sind die bodentiefen Fensterrolladen zu 100% geschlossen. Gerade auf der Südseite zieht es dann aber die Rollade immer in Mitleidenschaft, wenn es zu warm / heiß wird.
interessanter aspekt.
da muss ich meine rollos (180 cm lang) nach der umrüstung auf motorbetrieb wohl genauer beobachten.
ZitatIch lasse ja keine Wärme ins Haus.
bei "set rollo up 25" bin ich von 25% öffnen ausgegangen, also etwa ein viertel der fensterfläche.
"ein spalt breit am boden" hört sich dann ganz anders an.
bei meinen rollos öffnen sich zwischen den lamellen schmale schlitze, wenn sie frei hängen.
zur zeit denke ich, jede noch so kleine öffnung des rollos sollte die isolation der fensterfläche verringern und somit den wärmeeintrag erhöhen. 8)
Zitat von: frank am 11 August 2022, 11:59:47
interessanter aspekt.
da muss ich meine rollos (180 cm lang) nach der umrüstung auf motorbetrieb wohl genauer beobachten.
Bei uns hat aufgrund der sommerlichen Hitze (Südseite) die Kunststoffrollade aufgegeben und sich extrem ausgebeult. Wir konnten sie dann nicht mehr einfahren.
Jetzt ist eine neue Rollade (mit Aluverstärkung) drin, aber der Fensterbauer meinte, man solle unten einen Spalt öffnen, wenn es sehr warm ist, das zwischen Glas und Rollade halt auch Luft zirkulieren kann.
Dazu passe ich gerade meine Rolladensteuerung an. Sprich sie soll dann aus dem komplett geschlossenen Zustand, wenn wir nicht zu Hause sind und es wärmer als 23° ist, um 25% nach oben fahren. Damit ist sie aber immer noch zu ~75% geschlossen.