This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tech:bedsensor [2020/10/08 18:13] – [Motivation] bullar | tech:bedsensor [2020/10/13 17:26] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
====Motivation==== | ====Motivation==== | ||
- | Jeder der mit dem Thema Smart Home infiziert | + | Jeder der mit dem Thema Smart Home infiziert |
- | Es gibt Alarmmatten oder professionelle | + | Es gibt Alarmmatten |
- | {{ : | + | {{: |
+ | {{: | ||
- | Einige findige Entwickler sind die Lücke angegangen und haben z.B. Schalter in das Bettgestell integriert [[https:// | + | Einige findige Entwickler sind diese Lücke angegangen und haben z.B. Schalter in das Bettgestell integriert [[https:// |
- | 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 [[https:// | + | 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 [[https:// |
{{ : | {{ : | ||
{{ : | {{ : | ||
+ | {{ : | ||
- | Das lässt sich mit einen einfachen Widerstandsnetzwerk und einem A/D Wandler oder Comparator auswerten. | + | Beim FSR 408 lässt sich der vorliegende Druck leicht |
- | 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 [[https:// | + | 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 [[https:// |
{{ : | {{ : | ||
====Features==== | ====Features==== | ||
- | Die Lösung sollte folgende Anforderungen erfüllen: | + | Die Lösung |
- | * Belegungsauswertung über druckempfindlichen Widerstand (FSR 408) | + | * Belegungsauswertung über druckempfindlichen Widerstand (z.B. FSR 408) |
* Zwei Sensoreingänge für ein Doppelbett | * Zwei Sensoreingänge für ein Doppelbett | ||
* WLAN Einbindung | * WLAN Einbindung | ||
Line 29: | Line 31: | ||
====Hardware==== | ====Hardware==== | ||
- | Das Widerstandsnetzwerk zur Auswertung sieht wie folgt aus: | + | Das Widerstandsnetzwerk zur Auswertung |
{{ : | {{ : | ||
- | Die Ausgangsspannung zum ADC berechnet sich so: | + | Die Ausgangsspannung zum ADC berechnet sich damit so: |
V_ADC = Vcc ( R2 / (R2 + R1) ) | V_ADC = Vcc ( R2 / (R2 + R1) ) | ||
Line 39: | Line 41: | ||
wobei Vcc = 3.3V ist. Die entsprechenden Spannungswerte zu den Stützstellen des Kraftdiagramms sind in der Tabelle aufgelistet: | wobei Vcc = 3.3V ist. Die entsprechenden Spannungswerte zu den Stützstellen des Kraftdiagramms sind in der Tabelle aufgelistet: | ||
- | ^ Force \\ [kg] ^ FSR Resistance | + | ^ Force \\ [kg] ^ FSR Resistance |
- | | 0.1 | 6 | 0.05 | | + | | 0.1 | 6 | 0.05 |
- | | 0.5 | 2 | 0.16 | | + | | 0.5 | 2 | 0.16 |
- | | 1.0 | 1.2 | 0.25 | | + | | 1.0 | 1.2 | 0.25 |
- | | 2.0 | 0.75 | 0.39 | | + | | 2.0 | 0.75 | 0.39 |
- | | 4.0 | 0.45 | 0.60 | | + | | 4.0 | 0.45 | 0.60 |
- | | 7.0 | 0.30 | 0.83 | | + | | 7.0 | 0.30 | 0.83 |
- | | 10.0 | 0.25 | 0.94 | | + | | 10.0 | 0.25 | 0.94 |
- | Der Maximalwert sollte 1V nicht überschreiten, | + | Der Maximalwert sollte |
{{ : | {{ : | ||
+ | Natürlich kann man auch nur einen FSR408 mit R2 direkt an das Modul anschliessen und umgeht so eventuell sogar die Platine mit einer Freiverdrahtung. | ||
+ | Um das Modul möglichst klein zu halten ist die Schaltung in SMD ausgeführt. Geeignete Heim-Löttechniken sind ja schon an verschiedenen Stellen veröffentlich worden. | ||
+ | {{ : | ||
+ | |||
+ | Der Anschluss der Sensoren erfolgt über Standard 2.5mm Klinkenbuchsen (JY029). Die Spannungsversorgung ist auch steckbar mit einer 5.5/2.1mm Hohlbuchse (HEBW21). Hierzu findet man sehr preiswerte [[https:// | ||
+ | Mit einem 3D Drucker lässt sich dann noch ein unauffälliges Gehäuse verwirklichen was man leicht mit doppelseitigen Klebeband unterhalb des Bettes befestigen kann. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====Programmierung==== | ||
+ | |||
+ | Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https:// | ||
+ | |||
+ | Wenn alles geklappt hat und das Modul im heimischen WLAN eingebunden ist, kann die gesamte weitere Einstellung über das Webinterface erfolgen. Dazu benötigen wir: | ||
+ | * MQTT Controller setup | ||
+ | * Device Setup | ||
+ | * Rules Setup | ||
+ | |||
+ | ===MQTT Controller setup=== | ||
+ | Der Bettsensor soll sich ja mit einem vorhandenen MQTT Server verbinden und die aktuelle Belegungsinformation bei Änderung dorthin übertragen. Dazu gehen wir auf den Reiter // | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===Devices=== | ||
+ | Als zweites brauchen wir ein Device was den analogen Wert misst und speichert. Das lässt sich über den Reiter //Devices// erreichen. Für jeden Sensor gibt es ein eigenes Device und zusätzlich benötigen wir noch ein Dummy Device um den vorherigen Messewert zwischen zu speichern. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Die grünen Zahlen rechts geben übrigens die aktuellen Messwerte wieder. In dem Beispiel liegt keiner im Bett.\\ | ||
+ | Hier die Einstellungen für die Devices: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | ===Rules=== | ||
+ | Nun haben wir eine Anbindung an den MQTT Server und wir können die Messwerte des ADC abfragen. Was fehlt ist die Ablaufsteuerung. Innerhalb des ESPEasy gibt es dafür die //Rules//: | ||
+ | Dazu den folgenden Code in das Rules Set 1 kopieren. | ||
- | ====Rules==== | ||
< | < | ||
On System#Boot do | On System#Boot do | ||
Line 93: | Line 131: | ||
endon | endon | ||
</ | </ | ||
+ | |||
+ | Während des SystemBoot setzen wir den Multiplexer entsprechend auf Eingang 1, die Startwerte auf 100 und einen Timer der jede Sekunde die folgende Routine aufruft. | ||
+ | Jede Sekunde werden dann beide Werte ausgelesen und wenn es eine Veränderung um den Schwellwert gegeben hat, wird das Ergebnis an den MQTT Server gesendet. Das sind die Zustände IN bzw. OUT. Man kann natürlich auch die aktuellen Werte übermitteln und die Entscheidung ob IN oder OUT der Homeautomatisierung überlassen. Im folgenden Beispiel habe ich so mal eine Nacht aufgezeichnet. | ||
+ | |||
+ | ====Beispiel==== | ||
+ | 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 Bettmitte : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ====Fazit==== | ||
+ | Der Bettsensor läuft jetzt seit 2 Jahren ohne Probleme. Je nachdem wie stabil das heimische WLAN ist kann aber mal ein Neustart des Bettsensors notwendig werden. | ||
+ | |||
+ | ====Downloads==== | ||
+ | * {{: | ||
+ | * {{: | ||
+ | * {{: | ||
+ | |||
+ | ====Links==== | ||
+ | * [[http:// | ||
+ | |||
+ |