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
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
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
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
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
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
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
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
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
Danke an Otto !
Funktioniert genial
Gruß
Wendelin