Autobeschattung kommt sich mit morgendlichen öffnen in die Quere

Begonnen von morph, 05 Juli 2017, 08:06:46

Vorheriges Thema - Nächstes Thema

morph

Hi,

was meine ich damit?!

Also grundsätzlich habe ich abends und morgens zwecks Einbruchschutz bzw. "Guten Morgen" Definitionen, die z.b. einen Rollo morgens öffnen.


DEF
*07:00 set Rollo_WZ on


Nun ist aber beim morgendlichen Sonnenstand die Autobeschattung eigentlich schon früher drann und schaltet diese "EIN".

DEF
([Sensor_Ost:luminosity]>9000 && [Sensor_Ost:temperature]>[Temp_KZ:temperature]) (set Rollo_Ost Sonne) DOELSEIF ([Sensor_Ost:luminosity]<4000) (set Rollo_Ost On)


Dieser schaltet aber nur 1x. Danach irgendwie nicht mehr...

Wie kann ich diesen einstellen, das er periodisch prüft, ob er schalten muss oder nicht? Hoch geht er ja wieder, sobald die Helligkeit fällt. Nur nicht mehr runter, wenn er einmal auf unten ist.


Danke

pc1246

Moin
Also grundsaetzlich sind Deine Informationen zu spaerlich!
Meine Glaskugel sagt mir aber, dass Rollo_WZ und Rollo_Ost wohl dummies sind, und dann Deine Rollaeden bedienen!? In der deutschen Hilfe zu DOIF sind so viele Beispiele und Erklaerungen drin, dass Du das "doalways" auch haettest finden koennen! Wenn der erste Code auch ein DOIF ist, da ist meine Glaskugel leider truebe, geht das eigentlich gar nicht ohne! Wenn es ein "at" ist, dann musst Du Dir mal Gedanken machen was Du wirklich willst! Man sollte einen Aktor moeglichst nur an einer Stelle schalten, da sonst genau solche Nebeneffekte auftreten!
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Hollo

Wenn "Nachtposition" und "Beschattungsposition" unterschiedlich sind, könntest Du die Position als Bedingung mit einbauen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

morph

Zitat von: pc1246 am 05 Juli 2017, 08:37:15
Moin
Also grundsaetzlich sind Deine Informationen zu spaerlich!

Sorry, mein Fehler. Trotzdem, danke für deine Hilfe.

Zitat von: pc1246 am 05 Juli 2017, 08:37:15
Meine Glaskugel sagt mir aber, dass Rollo_WZ und Rollo_Ost wohl dummies sind, und dann Deine Rollaeden bedienen!?

50 Punkte. Rollo_WZ ist der Rollo im Wohnzimmer, also der Aktor. Rollo_Ost sind alle Rollos auf der Ostseite, aber richtig, ein Dummy. Und das ganze wird geschaltet u.a. über ein DOIF names Autobeschattung_Ost.

Zitat von: pc1246 am 05 Juli 2017, 08:37:15
In der deutschen Hilfe zu DOIF sind so viele Beispiele und Erklaerungen drin, dass Du das "doalways" auch haettest finden koennen! Wenn der erste Code auch ein DOIF ist, da ist meine Glaskugel leider truebe, geht das eigentlich gar nicht ohne! Wenn es ein "at" ist, dann musst Du Dir mal Gedanken machen was Du wirklich willst!

Zum Glück ist es ein DOIF und somit habe ich nun einfach das du Always gesetzt. Vielen Dank. Das steht da schon, nur ist manchmal ein einzelner Zweig zu finden im Wald ein schier endloses Unterfangen; für reine Nutzer. Deshalb danke ich dir vielmals, das du mir den richtigen  Weg gezeigt hast.

Zitat von: pc1246 am 05 Juli 2017, 08:37:15
Man sollte einen Aktor moeglichst nur an einer Stelle schalten, da sonst genau solche Nebeneffekte auftreten!
Gruss Christoph

Naja, das ist wohl auch ein typischer Anfangsfehler....  Der Rollo_WZ sieht bei mir z.b. folgendermaßen aus.


Probably associated with
FileLog_Rollo_WZ     active                           FileLog
Rollo_Ost_off           active                            notify
Rollo_Ost_on           2017-07-06 06:52:52    notify
Rollo_Ost_sonne      2017-07-06 07:59:37    notify
Rollo_WZ_morgens  Next: 07:00:00            at
Rollos_off                active                            notify
Rollos_on                active                            notify
Rollos_sonne           Schatten                    notify


Zitat von: Hollo am 05 Juli 2017, 12:49:57
Wenn "Nachtposition" und "Beschattungsposition" unterschiedlich sind, könntest Du die Position als Bedingung mit einbauen.


Grundsätzlich wäre wahrscheinlich ein DOIF besser, in etwa:

Mache den Rollo zu, außer von 7-22 Uhr, da mache ihn auf & setze ihn auf Sonne, wenn zwischen 7-22 Uhr die Helligkeit beim Sensor x über y und gleichzeitig die Temperatur bei Sensor 1 über der Temperatur bei Sensor 2 ist.

CoolTux

Meine Empfehlung wäre eine structure zu machen.
Rollo_Ost wäre dann eine structure. Würde erstmal nicht die Lösung für Dein Problem aber macht das Leben im laufe Deiner FHEM Installation einfacher bilde ich mir ein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Hollo

Zitat von: morph am 06 Juli 2017, 08:06:48
...Grundsätzlich wäre wahrscheinlich ein DOIF besser, in etwa:

Mache den Rollo zu, außer von 7-22 Uhr, da mache ihn auf & setze ihn auf Sonne, wenn zwischen 7-22 Uhr die Helligkeit beim Sensor x über y und gleichzeitig die Temperatur bei Sensor 1 über der Temperatur bei Sensor 2 ist.
Wenn Du schon DOIF nutzt vielleicht.
Ich habe verschiedene "Stellen", die sich auf das Rollo auswirken, daher arbeite ich mit Positionen als Attribut.
So kann ich z.B. auch definieren, was passiert, wenn später das Fenster geschlossen wird.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

thgorjup

DOIF mit Postionsabfrage ist die beste Lösung. Die Autobeschattung z.B. nur ausführen wenn der Rolladen offen ist.
Solange der unter x% ist wird die Autobeschattung also nicht aktiv. Hier mal mein DOIF als Beispiel:


DOIF ([Heizungventil:pct] == 0 && [Rolladen:pct] > 90 && [myTwilight:twilight] > 90 && [Raumtempertaur:measured-temp] > 20 && [Raumtemperatur:measured-temp] < [Aussentemperatur_Sued:temperature] && [Aussentemperatur_Sued:temperature]-[Aussentemperatur_Nord:temperature] > 10 ) (set Rolladen pct 50)
DOELSEIF ( [Rolladen:pct] < 51 && [myTwilight:twilight] > 60 && [Aussentemperatur_Sued:temperature]-[Aussentemperatur_Nord:temperature] < 5 ) (set Rolladen pct 100)
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

morph

Ok, also ein gestriges gesetztes do always war auf den ersten Blick super, am Abend dann aber die Ernüchterung, natürlich geht er da dann auch wieder hoch :-)

Zitat von: CoolTux am 06 Juli 2017, 08:44:00
Meine Empfehlung wäre eine structure zu machen.
Rollo_Ost wäre dann eine structure. Würde erstmal nicht die Lösung für Dein Problem aber macht das Leben im laufe Deiner FHEM Installation einfacher bilde ich mir ein.

Ok, notiere ich mir für meine 2.0 Installation :-) Nun ist die Installation so und ein kompletter Umbau wäre Zeitaufwendig bei im Moment über 2000 Zeilen Fhem config.

Zitat von: Hollo am 06 Juli 2017, 09:16:01
Wenn Du schon DOIF nutzt vielleicht.
Ich habe verschiedene "Stellen", die sich auf das Rollo auswirken, daher arbeite ich mit Positionen als Attribut.
So kann ich z.B. auch definieren, was passiert, wenn später das Fenster geschlossen wird.

Zitat von: thgorjup am 06 Juli 2017, 18:38:41
DOIF mit Postionsabfrage ist die beste Lösung. Die Autobeschattung z.B. nur ausführen wenn der Rolladen offen ist.
Solange der unter x% ist wird die Autobeschattung also nicht aktiv. Hier mal mein DOIF als Beispiel:


DOIF ([Heizungventil:pct] == 0 && [Rolladen:pct] > 90 && [myTwilight:twilight] > 90 && [Raumtempertaur:measured-temp] > 20 && [Raumtemperatur:measured-temp] < [Aussentemperatur_Sued:temperature] && [Aussentemperatur_Sued:temperature]-[Aussentemperatur_Nord:temperature] > 10 ) (set Rolladen pct 50)
DOELSEIF ( [Rolladen:pct] < 51 && [myTwilight:twilight] > 60 && [Aussentemperatur_Sued:temperature]-[Aussentemperatur_Nord:temperature] < 5 ) (set Rolladen pct 100)


Ihr wollt beide auf das gleiche Hinaus, sagt mir mein kleiner Verstand?

Wobei, dann reicht es doch eigentlich bei mir, dem DOIF noch eine & Bedingung zu geben?

([Sensor_Ost:luminosity]>9000 && [Rollo_WZ] > 41 && [Sensor_Ost:temperature]>[Temp_KZ:temperature]) (set Rollo_Ost Sonne) DOELSEIF ([Sensor_Ost:luminosity]<4000) (set Rollo_Ost On)



kjmEjfu

vielleicht auch einfach auf eine andere Variante wechseln, z.B. https://forum.fhem.de/index.php/topic,73964.0.html ?
Dann muss man sich selber weniger Gedanken um die Logiken im Hintergrund machen.
Migriere derzeit zu Home Assistant

morph

Hi,

das hatte ich auch schon gelesen. Ich denk, das wird die Version 1.5.

Ich hoffe, das der umgewandelte Code ein schnellerer Weg ist, wenn sicherlich nicht der endgültige.

pc1246

Zitat von: morph am 07 Juli 2017, 09:58:52

Ihr wollt beide auf das gleiche Hinaus, sagt mir mein kleiner Verstand?

Wobei, dann reicht es doch eigentlich bei mir, dem DOIF noch eine & Bedingung zu geben?

Moin
Naja, das koennte sein, dass das passt, da wir ja gar nicht das Ganze sehen! Letztendlich wirst du immer wieder mit Seiteneffekten kaempfen, solange Du mehrere Module an einem Aktor agieren laesst! Stell Dir vor Du haettest zwei echte Schalter fuer Dein Rollo, und zwei Personen wuerden diese Schalter bedienen, ohne das Sie das Rollo sehen. Das geht immer irgendwie schief. Und jede Bedingung die Du auf der einen Seite einbaust, musst Du auf der anderen Seite irgendwann nachziehen.
Noch ein kleiner Tipp, zur Not gibt es auch noch das repeatsame.
Wenn man do always benutzt, kommt man ganz schnell zu dem Problem, dass Triggerereignisse, die man vorher nicht beachtet hat, auf einmal zum Tragen kommen, in dem Fall eventuell Dein Sonnensensor? Da hilft es dann die eigentliche Schaltbedingung zu finden und den Rest, den Du derzeit nicht hast, per "?" nur zur Abfrage zu nutzen!
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div