Rollladensteuerung für HM/ROLLO inkl. Abschattung und Komfortfunktionen in Perl

Begonnen von Cluni, 06 Juli 2017, 11:14:28

Vorheriges Thema - Nächstes Thema

Cluni

Hört sich gut und sicher an! :)
Habe dir gerade eine PN geschickt...

BlackStone

ja, fangnetze sind immer gut, snappshot und feddich. da kann  man immer schön am live system testen. ;)

Evtl. noch am Ende ein Autosave würde, das  Löschen zusätzlich in der config fixieren.

Bin zwar schon eine weile Raus aus dem coden. (php,html,vb,[C64 Spagehtticode])

aber schön sauber und wenn man ungefähr weiß was, was macht, einfach und gut zu lesen.  8)

Cluni

Den Autosave habe ich in diesem Fall extra weg gelassen. So hat man ggf. noch die Möglichkeit ohne zu Speichern neu zu starten, wenn das wirklich mal "aus versehen" passiert sein sollte...

Vielen Dank für die Blumen! :)

Cluni

@BlackStone: Hast du die Steuerung denn nun mit deinen Gegebenheiten ans Laufen bekommen?

kjmEjfu

Mal ein Vorschlag  :)

Wäre es möglich, dass du diese Zeilen in der sub Auto_Rol_group_at()


my $Astro_Modus_morgens = AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens','REAL'); # holt den Modus für die Astro-Berechnungen aus dem Dummy
if ($Astro_Modus_morgens eq 'HORIZON') {
$Astro_Modus_morgens .= '=' . AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens_Horizont','0'); # holt den Wert für den künstlichen Horizont aus dem Dummy und fügt ihn an
}

my $Astro_Modus_abends = AttrVal('Rollladensteuerung','Automatik_Astro_Modus_abends','REAL'); # holt den Modus für die Astro-Berechnungen aus dem Dummy
if ($Astro_Modus_abends eq 'HORIZON') {
$Astro_Modus_abends .= '=' . AttrVal('Rollladensteuerung','Automatik_Astro_Modus_abends_Horizont','0'); # holt den Wert für den künstlichen Horizont aus dem Dummy und fügt ihn an
}


my $Ferien=ReadingsNum('Rollladensteuerung','Ferientag',-1);
my $Feiertag=ReadingsNum('Rollladensteuerung','Feiertag',-1);
my $Urlaubstag=ReadingsNum('Rollladensteuerung','Urlaubstag',-1);


wie folgt änderst (ungetestet, da gerade im Büro)

my $Astro_Modus_morgens = AttrVal($dev,'Automatik_Astro_Modus_morgens',AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens','REAL')); # holt den Modus für die Astro-Berechnungen aus dem Dummy
if ($Astro_Modus_morgens eq 'HORIZON') {
$Astro_Modus_morgens .= '=' . AttrVal($dev,'Automatik_Astro_Modus_morgens_Horizont',AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens_Horizont','0')); # holt den Wert für den künstlichen Horizont aus dem Dummy und fügt ihn an
}

my $Astro_Modus_abends = AttrVal($dev,'Automatik_Astro_Modus_abends',AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens','REAL')); # holt den Modus für die Astro-Berechnungen aus dem Dummy
if ($Astro_Modus_abends eq 'HORIZON') {
$Astro_Modus_abends .= '=' . AttrVal($dev,'Automatik_Astro_Modus_abends_Horizont',AttrVal('Rollladensteuerung','Automatik_Astro_Modus_morgens_Horizont','0')); # holt den Wert für den künstlichen Horizont aus dem Dummy und fügt ihn an
}


my $Ferien=ReadingsNum($dev,'Ferientag',ReadingsNum('Rollladensteuerung','Ferientag',-1));
my $Feiertag=ReadingsNum($dev,'Feiertag',ReadingsNum('Rollladensteuerung','Feiertag',-1));
my $Urlaubstag=ReadingsNum($dev,'Urlaubstag',ReadingsNum('Rollladensteuerung','Urlaubstag',-1));


hätte den Vorteil, dass diejenigen, die gerne möchten, sich an den Devices noch weitere Attribute anlegen können, mit denen sie etwas mehr Einflussmöglichkeiten haben, und wem jetzt schon zu viele Attribute am Device hängen, der wird "verschont".

Würde z.B. bedeuten, dass folgendes auf einmal möglich wäre:
- Astro-Modus morgens/abends kann pro Fenster eingestellt werden (unterschiedlicher Astro-Modus oder Horizont)
- Ferien-, Feier- und Urlaubstage können pro Fenster eingestellt werden (nützlich, wenn unterschiedliche Feiertage gelten oder Urlaub nur für bestimmte Personen und damit Zimmer; Rollos können länger unten bleiben, wenn jemand krank ist (per Urlaub), usw.)

Kleine Änderung, aber große Wirkung
Migriere derzeit zu Home Assistant

Cluni

Zitat von: kjmEjfu am 27 Februar 2018, 09:50:37
hätte den Vorteil, dass diejenigen, die gerne möchten, sich an den Devices noch weitere Attribute anlegen können, mit denen sie etwas mehr Einflussmöglichkeiten haben, und wem jetzt schon zu viele Attribute am Device hängen, der wird "verschont".

Grundsätzlich keine schlechte Idee. Hat aber Nachteile, die mich dagegen stimmen:

1. wäre dies ja quasi ein undokumentiertes Feature, aber müsste dennoch irgendwo dokumentiert und gepflegt werden (weil man sonst entweder selber nicht mehr weiß, was das sollte ohne es auseinander zu nehmen oder weil man es sonst keinem erklären kann, der es gerne hätte). Wenn man einmal mit sowas anfängt, kommt man irgendwann in Teufels Küche, weil man den Wald vor lauter Bäumen nicht mehr sieht.
2. wirft dies bei weniger versierten Leuten u.U. viele Fragen auf und verkompliziert das Handling aus meiner Sicht. Warum geht das bei dir? Ich habe dieses Attribut aber nicht! ...

Außerdem bin ich der Meinung, dass man durch den Offset am Rollladenaktor doch bereits eine gute Möglichkeit hat, um einen Rollladen zeitlich weiter nach vorne oder hinten zu positionieren? Ist da solch eine zusätzliche Sache nötig, die es noch komplizierter macht?  :o


Zitat von: kjmEjfu am 27 Februar 2018, 09:50:37
- Ferien-, Feier- und Urlaubstage können pro Fenster eingestellt werden (nützlich, wenn unterschiedliche Feiertage gelten oder Urlaub nur für bestimmte Personen und damit Zimmer; Rollos können länger unten bleiben, wenn jemand krank ist (per Urlaub), usw.)

Das würde so, wie du es ausgeführt hast, nicht funktionieren. Es handelt sich ja um Readings, die von außen über ein Notify geschrieben werden. Das hieße dann, dass du für jeden deiner Aktoren dieses Reading wie auch immer von außen setzen müsstest. Ich denke, dass dein Wunsch eher einem Attribut entspräche, wo explizit gesagt wird ob der Wert vom Dummy beachtet werden soll oder ob nicht (also in der Art Ferientag beachten ja/nein)?! Und da sind sie wieder - die zusätzlichen Attribute.......

kjmEjfu

Zitat von: Cluni am 27 Februar 2018, 12:33:27
Außerdem bin ich der Meinung, dass man durch den Offset am Rollladenaktor doch bereits eine gute Möglichkeit hat, um einen Rollladen zeitlich weiter nach vorne oder hinten zu positionieren? Ist da solch eine zusätzliche Sache nötig, die es noch komplizierter macht?  :o

in der Theorie ja, aber in der Praxis leider nicht.
Im Winter ändert es sich wesentlich schneller von hell nach dunkel als im Sommer, so dass man nur durch das Offset starke Unterschiede hat.
Man könnte jetzt natürlich wieder das Offset pro Rollo jeden Tag per at anpassen lassen ...

Zitat von: Cluni am 27 Februar 2018, 12:33:27
Das würde so, wie du es ausgeführt hast, nicht funktionieren. Es handelt sich ja um Readings, die von außen über ein Notify geschrieben werden. Das hieße dann, dass du für jeden deiner Aktoren dieses Reading wie auch immer von außen setzen müsstest. Ich denke, dass dein Wunsch eher einem Attribut entspräche, wo explizit gesagt wird ob der Wert vom Dummy beachtet werden soll oder ob nicht (also in der Art Ferientag beachten ja/nein)?! Und da sind sie wieder - die zusätzlichen Attribute.......

Jein, Attribut statt Reading wäre tatsächlich notwendig. Wobei ich von außen setzen nicht schlimm finde.
Aber war ja nur eine Idee.

Im Moment nutze ich eine eigene Sub, die zu 90% aus Code deines Moduls besteht, und lasse die Fahrzeiten täglich korrigieren. Funktioniert auch  :)
Migriere derzeit zu Home Assistant

BlackStone

nuja, bin jetzt grade erst dazugekommen, es neu einzubinden.

Ich gehe nochmals Step by Step einmal komplett mit deiner version die du mir per pn geschickt hast durch. habe erstmal noch ein paar namen angepasst usw..

Benötige zwar die Ferienzeiten nicht, binde es dennoch mit ein. usw...

Cluni

Wenn du sie nicht brauchst, dann lass sie einfach weg. Ist nicht notwendig für den Betrieb...


Gesendet von iPhone mit Tapatalk

BlackStone

jo, wollte den dennoch drin haben, man weist ja nie. ;)

jedoch wundert mich nu das die rollanden nicht gelistet werden.

wenn ich deinen befehl eingebe.

{Rollladensteuerung_update_group('Rol\..*','list_group')}

z.b.
Internals:
   .eventMapCmd Auf:noArg Zu:noArg Stop:noArg Sonne:noArg
   ADDRESS    000059
   DEF        000059 A9 0029
   IODev      CUL_0
   IODevMissing 1
   NAME       Rol.Buero
   NR         51
   STATE      open
   TYPE       SOMFY
   move       stop
   .userReadings:
     HASH(0x36075d8)
   CODE:
     1          000059
   READINGS:
     2018-03-03 08:29:40   enc_key         AE
     2018-03-03 08:29:57   exact           100
     2018-03-03 08:29:57   pct             100
     2018-03-03 08:29:57   position        100
     2018-03-03 08:29:40   rolling_code    002E
     2018-03-03 08:29:57   state           open
Attributes:
   Auto_Abschattung nein
   Auto_Abschattung_Helligkeits_Reading brightness
   Auto_Abschattung_Helligkeitssensor Helligkeitssensor_Sued
   Auto_Abschattung_Pos 30
   Auto_Abschattung_Pos_nach_Abschattung -1
   Auto_Abschattung_Schwelle_sonnig 60000
   Auto_Abschattung_Schwelle_wolkig 40000
   Auto_Abschattung_Sperrzeit_nach_manuell 20
   Auto_Abschattung_Sperrzeit_vor_Nacht 45
   Auto_Abschattung_Wartezeit 20
   Auto_Abschattung_Winkel_links 85
   Auto_Abschattung_Winkel_rechts 85
   Auto_Abschattung_min_Temp_aussen 18
   Auto_Aussperrschutz nein
   Auto_Fensterkontakttyp twostate
   Auto_Frostschutz aus
   Auto_Geoeffnet_Pos 80
   Auto_Himmelsrichtung 178
   Auto_Lueften_Pos 30
   Auto_Luft_Fenster_offen ja
   Auto_Modus_hoch immer
   Auto_Modus_runter immer
   Auto_Offset_Minuten_abends 0
   Auto_Offset_Minuten_morgens 0
   Auto_Pos_Befehl pct
   Auto_Zeit_hoch_WE_Urlaub 09:30:00
   Auto_Zeit_hoch_frueh 07:30:00
   Auto_Zeit_hoch_spaet 09:00:00
   Auto_Zeit_runter_frueh 16:30:00
   Auto_Zeit_runter_spaet 21:30:00
   Auto_Zufall_Minuten 20
   Auto_hoch  Astro
   Auto_offen_Pos 100
   Auto_runter Astro
   IODev      CUL_0
   Rollladensteuerung ja
   devStateIcon open:fts_shutter_10 10:fts_shutter_10 20:fts_shutter_20 30:fts_shutter_30 40:fts_shutter_40 50:fts_shutter_50 60:fts_shutter_60 70:fts_shutter_70 80:fts_shutter_80 90:fts_shutter_90 down:fts_shutter_100 closed:fts_shutter_100
   drive-down-time-to-100 13
   drive-down-time-to-close 15
   drive-up-time-to-100 3
   drive-up-time-to-open 17
   eventMap   off:Auf on:Zu stop:Stop go-my:Sonne
   fp_Villa   120,568,2,Buero,
   model      somfyshutter
   positionInverse 1
   room       Rollladen
   subType    blindActuator
   userReadings pct {ReadingsNum('rollBuero','position',0)}
   userattr   Auto_Modus_hoch:bei_Abwesenheit,bei_Anwesenheit,immer,aus Auto_Modus_runter:bei_Abwesenheit,bei_Anwesenheit,immer,aus Auto_hoch:Zeit,Astro Auto_runter:Zeit,Astro Auto_Abschattung_Pos:10,20,30,40,50,60,70,80,90,100 Auto_Abschattung_Pos_nach_Abschattung:-1,0,10,20,30,40,50,60,70,80,90,100 Auto_Lueften_Pos:10,20,30,40,50,60,70,80,90,100 Auto_offen_Pos:10,20,30,40,50,60,70,80,90,100 Auto_Himmelsrichtung Auto_Abschattung:ja,nein,verspaetet,bei_Abwesenheit,bei_Anwesenheit Auto_Zeit_hoch_frueh Auto_Zeit_hoch_spaet Auto_Zeit_hoch_WE_Urlaub Auto_Zeit_runter_frueh Auto_Zeit_runter_spaet Auto_Zufall_Minuten Auto_Fensterkontakt Auto_Luft_Fenster_offen:ja,nein Auto_Aussperrschutz:ja,nein Auto_Geoeffnet_Pos:10,20,30,40,50,60,70,80,90,100 Auto_Abschattung_Winkel_links:0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90 Auto_Abschattung_Winkel_rechts:0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90 Auto_Abschattung_Helligkeitssensor Auto_Abschattung_Helligkeits_Reading Auto_Abschattung_Schwelle_sonnig Auto_Abschattung_Schwelle_wolkig Auto_Abschattung_Wartezeit Auto_Abschattung_min_elevation Auto_Abschattung_min_Temp_aussen Auto_Abschattung_Sperrzeit_nach_manuell Auto_Offset_Minuten_morgens Auto_Offset_Minuten_abends Auto_Abschattung_Sperrzeit_vor_Nacht Auto_Abschattung_schnell_oeffnen:nein,ja Auto_Abschattung_schnell_schliessen:nein,ja Auto_Fensterkontakttyp:twostate,threestate Auto_Pos_Befehl Auto_geschlossen_Pos Auto_Gaestezimmer:nein,ja Auto_Pos_nach_KomfortOeffnen:-2,-1,0,10,20,30,40,50,60,70,80,90,100 Rollladensteuerung:nein,ja Auto_Frostschutz:aus,morgens Auto_Partymodus:ja,nein
   verbose    5
   webCmd     Auf: Stop: Zu:Sonne


die namen passt so auch.


edit:/ so runterfahren klappt schon mal.
nur jetzt muss ich noch hinterkommen warum die autolüftung nicht so will wie ich.
fährt auf pos 30 beim öffnen nur beim schließen gehts dann nicht ganz zu sondern auf lüftungsschlitz. *kopfkratz*

oetti77

Hallo Cluni,

erst einmal danke für das komplexe Modul. Ich hatte mir das ganze bis dato immer mit diversen DOIF etc. selber zusammengebaut, und bin gerade dabei dein Modul zu testen.
Folgende Fragen habe ich noch dazu:

1.In deiner Beschreibung im ersten Post taucht 2x "Auto_offen_Pos" auf. Ich gehe davon aus, dass das noch ein Relikt aus vorherigen Aktualisierungen ist -oder?

Auto_offen_Pos 100               # Position des Rollladen, wenn morgens automatisch geöffnet wird
Auto_Zeit_hoch_frueh 07:30:00      # früheste Öffnen-Zeit an Wochentagen
[...]
Auto_Zufall_Minuten 20            # max. Zufallszeit in Minuten, die zu Fahrzeitpunkt dazu gerechnet wird
Auto_offen_Pos 20               # Position des Rollladen nach dem automatische Öffnen am Morgen

2. Für die einzelne Umstellung meiner Rollläden reicht ein {Rollladensteuerung_update_device('[Name_des_Rollladen]')} pro Rollladen - ist das soweit richtig?

3. Wie kann man einen einzelnen Rollladen bei Bedarf komplett deaktivieren, so dass keinerlei Aktionen ausgeführt werden (bspw. Wartung, Fensterputzen etc.)?
   Reicht es dafür aus, das Attribut "Rollladensteuerung" auf nein für den entsprechenden Rollladen zu setzen?

Danke und Gruß
Chris
FHEM 5.8 (CentOS 7 auf ESXi 6.5), HM-CC-RT-DN, HM-Sec-Sc, HM-WDS40-TO, HM-LC-SW1-FM, HM-LC-Bl1PBU-FM, Sonos, Alexa, Nest Protect 2, Tradfri

Module: HUE, Lightify, ECOTOUCH, TelegramBot, Sonos, Alexa, Pushover, Enigma2

BlackStone

Zum herauszunehmen einr Jalusette kannst du ,in der jeweiligen Rollade das attrib Rolladensteuerung setzen.

Die geöffneten Positionen sind verschieden.


@Cluni wie wäre es mit einer attrib Erweiterung? So das man jalusette raumweise bündeln kann.
Wenn Roulade 1 runter auf jeden auch erst rollade2.?

Gesendet von meinem SM-G935F mit Tapatalk

oetti77

Schau dir mal ,,structure" an, damit kannst du deine Geräte gruppieren.

Gruß
Chris
FHEM 5.8 (CentOS 7 auf ESXi 6.5), HM-CC-RT-DN, HM-Sec-Sc, HM-WDS40-TO, HM-LC-SW1-FM, HM-LC-Bl1PBU-FM, Sonos, Alexa, Nest Protect 2, Tradfri

Module: HUE, Lightify, ECOTOUCH, TelegramBot, Sonos, Alexa, Pushover, Enigma2

BlackStone

Es geht mir nicht um das gruppieren. Sondern simultan schalten in einem Raum ist ja da sinnfrei da ja der randomizer seinen Sinn verliert.

Gesendet von meinem SM-G935F mit Tapatalk


Cluni

Mojn!

Und was genau möchtest du damit erreichen?


Gesendet von iPhone mit Tapatalk