Sonoff heeft een hele serie aan vrij goedkope devices beschikbaar en deze kunnen via Internet aangeschaft worden bij de vele aanbieders van Sonoff.

eWeLink

Sonoff devices voor de home automation worden geproduceerd door iTead en werken met een app van iTead, eWeLink. Deze app kan opgehaald worden in de store voor je mobile en eenmaal opgestart dient een account gemaakt te worden. Na de registratie kunnen de devices toegevoegd worden in de app en hiermee ook bediend worden. Je WiFi accesspoint moet dan ook ingesteld worden.

Er is een plugin voor Home Assistant beschikbaar waarmee eWeLink devices aangestuurd kunnen worden in Home Assistant. Klik op onderstaande afbeelding voor een uitleg. (Engels)

Sonoffs can work with Home Assistant without changing the Firmware!

Een bijkomend voordeel van de Sonoff devices is dat ze ook bediend kunnen worden met een RF Remote die signalen stuurt via 433MHz. Hiervoor is een RF module ingebouwd in de Sonoff devices. Naast de remote control kunnen ook andere apparaten signalen versturen via 433MHz die door de Sonoff devices opgepikt kunnen worden. Denk hierbij aan bewegingsmelders, raam/deur-contacten, water-detectie, etc…

Er is hiervoor een RF-Bridge beschikbaar om 433MHz signalen op te vangen en door te sturen via WiFi, uitermate geschikt voor het ‘slimme huis’.

RF-Link

Met een firmware-wijziging voor de WiFi module van deze RF-Bridge naar Tasmota of OpenMqttGateway, kunnen MQTT berichten worden verstuurd naar een MQTT-broker. Hiermee wordt de device-signaal afhandeling onafhankelijk van het Internet gemaakt en is de eWeLink app ook niet meer nodig. Handig indien de bediening via bv. Home Assistant loopt! Het flashen van de chip wordt op die sites uitgelegd en er zijn diverse Youtube filmpjes van te vinden.

Switches

Voor het schakelen van 230V apparaten zijn er een aantal Sonoff switches verkrijgbaar. Ik gebruik de ‘Sonoff Basic‘ en de ‘Sonoff Mini‘. De basic kan gemonteerd worden aan een stroomkabel, de mini wordt ingebouwd in een WCD.

Basic
Mini

De mini heeft ook de mogelijkheid om de een ‘gewone’ wand-schakelaar aan te sluiten zodat deze zijn originele functie behoudt. Hiervoor dient GPIO04 aan de switch gekoppeld te worden in de configuration.

Om deze modules te kunnen gebruiken in Home Assistant kunnen ze aan eWeLink gekoppeld worden maar ik wil onafhankelijk van de cloud zijn en ga ze dus ‘flashen‘ met Tasmota. Hoe dat moet vind je op Youtube dus dat hoef ik hier niet uit te leggen. Na het flashen worden ze ge-configureerd om berichten te sturen naar de MQTT Broker.

Home Assistant kan ze nu zowel met de Tasmota plugin als met de MQTT plugin detecteren.

De meldingen in MQTT zien er alsvolgt uit:

19:44:00 MQT: stat/tasmota_ABCDEF/RESULT = {"POWER":"ON"}
19:44:00 MQT: stat/tasmota_ABCDEF/RESULT = {"POWER":"OFF"}

Elke switch heeft een (hopelijk unieke) ‘hostname’ en die geef ik mee aan het Tasmota-ID, in dit geval is dat ‘tasmota_ABCDEF’. Met onderstaande code kan de Sonoff Mini via MQTT bediend worden met een entiteit-kaart in een Dashboard van Home Assistent.

switch:
   - platform: mqtt
     name: "Tasmota Mini Switch"
     state_topic: "stat/tasmota_ABCDEF/RESULT"
     value_template: "{{ value_json.POWER }}"
     command_topic: "cmnd/tasmota_ABCDEF/POWER"
     payload_on: "ON"
     payload_off: "OFF"
     availability_topic: "tele/tasmota_ABCDEF/LWT"
     payload_available: "Online"
     payload_not_available: "Offline"
     qos: 1
     retain: false 

Sensoren

Voor het detecteren van deuren of ramen die open gaan, rook en/of koolmoxide detectie en de aanwezigheid van personen in bepaalde ruimtes, maak ik gebruik van Sonoff sensoren.

De Sonoff sensoren werken, net zoals de remote control, door een signaal uit te zenden op 433MHz en daar is nou de eerder genoemde RF-Bridge voor die dit signaal opvangt en doorgeeft aan de MQTT-Broker via WiFi.

PIR2
DW1

De deursensor (DW1) stuurt slechts een signaal bij het onderbreken van het contact, dus het opengaan van de deur of het raam. Als deze weer gesloten wordt zal er geen detectie plaatsvinden dus de sensor is niet geschikt om de status bewaken. Een slimme combinatie van deze twee sensoren zal echter mogelijkheden bieden om bijvoorbeeld het licht aan te doen bij deur/raam detectie en bij de laatste beweging sinds een bepaalde aantal minuten kan het licht weer uit. Wil je toch een sensor met open/dicht status, kijk dan naar de SNZB-04.

De meldingen op het console van de RF-Bridge die op de MQTT-Broker terecht komen zien (ongeveer) er alsvolgt uit:

19:18:46 MQT: tele/rf-bridge/RESULT =
 {Time":"2021-01-27T21:03:38",
 "RfReceived":{"Sync":12510,"Low":420,"High":1220,"Data":"ABCDEF","RfKey":"None"}}

Hiervoor maak ik een binary-sensor in de configuratie van Home Assistanten pak dan met een json-filter de waarde van ‘Data‘ daaruit. Die waarde in ‘Data’ is het unieke id van de sensor.

binary_sensor:
  - platform: mqtt       
    name: "Motion Detector 2"
    state_topic: "tele/rf-bridge/RESULT"
    value_template: '{{value_json.RfReceived.Data}}'
    payload_on: "ABCDEF"                     
    payload_off: "ABCDEFOFF"                 
    device_class: motion                      
    qos: 0      

Voor de bewegingsmelder PIR2 geldt hetzelfde als voor de deursensor DW1: er is geen statusmelding dat er geen beweging is. Hiervoor zal dus een interval gemaakt moeten worden waarop de status van de PIR uitgezet wordt. Dat kan met een Automatisering:

- alias: Reset PIR2 state
  description: 'Zet na 5 minuten de status van PIR2 op off'
  trigger:
  - platform: state
    entity_id: binary_sensor.motion_detector_2
    to: 'on'
    for: 0:05
  condition: []
  action:
  - service: mqtt.publish
    data:
      topic: tele/rf-bridge/RESULT
      payload: ABCDEFOFF
      retain: 'true'
  mode: single 

Uiteraard kan hetzelfde gedaan worden met de deursensors en de rookmelders. De rookmelders laat ik slechts om de paar uur resetten, anders blijft ie elke 5 minuten afgaan bij rook. In dit geval wordt dat met een ‘time-pattern’ gedaan in plaats van een ‘state’.

- alias: Reset rookmelders 
    description: 'Zet de status op off elke 6 uur'
    trigger:
    - platform: time_pattern
      hours: '/6'
  condition: []
  action:
  - service: mqtt.publish
    data:
      topic: tele/rf-bridge/RESULT
      payload: AABBCCFF
      retain: 'true'
  - service: mqtt.publish
    data:
      topic: tele/rf-bridge/RESULT
       payload: ABABABOFF
       retain: 'true'
  mode: single 
SmokeDetector C50D/W