MQTT + Shelly 1L: Bewegungssteuerung bei „aus“

Hier wird an elektrischen Leitungen gearbeitet. Das darf nur durch qualifiziertes Fachpersonal erfolgen. Ruft bitte den Elektriker eures Vertrauens an, um den Shelly montieren zu lassen.
Deaktiviert Cloud-Funktionalität des Shellys

Unsere Auffahrt ist im Dunkeln dunkel (obviously). Bei Bedarf schalten wir auf dieser ein paar Lampen per Lichtschalter im Haus; was sehr leicht ist, wenn man im Haus ist, allerdings sehr schwierig, wenn man im Dunkeln erst die Tür suchen und aufschließen muss, um an die Schalter zu kommen.

Im aktuellen Szenario habe ich eine Hikvision Kamera an HomeAssistant angebunden. Diese fungiert als Motion-Sensor, jeder andere tatsächliche Bewegungssensor tut es allerdings auch.

Ich möchte den vorhandenen Lichtschalter umbauen. Ist er auf „aus“, soll das Licht auf der Kamera bei Bewegung für 15 Minuten eingeschaltet werden – genug, um im Dunkeln zur Tür zu stolpern und diese aufzuschließen. Ist der vorhandene Lichtschalter auf „ein“, soll das Licht auf der Auffahrt immer eingeschaltet sein.

Der Shelly ist eingebaut, durchkonfiguriert und per WLAN verbunden. Er lässt sich ein- und ausschalten. Der Shelly ist ebenfalls bereits per hauseigener Integration in Home Assistant eingebunden. Im ersten Relay des Shellys habe ich den Kippschalter angeschlossen (Schalter schließt stumpf die zwei Kontakte kurz, oder auch nicht, siehe Handbuch des Shellys).

MQTT ist in Home Assistant hinterlegt, ein MQTT-Benutzer speziell für den Shelly wurde schon eingerichtet. Falls nicht, hier eine kleine Anleitung, wie dies funktioniert.

Hinterlegung des MQTT-Brokers im Shelly

IP des Shellys im Browser des Vertrauens eingeben. Unter Netzwerk & Internet > Erweitert folgende Einstellungen analog tätigen:

Damit beim Umlegen des Schalters der Shelly nicht auch noch in unseren Masterplan funkt, setzen wir im Shelly unter Settings noch folgende Einstellung:

Dadurch schaltet der Shelly nicht selbstständig. Alle Änderungen werden durch Home Assistant durchgeführt und wir müssen nichts weiter beachten, was den ggf. vorhandenen Status des Shellys angeht.

Herausfinden der Shelly-Kennung

Zum Debuggen von MQTT nutze ich gerne den „MQTT Explorer“. Nachdem der angeschmissen und ein bisschen am Schalter gespielt wurde, kam heraus, dass folgender Wert sich ändert – „1“ bei Schalter ein, „0“ bei Schalter aus:

Hinterlegen des Sensors in Home Assistant

configuration.yaml:

binary_sensor:
  - platform: mqtt
    name: "auffahrt_switch_mqtt"
    unique_id: "auffahrt_switch_mqtt"
    expire_after: 36000
    device_class: power
    payload_on: "1"
    payload_off: "0"
    qos: 1
    state_topic: "shellies/shelly1l-84CCA8ADB36E/input/0"

Hier der Hinweis: das state_topic müsst ihr natürlich anpassen. Der Pfad entspricht dem Ausgelesenem aus dem MQTT-Explorer, die „0“ ist der erste Eingang.

Routine 1: Legen des Schalters auf „ein“ schaltet das Licht ein

Sehr spannend (nicht):

alias: Licht - Auffahrt Schalter ein
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.auffahrt_switch_mqtt
    from: 'off'
    to: 'on'
condition: []
action:
  - type: turn_on
    device_id: 9410de23da31f719f17a1139047c67a5
    entity_id: switch.auffahrt
    domain: switch
mode: single

Routine 2: Legen des Schalters auf „aus“ schaltet das Licht aus

Mindestens genau so spannend:

alias: Licht - Auffahrt Schalter aus
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.auffahrt_switch_mqtt
    from: 'on'
    to: 'off'
condition: []
action:
  - type: turn_off
    device_id: 9410de23da31f719f17a1139047c67a5
    entity_id: switch.auffahrt
    domain: switch
mode: single

Routine 3: Bei Bewegung und Schalter „aus“ Licht für 15 Minuten einschalten

Kleiner Hinweis hier: als Zusatzbedingung ist noch vorhanden, dass das nur nach Sonnenuntergang passiert.

alias: Licht - Auffahrt
description: ''
trigger:
  - platform: state
    entity_id: binary_sensor.driveway_motion
    to: 'on'
condition:
  - condition: state
    entity_id: sun.sun
    state: below_horizon
action:
  - condition: state
    entity_id: binary_sensor.auffahrt_switch_mqtt
    state: 'off'
  - type: turn_on
    device_id: 9410de23da31f719f17a1139047c67a5
    entity_id: switch.auffahrt
    domain: switch
  - delay:
      hours: 0
      minutes: 15
      seconds: 0
      milliseconds: 0
  - condition: state
    entity_id: binary_sensor.auffahrt_switch_mqtt
    state: 'off'
  - type: turn_off
    device_id: 9410de23da31f719f17a1139047c67a5
    entity_id: switch.auffahrt
    domain: switch
mode: single

Die Bedingungen innerhalb der Actions habe ich aus zwei Gründen – einmal, weil warum auch nicht, und zum anderen, weil es sein kann, dass in den 15 Minuten warten auf manuell umgestellt wurde. Und dann soll das Licht ja definitiv nicht ausgeschaltet werden.

Kategorie: Home Assistent