Hallo zusammen,
hier mal ein kleines Bastelprojekt für heiße Tage im kühlen Keller 8)
Ich hatte noch einen billigen Solar-Scheinwerfer rumliegen (z.B. https://www.amazon.de/Galapara-Solares-Bewegungsmelder-wasserdichte-Au%C3%9Fenwand/dp/B083SP4DBP der ist woanders aber viel günstiger!). Den sollte ich immer mal installieren.
Da es dafür zu warm war, habe ich mir gedacht ich könnte diesen ja einfach mal ein wenig smarter gestalten.
Nach anfänglicher Überlegung und durchschauen meiner Bastelkisten ist die Entscheidung gefallen, auf Basis von einem Arduino nano mit einem 433MHz Sender (FS-1000A) das Projekt umzusetzen.
Arduino, da dieser sich einfach per USB programmieren lässt. Das macht auch das testen einfacher.
Ziele:
- Wissen, wie oft das Licht angeht
- Akkuspannung messen
- Solarspannung messen (vielleicht als Ersatz zu einem Helligkeitssensor)
- Extra Button um eine Aktion in FHEM auszulösen
Und das natürlich mit noch vorhandenen Komponenten ;)
Die Umsetzung sollte so einfach wie möglich gehalten werden. Wichtig ist der Stromverbrauch. Der Akku ist hauptsächlich für den Scheinwerfer.
Der Arduino läuft eigentlich bei 5V. In dem Scheinwerfer ist nur ein Akku 18650 (Nennspannung 3.7V). Da ich keine StepUp verwenden wollte, läuft der Arduino also außerhalb der Spezifikation. Bisher aber problemlos.
Um den Stromverbrauch des Arduinos zu minimieren habe ich die Power-LED und den Spannungsregler ausgelötet. So bin ich nun bei 8mA im Betrieb und 0,11mA im Sleep-Mode. (Mit meinem Schätzeisen gemessen)
Technischer Aufbau:
!!!ACHTUNG!!! Arduino +5V erst anschließen, wenn das Proramm übertragen ist!!!
FS-1000A (Sender)+ - Batterie +
FS-1000A (Sender)- - Batterie -
FS-1000A (Sender)S - Arduino D2
Arduino +5V - Batterie +
Arduino GND - Batterie -
Arduino D3 ---|>|-- (Diode) LED GND Diode wird benötigt um kein glimmen im ausgeschalteten Zustand zu haben
Arduino A0 - Spannungsteiler (z.B. 2x 68K -> Das ist etwas hoch! Besser 2x10K) - SolarIN+ und SolarIN-
Arduino D4 - Taster
Taster - GND
Siehe auch angehängte Fritzing-Skizze.
Software: Siehe Anhang.
Es wird zusätzlich noch die LaCrosse-Lib von "juergs" (Jürgen) benötigt (DANKE dafür!). Die ist zu finden unter: https://github.com/juergs/iAQ_NANO_328_LaCrosse/tree/master/utility
Hier die Dateien "LaCrosse.cpp" und "LaCrosse.h" runterladen und im gleichen Verzeichnis speichern.
Wichtig: Es muss in der LaCrosse.cpp der Sende-Pin angepasst werden!
Am längsten habe ich gebraucht um den "Deep-Sleep" umzusetzen. Der Rest war eigentlich recht einfach.
Die Sende-Zeiten und die verwendeten Ports können frei angepasst werden.
Das LaCrosse-Protokoll ist eigentlich für Temperatur und Luftfeuchtigkeit gedacht. Da ich zu viele Werte habe, verwende ich 2 Adressen:
1. Sensor Temperatur: "Bitstatus" Licht und Taster
1. Sensor Luftfeuchtigkeit: Batterie*10 (37.2 = 3,72V)
2. Sensor Luftfeuchtigkeit: Solarspannung*10 (47.2 = 4,72V)
2. Sensor Temperatur: Versuch die Prozessortemperatur auszulesen.
Siehe auch Bild der Plots.
Die Prozessortemperatur hat absolut nichts mit den Realwerten zu tun. Dies ist bestimmt auch der zu geringen Eingangsspannung geschuldet. Keine Ahnung. Die Werte sind auf jeden Fall absolut nichts aussagend und unbrauchbar.
Die Spannungen sind auch eher geschätzt. Da der Arduino normalerweise bei 5V läuft. Ich lese die Eingangsspannung aus und rechne mir das entsprechend hin. Die ersten Ergebnisse sind allerdings vielversprechend und zumindest vergleichbar.
Da derzeit keine Wolken am Himmel sind weiß ich nicht ob ich durch das messen der Spannung an der Solarzelle wirklich einen brauchbaren Helligkeitswert erhalte. Zumindest kann man sehr gut zwischen Hell und Dunkel unterscheiden. Man sieht auch hier ganz genau, wann der Akku voll geladen war und die Ladeelektronik abgeschaltet hat.
Voll geladen war der Akku heute innerhalb von 4h. Gestern lag das System nur kurz in der Sonne und vorher nur im Bastelraum ohne viel Licht. Dafür wurde der Akku aber mit sehr vielen Versuchen gebraucht. Ich sehe hier also für den Dauerbetrieb keine Probleme. Mal schauen, wie sich das die nächsten Tage verhält, wenn sich das System eingependelt hat.
Derzeit habe ich das so konfiguriert, das alle ca. 60sek. ein Update der Werte (wenn sich diese geändert haben) erfolgt.
Zusätzlich wird "spätestens" nach ca. 1h (3600 Sekunden) alle Werte übermittelt. So könnte man erkennen, ob der Sensor überhaupt noch lebt.
Mal schauen, wie sich das in der Praxis macht.
In FHEM sollten die Geräte automatisch angelegt werden. Um die Werte anzupassen sollten noch die folgenden Attribute gesetzt werden (RAW-Definition):
attr CUL_TX_1 stateFormat Licht:Light Taste:Button Spannung:BattVolt
attr CUL_TX_1 userReadings Button:temperature.* {my $value=substr(ReadingsVal($name, "temperature", 0.0),2,1);; \
if ($value eq 0){return "off"}else{return "on"}}, \
Light:temperature.* {my $value=substr(ReadingsVal($name, "temperature", 0.0),0,1);;\
if ($value eq 0){return "off"}else{return "on"}}, \
BattVolt:humidity.* {ReadingsVal($name, "humidity", 0.0) / 10}
attr CUL_TX_2 stateFormat Solar:SolarVolt Temp:temperature
attr CUL_TX_2 userReadings SolarVolt:humidity.* {ReadingsVal($name,"humidity",0.0)/10}
Natürlich kann dann auch das FileLog angepasst und die Plots erstellt werden.
Viel Spaß damit!
Gruß
Bismosa
ZitatDa derzeit keine Wolken am Himmel sind weiß ich nicht ob ich durch das messen der Spannung an der Solarzelle wirklich einen brauchbaren Helligkeitswert erhalte.
Vermutlich nicht. Die Spannung ist (fast)unabhängig von der Helligkeit, also nur Unterscheidung zwischen dunkel/nicht-dunkel möglich. Eine Helligkeits(Solarstrahlungs)Messung wäre über den Strom möglich.
Hallo Bismosa,
super, eigentlich genau das, was ich auf einem größeren Grundstück (mehrmals) gebrauchen könnte.
Eine Frage dazu, kann der Bewegungsmelder der Lampe rund um die Uhr die Bewegungsmeldung zu FHEM absetzen, oder nur bei Dunkelheit? Ich möchte den Scheinwerfer als Bewegungsmelder in FHEM haben und gleichzeitig bei Nacht die automatische Beleuchtung haben.
Grüße
Zitat von: bismosa am 12 August 2020, 18:59:53
- Solarspannung messen (vielleicht als Ersatz zu einem Helligkeitssensor)
ZitatÜber den Pin 2 wird nach dem Anlegen der Betriebsspannung bzw. bei jedem Senden der FET für ca. 2Sekunden auf high geschaltet und damit die Solarzelle auf I Nenn belastet. Deswegen sollt die Spannung an Pin 7 bei bedecktem Himmel logischer weise für ca. 2 Sekunden ziemlich klein sein. Nach dem Senden steht wieder die Leerlaufspannung der Solarzelle an Pin7 an, diese Spannung wird mit der Z-Diode auf ca. 3V (Maximal 5V, sonst ist der AD zerschossen) begrenzt.
Nachzulesen unter:
https://wolf-u.li/5212/wetterstation-ks-300-ks-555-mit-daemmerung-und-lichteinfall-erweitern/
(https://wolf-u.li/5212/wetterstation-ks-300-ks-555-mit-daemmerung-und-lichteinfall-erweitern/)
Vielleicht hilft dir das, ich habe meine Wetterstation so in Gebrauch.
Zum Vergleich im Screenshot, oben die Wetterstation unten meine PV. Man sieht am Anfang die Verschattung durch dem Baum.
Hallo!
Das ist eine interessante Erweiterung...allerdings wollte ich es erstmal so einfach wie möglich gestalten. Das die Werte nur grobe Schätzwerte werden war mir klar. Mal schauen, wie die Werte so sind, wenn hier mal ein paar Wolken aufziehen...
Zitat von: NewbieNew am 13 August 2020, 07:42:24
Eine Frage dazu, kann der Bewegungsmelder der Lampe rund um die Uhr die Bewegungsmeldung zu FHEM absetzen, oder nur bei Dunkelheit?
Keine Ahnung, ob der Bewegungsmelder die ganze Zeit im Betrieb ist. Ist bestimmt auch bei jedem Modell unterschiedlich. Sollte es irgendeinen Triggerausgang geben, wäre dies bestimmt einfach umzusetzen. Ich befürchte aber das bei Helligkeit der Bewegungsmelder abgeschaltet ist.
Mir ist nun aufgefallen, das der Scheinwerfer sehr häufig in der Dämmerung einschaltet. Keine Ahnung warum...ich vermute das die Lichtänderung schon als Bewegung erkannt wird. Oder schon die Temperaturschwankung...
Auch ein anderer Scheinwerfer, der nicht modifiziert wurde schaltet abends häufiger...also liegt es wohl nicht an der Modifikation.
Ist halt ein billiges Teil...
Gruß
Bismosa