Rolladensteuerung durch Sonneneinstrahlung (gelöst)

Begonnen von wendeling, 06 Juni 2018, 21:13:20

Vorheriges Thema - Nächstes Thema

wendeling

Hallo,
ich habe folgende Problem, ich möchte mittels den den Temperaturdifferenz Messer von Homematic ab einen differenziert von 0,7 Grad die Rollo auf die Hälfte des Fensters absenken.
Das habe ich mit einer DOIF realisiert und funktioniert auch.
Jetzt geht es wieder um das automatische hochfahren , auch das wär mit DOIF normal kein Problem. Aber jetzt zu meiner Zusatz Anforderung , da es häufig passiert dass nur kurz die Sonnen weg ist und somit der eingestellte differenzwert von 0,4 unterschritten wird und die Rollo ständig hoch und runder gehen. Ich möchte dass nach der Unterschreitung eine Wartezeit von 30 min gesetzt wird, und wenn dann immernoch der differenzwert unterschritten wird die Rollo hochgefahren werden, und wenn nicht sollen diese unten bleiben. Und wenn jetzt wieder kurz die Sonnen weg ist soll das Ganze zu von vorne beginnen.

Habe es auch mit at Bausteinen versucht, doch das funktionier5 nicht so wie gewünscht.

Wer hat einen Idee ?

Bausteine :
HM_5C2BBF_T1_T2 Temperatur Messer
HMW_IO_12_Sw7_DR_OEQ0482339_16 Schalter für Rollo hoch

Gruß
Wendelin

Otto123

Hallo Wendelin,

ich habe das rings um das Haus mit solchen Defs gemacht
defmod di_BeschattungN DOIF ([SensorSonne:Beschattung] eq "on" and [16:30 - {sunset("HORIZON=7")}]) (set st_Rollo_N 35) DOELSE (set st_Rollo_N auf)
attr di_BeschattungN room Haus
attr di_BeschattungN wait 900:900
Beschattung ist ein userReadings
attr SensorSonne userReadings scheint {(ReadingsNum($name,"temperature",0) > 2.9) ? 'on' : 'off' },\
Beschattung {((ReadingsNum($name,"temperature",0) > 2.9) and ReadingsNum("SensorR2","measured-temp",0) > 23.9 and ReadingsNum("SensorAussen","temperature",0) > 17 ) ? 'on' : 'off' }

Das wait Attribute glättet die Änderungen.

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

Chris8888

Hallo Wendelin,

Rollnadensteuerung mit Beschattungsfunktion etc. kann sehr, schnell sehr komplex werden.
Ich empfehle dir mal dieses Modul anzusehen:
https://forum.fhem.de/index.php/topic,73964.0.html

M.E. und aus persönlicher Erfahrung die mit Abstand beste Lösung für eine Rollladensteuerung...inkl. einem sehr hohen WAF.

Okay, dein Ansatz über Temperaturdifferenz kann das Modul out of the box nicht, aber ggf. bist du ja bereit darüber nochmal nachzudenken.
Der Ansatz über Helligkeitsmesser ist sicherlich nicht verkehrt. ;-)

VG
Christian
FHEM 6.0 auf einem PI4 mit div. Homematic-Komponenten, Alexa, Tablet-UI und Homebridge...und läuft einfach. Erweitert mit CCU3 und Homematic-IP...und läuft immer noch.

schnitzelbrain

Hallo, nicht die eleganteste Lösung aber ich habe meinen Sendeinterval auf 30min gesetzt.
Das Ganze mit einem selbstgebauten WEMOS Helligkeits Sensor aus einer alten Solar Zelle einer Powerbank.

Damit ist immer mindestens 30min zwischen den Reaktionen.

Am liebsten wäre mir eine Integrator Funktion die Helligkeit und Zeit berücksichtigt. Aber immo funktioniert meine Überwachung erstaunlich gut.

Gesendet von meinem SM-G930F mit Tapatalk


ThomasMagnum

schnitzelbrain:
Kurze Frage, wie hast du denn den Helligkeitssensor gebaut? Könntest du da nähere Infos und ggf. ein Bild zur verfügung stellen. Ich habe auch noch ein paar Wemos hier rumliegen und das wäre eine mir noch fehlende Komponente.

Danke schon mal.

Gruß, Thomas

schnitzelbrain

Zitat von: ThomasMagnum am 07 Juni 2018, 09:44:05
schnitzelbrain:
Kurze Frage, wie hast du denn den Helligkeitssensor gebaut? Könntest du da nähere Infos und ggf. ein Bild zur verfügung stellen. Ich habe auch noch ein paar Wemos hier rumliegen und das wäre eine mir noch fehlende Komponente.

Danke schon mal.

Gruß, Thomas
Gerne,

Der WEMOS D1 mini hat einen Analog input (A0 zu Gnd) der mit einem Spannungsteiler versehen ist, da der ESP nur 1V am Eingang verträgt.
Der Teiler hat R1 220k/ R2 100k was ohne Änderung 3.3 Volt input ermöglicht.

Ich hatte die Solarzelle vorab aus gemessen und bin bei ca 7V max gelandet.

Dann habe ich in die plus Leitung zum A0 noch ein 500k Widerstand eingefügt. Also ist mein Teiler ca 7:1.
Auf den genauen Wert kommt es mir ja nicht an.

Der WEMOS sendet jetzt alle 30min  den Helligkeits Wert an FHEM.

Wenn du noch mehr infos benötigst melde dich.
Ich habe das Gehäuse jetzt abgedichtet deswegen sind Bilder leider schlecht.

Ein DOIF checked Uhrzeit und Balkon Tür offen/zu und fährt den Somfy dann runter oder wieder rauf.



Grüße Schnitzelbrain


Otto123

Hi,

ist das Messprinzip so nicht suboptimal? Eigentlich liefert die Zelle doch einen veränderten Strom bei gleichbleibender Zellspannung (pro Zelle ca. 0,5 Volt, die Gesamtspannung hängt also stark von der Konstruktion des Moduls ab welches aus Reihen und Parallelschaltung mehrere Zellen besteht)
Du belastest die Zelle jetzt mit nur 800 kOhm was einen Strom von nur ca. 8 µA entspricht. Misst man da nicht immer eine Art Leerlaufspannung?
Klar durch den Spannungsteiler hast Du quasi eine Strommessung. Ich hätte gedacht man müsste die Zelle stärker belasten um relevante Kurven zu bekommen.

Eigentlich könnte man den ESP doch gleich über das Solarmodul versorgen :)

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

schnitzelbrain

Zitat von: Otto123 am 07 Juni 2018, 11:34:41
Hi,

ist das Messprinzip so nicht suboptimal? Eigentlich liefert die Zelle doch einen veränderten Strom bei gleichbleibender Zellspannung (pro Zelle ca. 0,5 Volt, die Gesamtspannung hängt also stark von der Konstruktion des Moduls ab welches aus Reihen und Parallelschaltung mehrere Zellen besteht)
Du belastest die Zelle jetzt mit nur 800 kOhm was einen Strom von nur ca. 8 µA entspricht. Misst man da nicht immer eine Art Leerlaufspannung?
Klar durch den Spannungsteiler hast Du quasi eine Strommessung. Ich hätte gedacht man müsste die Zelle stärker belasten um relevante Kurven zu bekommen.

Eigentlich könnte man den ESP doch gleich über das Solarmodul versorgen :)

Gruß Otto

Die bedenken mit der Last (bzw. fehlende Last)  hatte ich am Anfang auch. Ich hab mir dann erst mal eine weile die Helligkeiten plotten lassen.
Dann mit dem DOIF zusammen als Dummy bevor ich den Rolladen aktiv fahre.

Im Anhang siehst du den SVG vom Live system.

Funktioniert ohne Probleme.

Die grünen Balken sind der DOIF Output
1 Ist offen
2 Ist geschlossen
3 Ist Ende Überwachung

Hier noch der List vom DOIF
Internals:
   CFGFN     
   DEF        ([11:00-16:30] and ([ESPEasy_ESP_Easy_Sonne:Analog] <= 600)) (set bot message @@XX @@XX Rolladen hoch, set rolladen_tuer off, set rolladen_balkon off) DOELSEIF ([11:00-16:00] and ([ESPEasy_ESP_Easy_Sonne:Analog] > 630) and ([?fensterkontakt_balkontuer] eq "closed") and  ([?fensterkontakt_schiebetuer] eq "closed"))(set bot message @@XX @@XX Rolladen runter, set rolladen_tuer on, set rolladen_balkon on) DOELSEIF ([17:00]) (set bot message @@XX @@XX Rolladen hoch, set rolladen_tuer off, set rolladen_balkon off)
   MODEL      FHEM
   NAME       rolladen_sonne
   NR         80
   NTFY_ORDER 50-rolladen_sonne
   STATE      cmd_1
   TYPE       DOIF
   Helper:
     DBLOG:
       cmd:
         logdb:
           TIME       1528362000.27686
           VALUE      1
       cmd_event:
         logdb:
           TIME       1528362000.27686
           VALUE      timer_1
       cmd_nr:
         logdb:
           TIME       1528362000.27686
           VALUE      1
       state:
         logdb:
           TIME       1528362000.27686
           VALUE      cmd_1
   READINGS:
     2018-06-07 13:03:43   Device          ESPEasy_ESP_Easy_Sonne
     2018-06-07 11:00:00   cmd             1
     2018-06-07 11:00:00   cmd_event       timer_1
     2018-06-07 11:00:00   cmd_nr          1
     2018-06-07 13:03:43   e_ESPEasy_ESP_Easy_Sonne_Analog 592.00
     2018-05-20 10:26:31   mode            enabled
     2018-06-07 11:00:00   state           cmd_1
     2018-06-07 09:22:43   timer_01_c01    07.06.2018 11:00:00
     2018-06-07 09:22:43   timer_02_c01    07.06.2018 16:30:00
     2018-06-07 09:22:43   timer_03_c02    07.06.2018 11:00:00
     2018-06-07 09:22:43   timer_04_c02    07.06.2018 16:00:00
     2018-06-07 09:22:43   timer_05_c03    07.06.2018 17:00:00
   Regex:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and (ReadingValDoIf($hash,'ESPEasy_ESP_Easy_Sonne','Analog') <= 600)
     1          DOIF_time($hash,2,3,$wday,$hms) and (ReadingValDoIf($hash,'ESPEasy_ESP_Easy_Sonne','Analog') > 630) and (InternalDoIf($hash,'fensterkontakt_balkontuer','STATE') eq "closed") and  (InternalDoIf($hash,'fensterkontakt_schiebetuer','STATE') eq "closed")
     2          DOIF_time_once($hash,4,$wday)
   days:
   devices:
     0           ESPEasy_ESP_Easy_Sonne
     1           ESPEasy_ESP_Easy_Sonne
     all         ESPEasy_ESP_Easy_Sonne
   do:
     0:
       0          set bot message @@XX @@XX Rolladen hoch, set rolladen_tuer off, set rolladen_balkon off
     1:
       0          set bot message @@XX @@XX Rolladen runter, set rolladen_tuer on, set rolladen_balkon on
     2:
       0          set bot message @@XX @@XX Rolladen hoch, set rolladen_tuer off, set rolladen_balkon off
     3:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      Analog: 592.00,Ana: 592.00
     globalinit 1
     last_timer 5
     sleeptimer -1
     timerdev   ESPEasy_ESP_Easy_Sonne
     timerevent Analog: 592.00,Ana: 592.00
     triggerDev ESPEasy_ESP_Easy_Sonne
     timerevents:
       Analog: 592.00
       Ana: 592.00
     timereventsState:
       Analog: 592.00
       state: Ana: 592.00
     triggerEvents:
       Analog: 592.00
       Ana: 592.00
     triggerEventsState:
       Analog: 592.00
       state: Ana: 592.00
   internals:
     1           fensterkontakt_balkontuer:STATE fensterkontakt_schiebetuer:STATE
     all         fensterkontakt_balkontuer:STATE fensterkontakt_schiebetuer:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   itimer:
   localtime:
     0          1528362000
     1          1528381800
     2          1528362000
     3          1528380000
     4          1528383600
   perlblock:
   readings:
     0           ESPEasy_ESP_Easy_Sonne:Analog
     1           ESPEasy_ESP_Easy_Sonne:Analog
     all         ESPEasy_ESP_Easy_Sonne:Analog
   realtime:
     0          11:00:00
     1          16:30:00
     2          11:00:00
     3          16:00:00
     4          17:00:00
   time:
     0          11:00:00
     1          16:30:00
     2          11:00:00
     3          16:00:00
     4          17:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0  1
     1           2  3
     2           4
   trigger:
   triggertime:
     1528380000:
       localtime  1528380000
       hash:
     1528381800:
       localtime  1528381800
       hash:
     1528383600:
       localtime  1528383600
       hash:
   uiState:
   uiTable:
Attributes:
   room       Notifier

Wuppi68

Zitat von: wendeling am 06 Juni 2018, 21:13:20
Hallo,
ich habe folgende Problem, ich möchte mittels den den Temperaturdifferenz Messer von Homematic ab einen differenziert von 0,7 Grad die Rollo auf die Hälfte des Fensters absenken.
Das habe ich mit einer DOIF realisiert und funktioniert auch.
Jetzt geht es wieder um das automatische hochfahren , auch das wär mit DOIF normal kein Problem. Aber jetzt zu meiner Zusatz Anforderung , da es häufig passiert dass nur kurz die Sonnen weg ist und somit der eingestellte differenzwert von 0,4 unterschritten wird und die Rollo ständig hoch und runder gehen. Ich möchte dass nach der Unterschreitung eine Wartezeit von 30 min gesetzt wird, und wenn dann immernoch der differenzwert unterschritten wird die Rollo hochgefahren werden, und wenn nicht sollen diese unten bleiben. Und wenn jetzt wieder kurz die Sonnen weg ist soll das Ganze zu von vorne beginnen.

Habe es auch mit at Bausteinen versucht, doch das funktionier5 nicht so wie gewünscht.

Wer hat einen Idee ?

Bausteine :
HM_5C2BBF_T1_T2 Temperatur Messer
HMW_IO_12_Sw7_DR_OEQ0482339_16 Schalter für Rollo hoch

Gruß
Wendelin

Hi Wendelin,

auch wenn ich erst jetzt hier 1. Post antworte ...

mit dem runter klappt es ja bei Dir gut :-)
ich würde dann die Differenz "empirisch" ermitteln wann der Rollo wieder hochfahren soll --> Hysterese vergrößern und bei der Berechung auf die "Mindesttemperatur" berücksichtigen (Nachts war es sehr kalt und die Sonne knallt die Dir Bude morgens voll, aber drinnen ist es trotzdem noch unter 21 Grade...)

ungefähr so:

Taussen - (max(Tinnen, Twohlfühl)

und die Motoren werden es Dir Danken, wenn Sie nicht permanent  arbeiten müssen
FHEM unter Proxmox als VM

wendeling

Danke an Otto !
Funktioniert genial

Gruß
Wendelin