Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufrufe)

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufrufe)

Beitrag von JPS » 24.04.2012, 21:29

Ich versuche, dieses Thema parallel auf meiner Hausautomations-Internetseite (Sonnenstand) bzw. (Sonnensensor) aktuell zu halten.

Zur sonnenstands- und sonnenscheinabhängigen Steuerung von Rollläden habe ich hier um Forum viel gelesen und mich inspirieren lassen (es gibt ja wirklich schon viele gute Ideen und Lösungen). Meine Lösung ist nun eine Kombination aus verschiedenen Ansätzen.

1. Sonnensensor

Zum Erkennen von Sonnenschein gibt es im Forum im Wesentlichen zwei verschiedene Vorgehensweisen. Eine Idee ist die Ermittlung der Differenztemperatur zwischen zwei unterschiedlich positionierten Temperaturmesser, wie sie z.B. hier http://homematic-forum.de/forum/viewtop ... 793#p45725 oder auch hier http://homematic-forum.de/forum/viewtop ... =31&t=6919 beschrieben ist.

Die zweite Variante wertet die Spannung einer Solarzelle aus. Ich habe mich für diese Art eines Sonnensensors entschieden und ihn nach folgender Idee gebaut: http://homematic-forum.de/forum/viewtop ... =27&t=5059, die hier detailliert beschrieben ist: http://maximilian-roth.de/?p=399

Allerdings verwende ich abweichend als Optokoppler den Typ SFH615A-2 und 25k-Potis, womit ich zwei unterschiedlich Schaltkanäle des HM-SCI-3-FM ansteuere (Sonnenschein und Dämmerung bzw. "trübes Wetter").

Fertig aufgebaut sieht der Sonsor so aus...
Forum01.jpg
und liefert folgende Zustände:
Forum07.jpg
2. Sonnenstand

Zur Ermittlung des Sonnenstandes gibt es z.B. hier http://homematic-forum.de/forum/viewtop ... onnenstand oder auch hier
http://homematic-forum.de/forum/viewtop ... =31&t=6035 schon interessante Lösungen.

Meine CCU hat aber inzwischen recht viele Komponen zu bedienen und da ich mit ähnlichen Lösungen im Bereich der Taupunktberechnung vermehrt Abstürze hatte, wollte ich ohne SystemExec-Aufrufe auskommen. Für die Steuerung der Rollladen war dabei für mich eine "hinreichende Näherung" durchaus akzeptabel.

Den Sonnenstand habe ich zunächst auf der Kompassrose wie folgt unterteilt:
Ost: < 110°
Süd/Ost: 110° - 150°
Süd: 150° - 210°
Süd/West: 210° - 250°
West: > 250 °

Die Sonne bewegt sich im Laufe eines Jahres auf einer Art "Doppelkeule" oder "Acht", der sogenannten Analemma, deren Ausrichtung sich über die Tageszeit verändert (Details hierzu kann man im Netz nachlesen, z.B. hier http://de.wikipedia.org/wiki/Analemma). Die Extrema der Analemma liegen Ende Juni und Ende Dezember, der Schnittpunkt der "Acht" Mitte April und Ende August. Die "Keulenbreite" habe ich in der nachfolgenden Auswertung vernachlässigt, man kann sie bei Bedarf aber natürlich auch einbeziehen.

Bei der Erstellung des Scriptes zur Ermittlung des Sonnenstandes habe ich daher zur Näherung die Analemma bezogen auf den Standort des Hauses über das Kalenderjahr zunächst in verschiedene Abschnitte geteilt und für diese dann die Uhrzeit ermittelt, an der die Sonne die o.a. Winkel (110°, 150°, 210°, 250°) erreicht.

Ein hervorragendes Tool hierfür findet sich auf http://www.sunearthtools.com/dp/tools/p ... hp?lang=de.

Die folgende, auf den ersten Blick vielleicht etwas verwirrende Tabelle, zeigt meine Auswertung (für den Raum Köln):
Forum02.jpg
SR=Sunrise, SS=Sunset, die Zahlen in der linken Spalte sind die jeweiligen Tage im Jahr.

Reduziert und gerundet ergeben sich bezogen auf die Tage im Jahr folgende Eckdaten für das Script:
Forum03.jpg
Für andere Regionen und Bedürfnisse sollten die Daten überprüft und ggf. angepasst bzw. präzisiert werden.

Das daraus abgeleitete Sonnenstand-Script

Code: Alles auswählen

! Sonnenstand Analemma

real sDate = system.Date("%j").ToInteger();
real c_zeit =
 (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
real c_tagesbeginn =
 (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger();
real c_tagesende =
 (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger();
integer v_sonnenstand = 0; ! Sonne unter Horizont
 
! Analemma 23.12. bis 10.02.
if ((sDate > 356) || ((sDate > 0) && (sDate < 41)))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 2) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 2) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
! Analemma 11.02. bis 07.03. und 01.11. bis 22.12.
if (((sDate > 304) && (sDate < 357)) || ((sDate > 40) && (sDate < 67)))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 3) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 3) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
! Analemma 08.03. bis 12.04. und 05.10. bis 31.10.
if (((sDate > 277) && (sDate < 305)) || ((sDate > 66) && (sDate < 103)))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 5; ! West
	}
	if (c_zeit < c_tagesende - 1) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 4) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 4) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn + 1) {
		v_sonnenstand = 1; ! Ost
	}	
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
! Analemma 13.04. bis 30.04. und 30.08. bis 04.10.
if (((sDate > 241) && (sDate < 278)) || ((sDate > 102) && (sDate < 121)))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 5; ! West
	}
	if (c_zeit < c_tagesende - 3) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 5) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 5) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn + 3) {
		v_sonnenstand = 1; ! Ost
	}	
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
! Analemma 01.05. bis 09.06. und 12.08. bis 29.08.
if (((sDate > 192) && (sDate < 242)) || ((sDate > 120) && (sDate < 161)))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 5; ! West
	}
	if (c_zeit < c_tagesende - 4) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 6) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 6) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn + 4) {
		v_sonnenstand = 1; ! Ost
	}	
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
! Analemma 10.06. bis 11.08. und 01.11. bis 22.12.
if ((sDate > 160) && (sDate < 193))
{
	if (c_zeit < c_tagesende) {
		v_sonnenstand = 5; ! West
	}
	if (c_zeit < c_tagesende - 5) {
		v_sonnenstand = 4; ! Süd/West
	}
	if (c_zeit < c_tagesende - 7) {
		v_sonnenstand = 3; ! Süd
	}
	if (c_zeit < c_tagesbeginn + 7) {
		v_sonnenstand = 2; ! Süd/Ost
	}
	if (c_zeit < c_tagesbeginn + 5) {
		v_sonnenstand = 1; ! Ost
	}	
	if (c_zeit < c_tagesbeginn -1) {
		v_sonnenstand = 0; ! Sonne unter Horizont
	}
}
dom.GetObject("Sonnenstand").State(v_sonnenstand);
ist auf Basis des Tageszeiten-Scriptes (http://www.homematic-inside.de/tecbase. ... tem_id=148) erstellt, wird per Zeitmodul alle 10 Minuten aufgerufen und liefert die SysVar "Sonnenstand", die zuvor wie folgt definiert werden muss:
Forum04.jpg
Forum04.jpg (18.84 KiB) 14088 mal betrachtet
Das Ergebnis sieht dann z.B. wie folgt aus...
Forum05.jpg
Forum05.jpg (19.46 KiB) 14088 mal betrachtet
3. Steuerung

Hier habe ich eine Lösung in Anlehnung an diese http://maximilian-roth.de/?p=1209 gewählt, z.B. ...
Forum06.jpg
Automatisch lasse ich die Rollladen herunter, wenn die SysVar "Sonnenstand" auf "unter Horizont schaltet", z.B. so...
Forum08.jpg
Zuletzt geändert von JPS am 27.12.2013, 00:48, insgesamt 4-mal geändert.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
Mediaman2000
Beiträge: 173
Registriert: 25.04.2009, 17:56
Wohnort: Nordhorn
Kontaktdaten:

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von Mediaman2000 » 24.04.2012, 23:29

Hey, schöne verbesserung meiner Schaltung - ich denke da werde ich meine nochmal modifizieren wenn es wieder wärmer wird ;-)
mfg. Mediaman2000

Mein Blog: http://maximilian-roth.de

Benutzeravatar
ff-haus
Beiträge: 145
Registriert: 09.12.2012, 21:20

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von ff-haus » 12.02.2013, 12:57

@JPS

Hast du einen Schaltplan der Baugruppe mit den geänderten Bauteilen gegenüber Maximilian, den du uns zur Verfügung stellen kannst? Ich würde mir es gern nachbauen und die Teile bei C..... bestellen.

DANKE!
148 Kanäle in 61 Geräten mit 23 Gerätetypen:

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von JPS » 12.02.2013, 17:59

ff-haus hat geschrieben:Hast du einen Schaltplan...
Im Kern ist es die gleiche Schaltung. Welchen Optokoppler du nimmst, sollte eine untergeordnete Rolle spielen. Die Größe des Vorwiderstandes hängt im wesentlichen von der Spannung ab, die das Solarmodul liefert (bei mir ca. 3,5V). Ich würde evtl. ein etwas kleineres Poti nehmen, dann lässt es sich feiner justieren, hierbei wirst du nicht umhin kommen, ein wenig herum zu probieren.
plan.jpg
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
ff-haus
Beiträge: 145
Registriert: 09.12.2012, 21:20

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von ff-haus » 16.02.2013, 19:21

Ich habe heute alle Bauteile bekommen und mich gleich an das Löten gesetzt.

Als Problem stellt sich nun heraus das meine Solarzelle (diese ist es:http://www.conrad.de/ce/de/product/1913 ... trom-35-mA) in der Dämmerung nur noch 0,6-0,9 V liefert und es aber noch so hell genug ist, das die Außenrollläden nicht herunterfahren müssen. Der HM Schließerkontakt reagiert aber erst bei ca.1,1V und schließt den Kontakt.

Als Potis habe ich schon bereits 1K, 10K und 25K verbaut ohne Änderung des eigentlichen Problems.
Was kann ich nun tun, mir war nicht bewusst das ich eine "spezielle" Solarzelle benötige.

Update:
Gibt es bezüglich den elektrischen Eigenschaften an die Solarzelle Empfehlungen?
148 Kanäle in 61 Geräten mit 23 Gerätetypen:

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von JPS » 16.02.2013, 20:11

ff-haus hat geschrieben:Als Problem stellt sich nun heraus das meine Solarzelle in der Dämmerung nur noch 0,6-0,9 V liefert und es aber noch so hell genug ist, das die Außenrollläden nicht herunterfahren müssen.
Der Sonnensensor in der oben beschriebene Konfiguration ist nicht als Dämmerungsschalter gedacht. Er soll die Rollläden nach einiger Zeit herunterfahren, wenn die Sonne zu heftig auf die Fenster scheint. Der Optokoppler ist hierzu so abzustimmen, dass er bei Sonnenschein schaltet und wieder ausschaltet, wenn die Sonne nicht scheint. Solarmodule aus den gängigen Geräten (z.B. Solarlämpchen") werden bei direkter Sonne etwa 3,5V liefern, dann muss der Optokoppler schalten. Die von dir ausgewählte Solarzelle mit 4V Ausgangsspannung sollte dafür funktionieren. Die Hysterese, damit die Rollladen nicht beim Übergang ständig hoch und runter gehen, ist über das oben gezeigte Programm realisiert.

Wenn du einen Dämmerungsschaltung haben willst, kannst zu z.B. die Helligkeitsfunktion einen Außenbewegungsmelders nutzen. Es gibt hier im Forum aber auch noch andere Ansätze, z.B. durch Umbau eines Außentemperatursensors.

Oder du machst es so, wie ich oben beschrieben habe, indem du die Rollladen runter lässt, wenn die SysVar "Sonnenstand" auf "unter Horizont" schaltet. Das läuft aber vollkommen unabhängig vom Sonnensensor, der ist wie gesagt nur für die Abschattung bei Sonne gedacht.

Aus meiner nunmehr ca. 10 monatigen Erfahrung im Einsatz des Scripts würde ich empfehlen, die Rollladen nicht sofort nach Schalten der SysVar "Sonnenstand" auf "unter Horizont" herunter zu lassen sondern mit einer ca. 30 minütigen Verzögerung, also in etwa so...
Auto VS Rollladen runter Nacht Sommer.png
Meiner Familie ist es lieber, wenn sie erst bei deutlich beginnender Dunkelheit nach unten gehen als wenn es noch zu hell ist, aber das ist Geschmackssache.

(Die Variablen "CCU im Reboot", "Party" und "Jahreszeit Rollladen" kannst du einfach weglassen.)
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
Sammy
Beiträge: 9172
Registriert: 09.09.2008, 20:47
Hat sich bedankt: 15 Mal
Danksagung erhalten: 174 Mal

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von Sammy » 16.02.2013, 20:18

Hallo,

evtl. kannst Du Deine Solarzelle trotzdem nutzen.
Geh mit einer Diode von dem SCI-Eingang auf das Solarmodul, so dass das Modul die Spannung des Eingangs bei Dunkelheit runterzieht, eine hohe Modulspannung aber den SCI-Eingang nicht zerstört. Evtl. musst Du das Modul zusätzlich mit einem Widerstand belasten, damit kräftig genug nach Masse gezogen wird. Ein Widerstand am SCI-Eingang wäre auch ok. Dann wird sicher nach Masse gezogen, wenn das Modul keine Spannung liefert.

Gruß Sammy
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Benutzeravatar
ff-haus
Beiträge: 145
Registriert: 09.12.2012, 21:20

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von ff-haus » 16.02.2013, 20:26

@JPS

Dann hatte ich das falsch verstanden, weil oben Sonnen- und Dämmerungssensor steht.

Warum nutzt du dann 2 Eingänge am HM Schließerkontakt.

Im übrigen geht natürlich mit meiner Solarzelle die Funktion bei Sonne da dabei genügend Spannung am Solar anliegt. Mir ging es wirklich um die Dämmerungsfunktion.

Wenn ich nun aber 2 Solarzellen in Reihe schalte müsste ich jedoch diese Funktion doch auch hinbekommen oder habe ich dann einen Denkfehler?
148 Kanäle in 61 Geräten mit 23 Gerätetypen:

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von JPS » 17.02.2013, 00:15

ff-haus hat geschrieben:Dann hatte ich das falsch verstanden, weil oben Sonnen- und Dämmerungssensor steht.
Verstehe, das kann tatsächlich ein wenig irreführend sein. Ich hatte damals zwei identische Zweige eingebaut, da zwei der drei Kanäle des HM-SCI-3-FM sonst ungenutzt geblieben wären. So kann man mit einem Sensor mehrere "Stufen" für die Sonneneinstrahlung realisieren, z.B. um verschiedene Fenster unterschiedlich zu behandeln. Als echten "Dämmerungssensor" habe ich das Teil nie verwendet, dafür nutze ich ja das Sonnenstand-Script. Ich formuliere das im ersten Eintrag um, damit es etwas klarer wird.

Ansonsten würde ich mal die von Sammy vorgeschlagene Lösung probieren. Oder du baust dir einen "echten" Dämmerungsschalter dazu (z.B. so was... http://www.conrad.de/ce/de/product/1913 ... -12-15-VDC). Dann hast du beide Funktionen in einem Gehäuse mit einem HM-SCI-3-FM. Allerdings wird das nicht ohne weiteres mit einer Batterie funktionieren.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Benutzeravatar
JPS
Beiträge: 1093
Registriert: 07.08.2010, 22:51
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 8 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Noch eine Sonnen-Jalousiesteuerung (ohne SystemExec-Aufr

Beitrag von JPS » 17.02.2013, 00:23

JPS hat geschrieben:Ich formuliere das im ersten Eintrag um, damit es etwas klarer wird.
Der Eintrag liegt schon so weit zurück, dass ich ihn nicht mehr editieren kann, daher an dieser Stelle nochmal der Hinweis...

Der Sonnensensor in der oben beschriebenen Konfiguration ist nicht als Dämmerungssensor gedacht. Er soll die Rollläden nach einiger Zeit herunterfahren, wenn die Sonne zu heftig auf die Fenster scheint. Die Abstufung in zwei Kanälen dient der Realisierung mehrerer "Stufen" für die Sonneneinstrahlung, z.B. um verschiedene Fenster unterschiedlich zu behandeln. Für "echte" Dämmerungssensoren gibt es diverse andere Lösungen, die hier im Forum an anderen Stellen beschrieben sind.
Verwendung meiner Hinweise und Skripte auf eigenes Risiko | Ich übernehme hierfür keinerlei Gewährleistung bzw. Haftung

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“