Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:tech:bedsensor [2021/01/19 03:31] – bullar | de:tech:bedsensor [2022/11/13 20:11] (aktuell) – [Beispiel] bullar | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | =====Bed Sensor===== | + | =====Bett Sensor===== |
====Motivation==== | ====Motivation==== | ||
- | Jeder der mit dem Thema Smart Home infiziert hat, überlegt fast kontinuierlich wie er/sie noch manuelle, wiederkehrende Aufgaben automatisieren kann. Vorausgesetzt die passenden Sensoren und Aktuatoren sind schon vorhanden. Ein Sensorbereich der etwas unterrepräsentiert erscheint, ist der Belegungssensor um z.B. durch den Gang ins Bett Aktionen auszulösen oder zu unterlassen. \\ | + | Jeder der sich mit dem Thema Smart Home infiziert hat, überlegt fast kontinuierlich wie er/sie noch manuelle, wiederkehrende Aufgaben automatisieren kann. Vorausgesetzt die passenden Sensoren und Aktuatoren sind schon vorhanden. Ein Sensorbereich der etwas unterrepräsentiert erscheint, ist der Belegungssensor um z.B. durch den Gang ins Bett Aktionen auszulösen oder zu unterlassen. \\ |
- | Es gibt Alarmmatten als Bettvorleger oder professionelle Bettsensoren aus dem Pflegebereich. Auch die Sitzsensoren aus der Automobilindustrie erfüllen eine ähnliche Aufgabe. Allen gemeinsam ist aber die fehlende Anbindung an ein offenes Protokoll wie z.B. MQTT und natürlich der meist seeher | + | Es gibt Alarmmatten als Bettvorleger oder professionelle Bettsensoren aus dem Pflegebereich. Auch die Sitzsensoren aus der Automobilindustrie erfüllen eine ähnliche Aufgabe. Allen gemeinsam ist aber die fehlende Anbindung an ein offenes Protokoll wie z.B. MQTT oder Home Assistant |
{{: | {{: | ||
Zeile 18: | Zeile 18: | ||
Beim FSR 408 lässt sich der vorliegende Druck 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:// |
{{ : | {{ : | ||
Zeile 27: | Zeile 27: | ||
* Zwei Sensoreingänge für ein Doppelbett | * Zwei Sensoreingänge für ein Doppelbett | ||
* WLAN Einbindung | * WLAN Einbindung | ||
- | * MQTT Protokoll | + | * MQTT Protokoll |
====Hardware==== | ====Hardware==== | ||
Zeile 66: | Zeile 66: | ||
{{ : | {{ : | ||
- | ====Programmierung==== | + | ====Programmierung |
Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https:// | Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https:// | ||
Zeile 135: | Zeile 135: | ||
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. | 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. | 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. | ||
+ | |||
+ | ====Programmierung (ESPHome)==== | ||
+ | Die Integration in [[https:// | ||
+ | Hier der passende Code für den Bedsensor: | ||
+ | |||
+ | <code yaml> | ||
+ | esphome: | ||
+ | name: bedsensor | ||
+ | on_boot: | ||
+ | then: | ||
+ | - delay: 20s | ||
+ | - output.turn_off: | ||
+ | |||
+ | esp8266: | ||
+ | board: esp01_1m | ||
+ | |||
+ | # Enable logging | ||
+ | logger: | ||
+ | |||
+ | # Enable Home Assistant API | ||
+ | api: | ||
+ | encryption: | ||
+ | key: " | ||
+ | |||
+ | ota: | ||
+ | password: " | ||
+ | |||
+ | wifi: | ||
+ | ssid: !secret wifi_ssid | ||
+ | password: !secret wifi_password | ||
+ | |||
+ | # Enable fallback hotspot (captive portal) in case wifi connection fails | ||
+ | ap: | ||
+ | ssid: " | ||
+ | password: " | ||
+ | |||
+ | captive_portal: | ||
+ | |||
+ | switch: | ||
+ | - platform: gpio | ||
+ | pin: GPIO12 | ||
+ | id: sensor_select | ||
+ | internal: true | ||
+ | |||
+ | output: | ||
+ | - platform: gpio | ||
+ | pin: GPIO2 | ||
+ | inverted: true | ||
+ | id: led_blue | ||
+ | |||
+ | sensor: | ||
+ | - platform: adc | ||
+ | pin: A0 | ||
+ | id: bed_raw_adc | ||
+ | update_interval: | ||
+ | raw: true | ||
+ | accuracy_decimals: | ||
+ | internal: true | ||
+ | on_raw_value: | ||
+ | then: | ||
+ | - lambda: |- | ||
+ | if (id(sensor_select).state) { | ||
+ | if (x < 50) { | ||
+ | id(bed_sensor_2).publish_state(false); | ||
+ | } else { | ||
+ | id(bed_sensor_2).publish_state(true); | ||
+ | } | ||
+ | id(sensor_select).turn_off(); | ||
+ | } else { | ||
+ | if (x < 50) { | ||
+ | id(bed_sensor_1).publish_state(false); | ||
+ | } else { | ||
+ | id(bed_sensor_1).publish_state(true); | ||
+ | } | ||
+ | id(sensor_select).turn_on(); | ||
+ | } | ||
+ | |||
+ | binary_sensor: | ||
+ | - platform: template | ||
+ | name: "Bed Sensor 1" | ||
+ | id: bed_sensor_1 | ||
+ | |||
+ | - platform: template | ||
+ | name: "Bed Sensor 2" | ||
+ | id: bed_sensor_2 | ||
+ | </ | ||
+ | |||
====Beispiel==== | ====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 : | + | Hier die Aufzeichnung der konvertierten Werte [0..1023] einer Nacht. Die Drops sind nicht bedingt durch eine altersbedingte Inkontinenz sondern |
{{ : | {{ : | ||
Zeile 153: | Zeile 240: | ||
* [[http:// | * [[http:// | ||
+ | ==== Spenden ==== | ||
+ | |||
+ | Wenn ihr meine Arbeit unterstützen wollt, so könnt ihr mir gerne einen Cappuccino oder so spenden: . | ||
+ | |||
+ | < | ||
+ | |||
+ | <form action=" | ||
+ | <input type=" | ||
+ | <input type=" | ||
+ | <img alt="" | ||
+ | </ | ||
+ | |||
+ | </ |