Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tech:bedsensor

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:tech:bedsensor [2021/01/21 06:56] bullarde:tech:bedsensor [2022/11/13 20:11] (aktuell) – [Beispiel] bullar
Zeile 3: Zeile 3:
 ====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 seher hohe Anschaffungspreis.+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 und natürlich der meist sehr hohe Anschaffungspreis.
  
 {{:tech:bettsensor_prof.png?direct&300|Professioneller Bettsensor}} {{:tech:bettsensor_prof.png?direct&300|Professioneller Bettsensor}}
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 oder ESPHome
  
 ====Hardware==== ====Hardware====
Zeile 66: Zeile 66:
 {{ :tech:bedsensor_module.jpeg?direct&400 | Bedsensor offen}} {{ :tech:bedsensor_module.jpeg?direct&400 | Bedsensor offen}}
  
-====Programmierung====+====Programmierung (ESPEasy)====
  
 Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESPEasy]]. Im Link findet man auch Anleitungen wie die ESPEasy Firmware auf das Modul aufgespielt wird. Um in den Programmiermodus zu gelangen, muss beim Reset Release der Jumper SJ1 geschlossen sein. Die Programmierung erfolgt seriell über JP1 (USB-Serial Wandler). Nachdem die Hardware erstellt ist müssen wir noch das ESP Modul programmieren. Wir schon erwähnt basiert der Bettsensor auf [[https://www.letscontrolit.com/wiki/index.php/ESPEasy|ESPEasy]]. Im Link findet man auch Anleitungen wie die ESPEasy Firmware auf das Modul aufgespielt wird. Um in den Programmiermodus zu gelangen, muss beim Reset Release der Jumper SJ1 geschlossen sein. Die Programmierung erfolgt seriell über JP1 (USB-Serial Wandler).
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://www.home-assistant.io|Home Assistant]] lässt sich auch einfach mit [[https://esphome.io|ESPHome]] bewerkstelligen. Alle notwendigen information zum Programmieren findet man auch dort online.
 +Hier der passende Code für den Bedsensor:
 +
 +<code yaml>
 +esphome:
 +  name: bedsensor
 +  on_boot:
 +    then:
 +      - delay: 20s
 +      - output.turn_off: led_blue
 +
 +esp8266:
 +  board: esp01_1m
 +
 +# Enable logging
 +logger:
 +
 +# Enable Home Assistant API
 +api:
 +  encryption:
 +    key: "--key--"
 +
 +ota:
 +  password: "---password---"
 +
 +wifi:
 +  ssid: !secret wifi_ssid
 +  password: !secret wifi_password
 +
 +  # Enable fallback hotspot (captive portal) in case wifi connection fails
 +  ap:
 +    ssid: "Bedsensor Fallback Hotspot"
 +    password: "--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: 1s
 +    raw: true
 +    accuracy_decimals: 0
 +    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
 +</code>
 +
  
 ====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 durch das kurzzeitige Wegkuscheln auf die Bettmitte :-)  
  
 {{ :tech:bed?diagram.jpeg?direct&500 | Aufzeichnung einer Nacht}} {{ :tech:bed?diagram.jpeg?direct&500 | Aufzeichnung einer Nacht}}
de/tech/bedsensor.1611212189.txt.gz · Zuletzt geändert: 2021/01/21 06:56 (Externe Bearbeitung)