TechWiki
GW60 Rollo
- GW60 Superrollo
- Hardware
- Programming
- S/W extension
- TRADFRI Modul
- Modul H/W
- Programming
- Tools
- GW60 TRADFRI adapter
- Schematic
- Programming adapter
- Housing
- Integration
This is an old revision of the document!
Jeder der mit dem Thema Smart Home infiziert wurde überlegt fast kontinuierlich wie er/sie manuelle, wiederkehrende Aufgaben automatisieren kann. Vorausgesetzt genügend Sensoren und Aktuatoren sind schon vorhanden. Ein Bereich der etwas unterrepräsentiert erscheint ist der Belegungssensor um z.B. durch den Gang ins Bett Aktionen auszulösen.
Es gibt Alarmmatten oder professionelle Belegungssensoren aus dem Pflegebereich. Auch die Sitzsensoren aus der Automobilindustrie erfüllen eine ähnliche Aufgabe. Allen gemeinsam ist die fehlende Anbindung an ein offenes Protokoll wie MQTT und natürlich der eher hohe Anschaffungspreis.
Einige findige Entwickler sind die Lücke angegangen und haben z.B. Schalter in das Bettgestell integriert Selbstgebauter Bettsensor... Steuern und Regeln im Schlaf!
Mein Ansatz sieht etwas anders aus um möglichst minimalinvasiv für das Bettgestellt zu sein. Als Sensor verwende ich einen druckempfindlichen Widerstand (force-sensitive resistor FSR). Den gibt es auch in einer extra langen Version von 60cm FSR 408. Unbelastet ist der Widerstand hochohmig (>10MOhm) und bei 10kg Belastung reduziert sich der Wert auf wenige 100 Ohm. Der Sensor ist selbstklebend und lässt sich einfach auf einem Lattenrost befestigen.
Das lässt sich mit einen einfachen Widerstandsnetzwerk und einem A/D Wandler oder Comparator auswerten. Um die Auswertung dann auch ins Smart Home Netzwerk zu bekommen gibt es mehrere Möglichkeiten. Eine der einfachsten ist ein ESP8266 Modul (ESP-07) mit der Open/Source Firmware ESP Easy
Die Lösung sollte folgende Anforderungen erfüllen:
Das Widerstandsnetzwerk zur Auswertung des Drucks sieht wie folgt aus:
Die Ausgangsspannung zum ADC berechnet sich daher so:
V_ADC = Vcc ( R2 / (R2 + R1) )
wobei Vcc = 3.3V ist. Die entsprechenden Spannungswerte zu den Stützstellen des Kraftdiagramms sind in der Tabelle aufgelistet:
Force [kg] | FSR Resistance [KOhm] | V_ADC [V] | Digital Value [dec] |
---|---|---|---|
0.1 | 6 | 0.05 | 51 |
0.5 | 2 | 0.16 | 164 |
1.0 | 1.2 | 0.25 | 256 |
2.0 | 0.75 | 0.39 | 399 |
4.0 | 0.45 | 0.60 | 614 |
7.0 | 0.30 | 0.83 | 849 |
10.0 | 0.25 | 0.94 | 962 |
Der Maximalwert sollte 1V nicht überschreiten, da beim ESP-07 die interne analoge Referenzspannung 1V beträgt. Zusätzlich benötigen wir noch einen Multiplexer um zwei Sensoren auswerten zu können. Der vollständige Schaltplan ist trotzdem noch sehr übersichtlich.
Natürlich kann man auch nur einen FSR408 mit R2 direkt an das Modul anschliessen und umgeht so eventuell die Platine.
Um das Modul möglichst klein zu halten ist die Schaltung in SMD ausgeführt.
Der Anschluss der Sensoren erfolgt über einen standard 3.5mm
Hier die Aufzeichnung der konvertierten Werte [0..1023] einer Nacht. Die Drops sind nicht bedingt durch eine altersbedingte Inkontinenz sondern das kurzzeitige Wegkuscheln auf die andere Betthälfte
On System#Boot do gpio,12,0 TaskValueSet 3,1,100 // default value at boot TaskValueSet 3,2,100 // default value at boot timerSet,1,1 endon On Rules#Timer=1 do TaskRun,1 // Measure Bed 1 GPIO,12,1 TaskRun,2 // Measure Bed 2 GPIO,12,0 if [sensor_1#analog] < 50 and [BedStatus#Bed1_Prev] > 49 TaskValueSet 3,1,[sensor_1#analog] publish /home-assistant/%sysname%/sensor_1/analog,OUT endif if [sensor_1#analog] > 49 and [BedStatus#Bed1_Prev] < 50 TaskValueSet 3,1,[sensor_1#analog] publish /home-assistant/%sysname%/sensor_1/analog,IN endif if [sensor_2#analog] < 50 and [BedStatus#Bed2_Prev] > 49 TaskValueSet 3,2,[sensor_2#analog] publish /home-assistant/%sysname%/sensor_2/analog,OUT endif if [sensor_2#analog] > 49 and [BedStatus#Bed2_Prev] < 50 TaskValueSet 3,2,[sensor_2#analog] publish /home-assistant/%sysname%/sensor_2/analog,IN endif TimerSet,1,1 endon