Website-Icon schleeh.de

Smartes Wohnmobil mit Home Assistant Teil 4

Smartes Wohnmobil mit Raspberry Pi und Home Assistant

Smartes Wohnmobil mit Raspberry Pi und Home Assistant

Automationen der Mehrwert von Home Assistant

Mit Automationen können wir uns über unsere Smart Home Installation vor ungewünschten Zuständen warnen oder automatisch Gegenmaßnahmen ergreifen lassen. Das möchte ich an einem Beispiel erklären. Über den Kühlrippen des Kühlschranks habe ich zwei PC-Lüfter eingebaut. Diese können von einem Sonoff-Relais geschaltet werden.

Im Sommer haben wir ab gewissen Temperaturen draußen Schwierigkeiten die Temperaturen im Kühlschrank niedrig zu halten. Mit Hilfe der PC-Lüfter kann die Abwärme des Kühlschrankes beschleunigt abgeführt werden. Das soll aber nur dann passieren, wenn es notwendig ist. Ich will das auch selbst nicht ständig überwachen. Das macht bei mir eine Automation.

Die Automation überwacht die Temperatur im Kühlschrank und schaltet beim Überschreiten eines von mir gewählten Temperaturwertes über das Sonoff-Relais die PC-Lüfter über den Kühlrippen an. Dazu erstellen wir ganz einfach eine Automation in Home Assistant unter „Einstellungen“ -> unten rechts „+ AUTOMATISIERUNG ERSTELLEN“ Hier legen wir zuerst bei „Auslöser“ über die Auswahl „123 Numerischer Zustand“ fest ab welcher Temperatur die Automation greifen soll. Unter „Bedingungen“ fragen wir ab, ob unsere Hilfs-Entität Kühlschrank_An (siehe unten) auch angeschaltet ist. Denn nur dann soll die Automation loslegen.

Unter „Aktionen“ „Gerät“ suchen wir nach dem Sonoff Relais und lassen dieses anschalten.

alias: Kuehlschrank_Luefter_An
description: "Wenn Kühlschrank schlecht kühlt schalte die PC-Lüfter an"
trigger:
  - platform: numeric_state
    entity_id: sensor.kuehlschrank_temperature
    above: 10
condition:
  - condition: state
    entity_id: input_boolean.kuhlschrank_an
    state: "on"
action:
  - service: sonoff.turn_on
    data: {}
mode: single

Hilfs-Entitäten oder selbst erstellte Schalter

Für manche Automationen oder zur Einstellung nicht messbarer Zustände im Wohnmobil wie in unserem Beispiel oben brauchen wir selbst erstellte Schalter oder Hilfs-Entitäten. Ich möchte das wieder am Beispiel des Kühlschranks deutlich machen:

Im Kühlschrank sind zwei Sensoren zur Temperatur Messung verbaut. Die Temperatur-Werte werden auf dem Floor-Plan über und unter dem Icon (Symbol) für den Kühlschrank angezeigt. Wenn der Kühlschrank angeschaltet ist, möchte ich natürlich nicht ständig drauf schauen und prüfen, ob die Temperaturen innerhalb der Grenzwerte sind. Dazu habe ich mir eine Automation eingerichtet, die die PC-Lüfter anschaltet und mich warnt, sobald die Temperatur im Kühlschrank oder dem Tiefkühlfach zu hoch ist. Diese Aktion und Warnung macht aber keinen Sinn, wenn ich das Wohnmobil mit ausgeräumtem und abgeschaltetem Kühlschrank in abgestellt habe. Genau dafür brauchen wir einen Hilfsschalter.

Den erstellen wir wie oben im Bild angezeigt unter 1. „Einstellungen“ -> „Geräte & Dienste“ -> 2. Oben rechts auf „Helfer“ dann unten rechts auf 3. „+ Helfer erstellen“ klicken. Im Drop-Down Menü runter scrollen bis „Umschalten“ sichtbar und das auswählen. Schon haben wir einen virtuellen Schalter für unsere Automation erstellt.
Sobald wir den Kühlschrank im Wohnmobil einschalten, schalten wir auch den virtuellen Schalter für den Kühlschrank in unserer Übersicht an. Der wird dann von grün zu rot und die Automation wird durchgeführt, sobald die Temperatur im Kühlschrank auf über 10° Celsius steigt.

Weitere virtuelle Schalter in meinem Floorplan sind, Wasser an Bord und Scharf stellen bei Abwesenheit.

Heizungssteuerung erstellen geht ganz leicht in Home Assistant

In meiner Openhab Lösung musste ich mir externe Unterstützung holen, um die Heizungssteuerung abbilden zu können. Das geht in Home Assistant ganz einfach. Wir brauchen dafür nur zwei Entitäten. Eine Temperaturmessung und einen Schalter / Relais um die Heizung anzuschalten. Wer wissen will, was ich dazu in meinem smarten Wohnmobil eingebaut habe, der kann das in der Beschreibung der Openhab Lösung nachlesen. Als Temperatursensor reicht uns in Home Assistant ein Shelly Plus H & T* oder wie in meinem Fall ein Ruuvi-Tag. Als Schalter nimmt man am einfachsten ein Sonoff-Relais.

Shelly Plus H&T Wireless Luftfeuchtigkeit und Temperatur Sensor, Hygrometer Monitor, Smart Home Automation, WLAN, Bluetooth, Kompatibel mit iOS- und Android-Anwendungen, E-Ink-Display, USB-C, Kompakt
  • Temperatur- und Feuchtigkeitsmessung für Ihr Smart Home
  • Anzeige der Messwerte direkt am stromsparenden E-Ink- Display
  • Übermittlung der Messwerte an die Shelly-App sowie wahlweise in die Shelly-Cloud
  • Betrieb wahlweise über 4 AA-Batterien (nicht inklusive) oder über separat erhältliches USB-C-Netzteil
  • kompatibel mit Alexa und Google Home
Sonoff Smart Wifi Schalter, DC 5V 12V 24V 32V Kabellos Relaismodul APP Fernbedienung Timer Schalter Kompatibel mit Amazon Alexa Google Home
  • Unterstützt WiFi-Netzwerk: Unterstützt eine Vielzahl von WiFi-Smart-Switches auf einem einzigen Smartphone. Support-Statusverfolgung: Der Status des Geräts, der EWeLink rechtzeitig zur Verfügung gestellt wird.
  • Ferngesteuertes Öffnen oder Schließen von angeschlossenen Geräten, wie Lichter, Wasserkocher, Reiskocher, elektrische Vorhänge, Garagentore usw.
  • Unterstützt bis zu 8 aktivierte Reservierungs- / Countdown- / Zyklus-Timer pro Gerät.
  • Sprachsteuerung: Perfekt kompatibel mit “Amazon“ Alexa für Google Home / Nest, IFTTT.
  • Sie können die Tippverzögerungszeit (500-36000000ms) in der App {0,5-600 Minuten} einstellen.

Aus den beiden Geräten erstellen wir ein so genanntes HVAC (heating, ventilating, and air conditioning) Gerät. Dazu braucht Ihr die genaue Bezeichung Euerer Entitäten des Shelly Plus und des Sonnoff-Relais. Bei mir sind das im Beispiel für das Sonoff-Relais „switch.sonoff_relais_heizung“ und „sensor.shelly_plus_HT_temperature“ für den Shelly, welcher die Temperatur Innen misst.

Damit schafft Ihr, nachdem Ihr Euer Home Assistant neu gestartet habt eine Heizungsregelung, die in unserem Fall „climate.heizung“ heißt. Über den Community Store HACS installieren wir dann noch das Frontend „Simple Thermostat“

Mit Hilfe des File Editors ruft Ihr Euere configuration.yaml auf und fügt unterhalb von sensor: das nachfolgende Skript ein. Dann die Configuration.yaml speichern und Home Assistant neu starten.

climate:
  - platform: generic_thermostat
    name: Heizung
    unique_id: 1155779911557
    heater: switch.sonoff_relais_heizung
    target_sensor: sensor.shelly_plus_HT_temperature
    min_temp: 5
    max_temp: 30
    ac_mode: false
    cold_tolerance: 1
    hot_tolerance: 1
    initial_hvac_mode: "off"

Damit können wir dann in unserer Übersicht eine neue Karte „Simple Thermostat“ hinzufügen. Die sieht bei mir so aus:

Steuerung Smartes Wohnmobil auf dem Grundrissplan (Floorplan)

In der letzten Folge haben wir die Geräte in Home Assistant eingerichtet. Nun werden wir einen so genannten interaktiven Floorplan erstellen. Dazu gibt es im Internet geniale Beispiele, wie man das mit seinem Zuhause machen kann. Aber so weit werden wir nicht gehen. Nur die Technik dahinter werden wir für unsere Darstellung für unser smartes Wohnmobil nutzen. Hier ein Beispiel eines Floor Plans, damit ihr Euch das vorstellen könnt.

Wie man einen Floorplan in Home Assistant erstellt wird auf englisch hier erklärt, oder in diesem YouTube Video:

Einrichtung eines Floorplans in Home Assistant

Steuerung Smart Wohnmobil über Alexa

Schalter sind ganz nett, aber der Schnee von gestern. Der moderne Nerd steuert seine Automationen, Lichter und andere Gadgets per Sprachsteuerung. Mit dem Befehl „Alexa, Lichter an!“ werden alle LED-Streifen im smarten Wohnmobil angeschaltet. Auch die Farbe lässt sich damit per Sprache einstellen. Mit dem Befehl „Alexa, alle Lichter rot!“ sollte man an bestimmten Stellen auf Ausfallstraßen vorsichtig sein, da das bei vorbei fahrenden Männern ein falsches Signal erzeugen könnte. Also besser „rot“ gegen „weiß“ tauschen.

Auch zur Sprachausgabe taugt der kleine Echo-Dot im Wohnmobil. Wer sich unbefugt Zutritt in mein Smartes Wohnmobil verschafft wird in Deutsch und Englisch drauf hingewiesen, das er nun fotografiert wird!

Wie Ihr Alexa in Euer smartes Wohnmobil unter Home Assistant integriert, das erklärt Euch Tristan in seinem YouTube Video.

Einer meiner Vorbilder für Home Assistant, Tristan erklärt wie Ihr Alexa in Home Assistant integriert

Mein Floorplan Code als Beispiel für Euch

Den Code meines Floorplans für mein Wohnmobil findet Ihr unter diesem Text. Ihr müsst darin natürlich alles auf Eueren Grundrissplan anpassen. Zudem müsst Ihr jeweils meine „entity“ Bezeichnung gegen Euere austauschen.

In meinem Plan habe ich vier verschiedene „-type:“
– „icon“
– „state-icon“ ist ein reines Icon, das erst mit Anklicken ein Fenster für Werte zum Ablesen oder Eingeben zeigt
– „state-label“ zeigt einen aktuellen Wert der „entity“ direkt im Floorplan an oder dient als Schalter für z. B. Licht oder einstellbare Zustände (Wasser an Bord – Frostwarnung an)

Die Platzierung der Icons und ausgegebenen Werte passt Ihr mit den Angaben „top: xx.x%“ und „left: xx.x%“ an. Probiert es einfach aus.

Die Symbole für die icons könnt Ihr auf dieser Seite aussuchen und dann ändern. Das Kürzel „mdi“ bedeutet „Material Design Icon“.

Mit „transform: scale(2)“ wird das icon doppelt so groß dargestellt. Mit scale(0.5) entsprechend halb so groß.

Mit „‚–paper-item-icon-color‘: rgb(0,120,255)“ könnt Ihr die Farbe des Icons Eueren Wünschen anpassen.

Mit „tap_action“ könnt Ihr bei einmaligem Antippen weitere Informationen anzeigen lassen. Mit „action: call-service“ und „service: browser_mod.popup“ werden uns die Popup-Fenster für die Heizungssteuerung und die Anzeige der Comworks-Sensoren aus dem Internet angezeigt.

Hier der Code meines Floorplans in Home Assistant. Den müsst Ihr nur an Euere Steuerung und Geräte anpassen.

views:
  - title: Home
    cards:
      - type: picture-elements
        elements:
          - type: state-icon
            icon: mdi:fire
            entity: climate.heizung
            style:
              top: 39.4%
              left: 68.8%
              transform: scale(2)
              '--paper-item-icon-color': rgb(0,0,0)
            tap_action:
              action: call-service
              service: browser_mod.popup
              data:
                content:
                  type: custom:simple-thermostat
                  entity: climate.heizung
                timeout: 10000
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: input_boolean.wasser
            icon: mdi:gauge
            style:
              top: 45.9%
              left: 28.8%
              transform: scale(2)
              '--paper-item-icon-color': rgb(0,120,255)
            tap_action:
              action: call-service
              service: browser_mod.popup
              data:
                content:
                  type: iframe
                  url: >-
                    https://portal.comworks.de/token/euereCOMWORKS-Wasser-Sensoren/dashboard
                  aspect_ratio: 80%
            double_tap_action:
              action: more-info
              timeout: 10000
          - type: state-icon
            entity: input_button.gas_stand
            icon: mdi:gas-cylinder
            style:
              top: 39.9%
              left: 21.8%
              transform: scale(2.6)
              '--paper-item-icon-color': rgb(255,255,0)
            tap_action:
              action: call-service
              service: browser_mod.popup
              data:
                content:
                  type: iframe
                  url: >-
                    https://portal.comworks.de/de/token/euereCOMWORKS-GAS-Sensoren/dashboard
                  aspect_ratio: 80%
            double_tap_action:
              action: more-info
              timeout: 10000
          - type: state-icon
            entity: light.front
            style:
              top: 17.7%
              left: 42%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(0,150,255)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: light.bodenlicht
            style:
              top: 54%
              left: 42%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(0,150,255)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: light.rechts
            style:
              top: 82%
              left: 66%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(0,150,255)
              '--paper-item-icon-active-color': rgb(255,0,0)
            hold_action:
              action: more-info
            tap_action:
              action: toggle
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: light.links
            style:
              top: 82%
              left: 26%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(0,150,255)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
          - type: state-icon
            entity: light.stauraum
            style:
              top: 90%
              left: 46%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(0,150,255)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: binary_sensor.rechts_tuer
            style:
              top: 26%
              left: 85%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.links_tuer
            style:
              top: 26%
              left: 7%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.eingang_tuer
            style:
              top: 48%
              left: 86%
              transform: scale(3.8)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: input_boolean.frostschutz_wasser
            style:
              top: 45%
              left: 66%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
          - type: state-icon
            entity: input_boolean.alarm_on
            style:
              top: 72.4%
              left: 46%
              transform: scale(2.4)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
            double_tap_action:
              action: more-info
          - type: state-icon
            entity: input_boolean.fridge_on
            style:
              top: 66.8%
              left: 22%
              transform: scale(1.4)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
            tap_action:
              action: toggle
            hold_action:
              action: more-info
          - type: state-icon
            entity: binary_sensor.fenster_side
            icon: null
            style:
              top: 43%
              left: 6%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.dachluke_top
            style:
              top: 37.5%
              left: 48.9%
              transform: scale(2.7)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.stauraum_rechts_door
            style:
              top: 87%
              left: 86%
              transform: scale(3.3)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.stauraum_links_door
            style:
              top: 87%
              left: 6%
              transform: scale(2.5)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.wassersensor_unterboden
            style:
              top: 34%
              left: 70%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.shelly_vibration
            style:
              top: 59.9%
              left: 46%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            entity: binary_sensor.shelly_motion
            style:
              top: 65.5%
              left: 46%
              transform: scale(2)
              '--paper-item-icon-color': rgb(10,200,20)
              '--paper-item-icon-active-color': rgb(255,0,0)
          - type: state-icon
            icon: mdi:cctv
            entity: camera.yi_cam
            style:
              top: 61.5%
              left: 29.0%
              transform: rotateY(180deg) scale(2) rotate(75deg)
          - type: state-icon
            icon: mdi:cctv
            entity: camera.yi_2_cam
            style:
              top: 34.5%
              left: 20.0%
              transform: rotateY(180deg) scale(2) rotate(0deg)
              '--paper-item-icon-color': rgb 0,0,0)
              '--paper-item-icon-active-color': rgb(0,0,0)
          - type: state-label
            entity: sensor.tiefkuehl_temperature
            style:
              top: 66.4%
              left: 27%
              text-align: center
              font-size: 14px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.fridge_temperature
            style:
              top: 71%
              left: 27%
              text-align: center
              font-size: 14px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.innendoor_temperature
            style:
              top: 51%
              left: 75%
              text-align: center
              font-size: 20px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.unterboden_temperature
            style:
              top: 62%
              left: 8.8%
              text-align: center
              font-size: 16px
              font-weight: bold
              color: blue
              font-family: Helvetica
          - type: state-label
            entity: sensor.stauraum_temperature
            style:
              top: 94%
              left: 70.4%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: blue
              font-family: Helvetica
          - type: state-label
            entity: sensor.innendoor_humidity
            style:
              top: 52.9%
              left: 76.2%
              text-align: center
              font-size: 16px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.innendoor_pressure
            style:
              top: 54.5%
              left: 73.0%
              text-align: center
              font-size: 16px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.aussen_humidity
            style:
              top: 63.6%
              left: 8.5%
              text-align: center
              font-size: 16px
              font-weight: bold
              color: blue
              font-family: Helvetica
          - type: state-label
            entity: sensor.shelly_temperature
            style:
              top: 56.4%
              left: 24.0%
              text-align: center
              font-size: 16px
              font-weight: bold
              color: black
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_starteractvoltagev
            style:
              top: 25.8%
              left: 50.4%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: white
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_batteryactvolt
            style:
              top: 30.8%
              left: 38.0%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: blue
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_solaractwatt
            style:
              top: 40.8%
              left: 38.5%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: green
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_solaractampere
            style:
              top: 34.2%
              left: 39.8%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: green
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_batteryactampere
            style:
              top: 30.9%
              left: 66.0%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: red
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_solarwh
            style:
              top: 36.2%
              left: 38.8%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: green
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_solarah
            style:
              top: 42.8%
              left: 39.3%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: green
              font-family: Helvetica
          - type: state-label
            entity: sensor.bb_batteryactsoc
            style:
              top: 28.8%
              left: 37.0%
              text-align: center
              font-size: 18px
              font-weight: bold
              color: blue
              font-family: Helvetica
          - type: state-icon
            entity: input_boolean.tanks
            icon: mdi:crosshairs-gps
            style:
              top: 83.5%
              left: 45.4%
              transform: scale(2.2)
              '--paper-item-icon-color': rgb(100,5,180)
            tap_action:
              action: call-service
              service: browser_mod.popup
              data:
                content:
                  type: map
                  entities:
                    - entity: device_tracker.womo
              hours_to_show: 48
              dark_mode: false
            double_tap_action:
              action: call-service
              timeout: 10000
          - type: state-icon
            entity: input_button.reifen
            icon: mdi:car-tire-alert
            style:
              top: 13.8%
              left: 46.1%
              transform: scale(1.8)
              '--paper-item-icon-color': rgb(200,20,120)
            tap_action:
              action: call-service
              service: browser_mod.popup
              data:
                content:
                  type: iframe
                  url: >-
                    https://portal.comworks.de/token/euereCOMWORKS-REIFENDRUCK-Sensoren/dashboard
                  aspect_ratio: 110%
            double_tap_action:
              action: more-info
              timeout: 10000
        image: local/pt695eb.png

Ende der Reihe Smartes Wohnmobil

Damit sind wir am Ende unserer vierteiligen Serie zum smarten Wohnmobil mit Home Assistant. Mich würde interessieren, was Ihr so an Sensoren und Aktoren in Eurem Wohnmobil verbaut und welche Automationen Ihr dafür erstellt habt? Schreibt es mir in die Kommentare.

Die mobile Version verlassen