This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tech:bedsensor [2020/10/09 19:24] – [Programmierung] 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:// | ||
Line 14: | Line 15: | ||
{{ : | {{ : | ||
{{ : | {{ : | ||
+ | {{ : | ||
- | Der vorliegende Druck lässt sich leicht mit einen einfachen Widerstandsnetzwerk und einem A/D Wandler oder Comparator auswerten. | + | Beim FSR 408 lässt sich der vorliegende Druck leicht 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 [[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 33: | Line 35: | ||
{{ : | {{ : | ||
- | Die Ausgangsspannung zum ADC berechnet sich daher so: | + | Die Ausgangsspannung zum ADC berechnet sich damit so: |
V_ADC = Vcc ( R2 / (R2 + R1) ) | V_ADC = Vcc ( R2 / (R2 + R1) ) | ||
Line 48: | Line 50: | ||
| 10.0 | 0.25 | 0.94 | 962 | | | 10.0 | 0.25 | 0.94 | 962 | | ||
- | 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 die Platine. | + | Natürlich kann man auch nur einen FSR408 mit R2 direkt an das Modul anschliessen und umgeht so eventuell |
- | Um das Modul möglichst klein zu halten ist die Schaltung in SMD ausgeführt. | + | 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 eine standard | + | Der Anschluss der Sensoren erfolgt über Standard |
- | Mit einem 3D Drucker lässt sich dann noch ein unauffälliges Gehäuse verwirklichen. | + | Mit einem 3D Drucker lässt sich dann noch ein unauffälliges Gehäuse verwirklichen |
{{ : | {{ : | ||
Line 65: | Line 67: | ||
====Programmierung==== | ====Programmierung==== | ||
- | Nachdem die Hardware erstellt | + | Nachdem die Hardware erstellt |
- | 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 | + | 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 | * MQTT Controller setup | ||
* Device Setup | * Device Setup | ||
Line 73: | Line 75: | ||
===MQTT Controller setup=== | ===MQTT Controller setup=== | ||
- | Der Bettsensor soll sich ja mit einem vorhandenen MQTT Server verbinden und die aktuelle Belegungsinformation bei Änderung dorthin übertragen. Dazu geben wir auf den Reiter // | + | 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=== | ===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 | + | 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 |
{{ : | {{ : | ||
- | Die grünen Zahlen rechts geben übrigens die aktuelle Messwert | + | Die grünen Zahlen rechts geben übrigens die aktuellen Messwerte |
Hier die Einstellungen für die Devices: | Hier die Einstellungen für die Devices: | ||
Line 88: | Line 90: | ||
{{: | {{: | ||
+ | ===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. | ||
- | ====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 andere Betthälfte : | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | |||
- | |||
- | ====Rules==== | ||
< | < | ||
On System#Boot do | On System#Boot do | ||
Line 136: | 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:// | ||
+ | |||
+ |