Sonoff RF-Bridge

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

eWeLink (via Internet)

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 link voor een uitleg. (Engels)

Sonoffs can work without changing the Firmware (video)

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

Zonder Internet

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. Het flashen van de chip wordt op die sites uitgelegd en er zijn diverse Youtube filmpjes van te vinden.

Na het flashen de RF-Bridge van spanning voorzien en opstarten, de module zal zich dan als een Access Point gedragen en hiermee kan dus verbinding worden gemaakt via WiFi. Er verschijnt dan een scherm waarin de instellingen aangepast kunnen worden en de lokale WiFi AP en wachtwoord dienen hier ingesteld te worden. Opslaan en daarna zal de RF-Bridge op het lokale thuis-netwerk te vinden zijn. Even zoeken in je router want hij vraagt een IP adres via DHCP.

Hierna is het zaak om in de configuratie van de RF-Bridge de configuratie voor de MQTT server in te stellen. Vaak is dat hetzelfde IP adres als van de Home Assistant server, indien daar via de add-on’s Mosquitto op is geïnstalleerd.

Vul hier dan gelijk een Topic naam in voor de MQTT berichten die via deze bridge verstuurd worden, bijvoorbeeld rfbridge.

Via een cmnd/rfbridge/POWER kunnen dan bijvoorbeeld switches aangestuurd worden. (zie Switches hieronder)

Het volledige topic voor de status van de aangesloten sensoren wordt dan stat/rfbridge/RESULT gevolgd door een json-bericht met hierin de details. (zie Sensoren hieronder)

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.

Als eerste wordt een verwijzing naar mqtt.yaml gemaakt in configuration.yaml om deze te includen:

mqtt: !include mqtt.yaml

In het bestand mqtt.yaml wordt dan de volgende code geplaatst:

switch:
   - 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 

Hierna dient de YAML-configuratie opnieuw ingelezen te worden via Ontwikkelhulpmiddelen (Developer tools) waarna deze switch bekend wordt binnen Home Assistant.

Sensoren

Voor het detecteren van waterlekkage, 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 RFBridge 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 geen beweging sinds een bepaald aantal minuten kan het licht weer uit. Wil je toch een sensor met open/dicht status, kijk dan naar de SNZB-04. Voor MQTT is het echter ook mogelijk om een ‘off-delay’ mee te geven.

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/rfbridge/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 en pak dan met een json-filter de waarde van ‘RfReceived.Data‘ daaruit. Die waarde in ‘Data’ (in het voorbeeld ‘ABCDEF’) is het unieke id van de sensor en de if-then-else functie maakt het mogelijk om meerdere sensors te configureren in hetzelfde MQTT-topic die vanuit de RFBridge komt: (“tele/rfbridge/RESULT”). De off-delay zorgt ervoor dat de sensor weer op OFF komt te staan binnen Home-Assistant na het aantal aangegeven secondes.

binary_sensor:      
  - name: "Door Sensor 2"
    state_topic: "tele/rfbridge/RESULT"
    value_template: >-
      {% if value_json.RfReceived.Data == 'ABCDEF' %}
        {{'ON'}}
      {% else %}
        {{'OFF'}}
      {% endif %}
    off_delay: 15
    device_class: door                     
    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 ‘off-delay’ aangegeven moeten worden in de MQTT-configuratie van Home Assistant.

Uiteraard kan hetzelfde gedaan worden met de waterlekkage-sensors, deur-sensors en de rookmelders. De rookmelders laat ik slechts na een uur uitzetten, anders blijft ie elke paar minuten afgaan bij rook. In dit geval wordt dat dus een ‘off-delay’ van 3600 secondes. (3600/60/60=1 uur)

SmokeDetector C50D/W