Beleuchtungsstärke lx zur Steuerung einer Verschattungsanlage

Begonnen von Gisbert, 25 Mai 2020, 23:09:59

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo zusammen,

ich möchte mit einem Lichtsensor BH1750 (hängt an einem ESP8266 mit LiFePO4 mit Tasmota und deep sleep - dies funktioniert sehr schön und soll nicht Gegenstand dieses Threads sein) zur Steuerung einer Verschattungsanlage nutzen. Da diese Anlage eine Senkrechtmarkise ist, möchte ich sie in Sicherheit wissen, wenn ein Sturm aufzieht, der sich aber vorher i.d.R. durch Wolkenbildung ankündigt. Ansonsten soll sie bei voller oder überwiegendem Sonnenschein das Haus vor Sonneneinstrahlung schützen.

Schilderung des Problems:
Ich bin davon ausgegangen, dass die Beleuchtungsstärke innerhalb eines Tages langsam ansteigt, dann ein Maximum hat und gegen Abend langsam wieder abfällt. Unter dieser Annahme, die sich später noch als falsch herausstellen wird, habe ich angenommen, dass ich keinen konstanten Wert zur Steuerung der Verschattungsnlage nehmen kann, da ich nachmittags mit Wolken einen vergleichbaren Wert zu abends nur mit Sonne haben würde. Mit dieser Sache habe ich wohl schon einige genervt :-[, deshalb möchte ich hier eine Lösung präsentieren.

Zur Verschattungsanlage: reine Westlage, keine Verschattung durch Bäume oder Nachbargebäude
Lichtsensor Westseite: Lw - dieser Sensor liefert einen Messwert, der durch direkte und diffuse Strahlung herrührt
Lichtsensor Ostseite: Lo - dieser Sensor liefert ab nachmittags einen Messwert, der im wesentlichen durch die diffuse Strahlung herrüht
Wahrscheinlich ist diese Beschreibung nur eine grobe Näherung, aber für meinen Fall passt es, wie sich gleich herausstellen wird.
Für mich sind Messwerte ab ca. 14:00 relevant, da nur dann die Sonne auf der Verschattungsanlage stehen kann.

Definitionen:
Direkte Strahlung = Beleuchtungsstärke [lx] Lw - Beleuchtungsstärke [lx] Lo
Diffuse Strahlung = Beleuchtungsstärke [lx] Lo
Quotient direkte/diffuse Strahlung = (Beleuchtungsstärke [lx] Lw - Beleuchtungsstärke [lx] Lo) / Beleuchtungsstärke [lx] Lo =  Beleuchtungsstärke [lx] Lw / Beleuchtungsstärke [lx] Lo - 1

Komplett geschlosse Wolkendecke, kurz vor Regen:
Direkte Strahlung: max. 8000 lx
Quotient direkte/diffuse Strahlung: max. 1.5

Volle Sonne:
Direkte Strahlung: min. 20000 lx - auch noch kurz bevor der Sonnenuntergang startet
Quotient direkte/diffuse Strahlung: ca. 10 - 20

Kurzeitige Schwankungen (ein Wölkchen, Vogel, ... werden durch Mittelwertbildung über 5 Minuten gleitend gemittelt, wobei alle 60 Sekunden Messwerte reinkommen.

Damit gibt es ein klares Kriterium, bei dem ich die Verschattungsanlage unten haben will, und wann sie besser hochfährt bzw. oben bleibt.
Ich denke, dass ich mit dem Quotient direkte/diffuse Strahlung = 7.5 starte, was einem teilbewölktem Himmel entspricht.
Der Lichtsensor auf der Westseite muss noch in ein wetterfestes Gehäuse, was er bisher noch nicht ist.

In Verbindung mit ReadingsAge kann ich prüfen, ob die Messwerte aktuell sind. Sobald dies nicht der Fall ist, gehe ich auf Nummer sicher und die Verschattungsanlage fährt hoch, um einem evtl. Schaden durch Sturm (=dunkel) vorzubeugen.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

FunkOdyssey

Ich wandle meine Lux-Werte in logarithmische Werte um. Dadurch verändert sich die Kurve und ich kann diese besser verwenden. Noch ist es ein Test, aber die Ergebnisse sind praxistauglicher.

Gisbert

Hallo FunkOdyssey,

der Logarithmus vergrößert sozusagen die kleinen Werte überprportional zu den großen Werten.
Ich kann mir auch gut vorstellen, dass dann eine Grenzfestlegung damit leichter geht. Wie behandelst du Nullwerte? Wenn ich den beschriebenen Quotienten nehme, dann kann es gut sein, dass der Zähler Null wird, und damit der Quotient Null ist. Schlimmer ist es jedoch, wenn der Nenner Null wird. Hier habe ich mir damit beholfen, indem ich für diesen Fall dem Quotienten den Wert Null zugewiesen habe.

Gegen den Logaritmus von Null muss man aber etwas tun.
Wie sieht deine Lösung im Detail dafür aus?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

FunkOdyssey

Ich habe mich bei meiner Berechnung an der Zigbee/Hue-Methode orientiert. Folgende Lösung ist nicht ganz so exakt wie echte Lichtsensoren, aber das liegt auch vorwiegend an den ZWave-Sensoren, die irgendwann keine Werte mehr senden. Selbst wenn ich wollte, würde ich Lux und Lightlevel nicht auf 0 bekommen. Bei den Zigbee-Sensoren geht das. Bei ZWave-Sensoren ist das Threshold einfach nicht weiter anpassbar.

userReadings

lightlevel:lux.* {sprintf("%.1f",10000 * mylog10(ReadingsNum("$name","lux",0)) +1) }

Funktion in 99_myUtils.pm

sub mylog10($)
{
my ($n) = @_;
return 0.0000000001 if( $n <= 0 );
return log($n)/log(10);
}

Greeny

#4
Hallo Giesbert,

vielen Dank, dass du das Thema hier weiterführst  ;)
Für alle die es nicht wissen, das ganze wurde hier schon mal ein ganzes bisschen abgehandelt:
https://forum.fhem.de/index.php/topic,111315.0.html

Zitat von: Gisbert am 25 Mai 2020, 23:09:59
Mit dieser Sache habe ich wohl schon einige genervt :-[
Nein hast du nicht, ich wollte nur einen Riegel davor schieben, denn am Ende driftete mir es zu stark ab  ;)

So ganz den Sinn hinter der Verwendung des Logarithmus versteh ich noch nicht. Wenn man mit Schwellwerten arbeitete und dieses nicht richtig funktionierte, wird es unter Verwendung des ln auch nicht funktionieren. Das Problem mit der 0 ist so eine Sache, denn der Grenzwert vom ln ist -∞ (Wie gesagt, ne Erklärung wäre gut, weshalb das sinnvoll sein soll). Schön ist es auch bei Werten 0<x<1, dann wird's auf einmal Negativ  ;)
Ich hab dir das mal geplottet (siehe Anhang)

Also wenn die jetzige Lösung für dich funktioniert ist doch auch ok, oder wo liegt das eigentliche Problem?  ::)

Wie sind deine Sensoren denn ausgerichtet? Wie ich schon mal erwähnte wird die Rechnerei leichter, wenn beide Sensoren nur diffuses Licht messen.

PS: Ich bin kein Meteorologe, aber ist es wirklich sinnvoll, Stürme anhand der Beleuchtungsstärke vorherzusagen? Also wenn mich nicht alles täuscht entstehen Stürme durch Temperaturunterschiede. Bedeutet es kann durchaus Stürmen, wenn bei mir die Sonne scheint (warm) und wo ganz anders Wolken herrschen (kalt).  ???

Viele Grüße - Green