Via diverse shopping-sites, zoals bv. banggood, zijn smart-plugs te koop en bij sommige van die plugs is tevens het stroom-verbruik te meten en uiteraard kunnen dan in Home Assistant automatiseringen gemaakt worden aan de hand van dat verbruik. Goedkope smart plugs met uitgebreide functionaliteit zijn o.a. de plugs van BlitzWolf en specifiek het model BW-SHP2.

Deze plug werkt via WiFi en het enige nadeel is het formaat dat nogal aan de forse kant is, wellicht zijn er kleinere modellen te vinden maar deze kan wel 16A schakelen…

De beknopte handleiding geeft een Q-Code en dat is een customized link naar Tuya en dus kan deze plug ook gebruikt worden met de standaard Tuya app op je smartphone. Echter, om onafhankelijk van welke cloud-dienst dan ook te kunnen zijn kan de smartplug geflashed worden met Tasmota firmware en dat wordt de eerste stap.

Tuya Convert

Via github kan de ‘Tuya-Convert‘ repository ge-cloned worden en dit kan het best op een ‘schone’ Raspberry Pi met WiFi gedaan worden, bv. Raspberry Pi 4 met een Raspbian installatie. Nadat deze RPi bereikbaar is via ssh dienen de volgende commando’s uitgevoerd te worden:

$ sudo apt update && sudo apt upgrade -y
$ sudo apt install network-manager git
$ git clone https://github.com/ct-Open-Source/tuya-convert
$ cd tuya-convert
$ ./install_prereq.sh

De installatie voorbereiding zal een aantal componenten downloaden en installeren om de RPi als een Access Point te kunnen gebruiken en zodra dit gereed is volgt de melding:

Ready to start upgrade

Op dit punt aangekomen dient de smart-plug in ‘pair mode‘ te staan zodat deze gevonden kan worden door tuya-convert.

Het volgende commando zal de upgrade-procedure starten, volg de aanwijzingen op het scherm.

$ ./start_flash.sh

Maak nu ook met je smartphone een WiFi verbinding naar dit Access Point genaamd ‘vtrust-flash‘!

Mochten er nu TCP-poorten in gebruik zijn door andere applicaties zoals dnsmasq en mosquitto, dan volgt de vraag of deze ‘terminated’ moeten worden en antwoord dan met ‘y’

Do you wish to terminate dnsmasq? [y/N] y
Do you wish to terminate mosquitto? [y/N] y

Press ENTER to continue

De smart-plug wordt nu automatisch herkend als IoT-device en vervolgens kan een firmware gekozen worden die al aanwezig is vanuit de git repository:

Ready to flash third party firmware!

You can also provide your own image by placing it in the /files directory
Please ensure the firmware fits the device and includes the bootloader
 MAXIMUM SIZE IS 512KB
 Available options:
   0) return to stock
   1) flash espurna.bin
   2) flash tasmota.bin
   q) quit; do nothing
 Please select 0-2:

Kies hier voor optie ‘2’ de Tasmota firmware en bevestig de keuze:

Are you sure you want to flash tasmota.bin? This is the point of no return [y/N] y
Attempting to flash tasmota.bin, this may take a few seconds…
Flashed http://10.42.42.1/files/tasmota.bin successfully in 11407ms, rebooting…
Look for a tasmota-xxxx SSID to which you can connect and configure
Be sure to configure your device for proper function!

HAVE FUN!
======================================================
Do you want to flash another device? [y/N]
======================================================
Cleaning up…
Closing AP
Exiting…

Tasmota

Met een browser kan nu de smart-plug benaderd worden via de Access-point die het is geworden (tasmota-xxxx) en deze staat dan op ‘Sonoff Basic Module’.

Hier dient nu via Configuration -> Configure WiFi de Wifi instellingen van het thuisnetwerk in gevuld te worden. Save resulteert in een herstart en daarna is de module bereikbaar via je eigen netwerk.

Nu dienen we de juiste ‘template‘ in te stellen via Configuration -> Other. Hier kan dan de volgende template ingevuld worden:

{"NAME":"BW-SHP2 16A","GPIO":[0,57,0,17,134,132,0,0,131,56,21,0,0],"FLAG":0,"BASE":45}

Na een herstart is de Module gewijzigd naar de BW-SHP2 smart-plug:

De volgende stap is de instellingen van MQTT via Configuration -> Configure MQTT. Vul hier dus de MQTT broker gegevens in die ook door Home Assistant worden gebruikt. Save!

Zoals je ziet is de ‘Topic‘ hier ingesteld als ‘powerplug3‘ en dat wordt straks ingesteld in de MQTT instellingen in Home Assistant.

Standaard wordt door Tasmota elke 5 minuten doorgegeven aan MQTT wat het stroomverbruik is en deze interval is te wijzigen in Tasmota via Configuration -> Configure Logging, bijvoorbeeld naar elke 60 seconden. Wijzig hiervoor de waarde bij ‘Telemetry period‘ van 300 naar 60:

Via het Tasmota console is de topic te zien:

Home Assistant

De mogelijkheid om de smart-plug aan en uit te zetten wordt gedaan via een MQTT-switch die ingesteld wordt in het configuration.yaml bestand (of in een !include voor switches) van Home Assistant. Gebruik daarvoor de Supervisor add-on ‘File Editor‘ (of Visual Studio Code’). De code voor de switch is alsvolgt:

switch:
  - platform: mqtt
    name: "PowerPlug3"
    state_topic: "stat/powerplug3/RESULT"
    value_template: "{{ value_json.POWER }}"
    command_topic: "cmnd/powerplug3/POWER"
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

Voor het stroomverbruik kunnen een aantal sensors gemaakt worden en het volgende voorbeeld wordt ook weer in de configuration.yaml (of in een !include voor de sensors) geplaatst:

 
sensor:
  - platform: mqtt
    name: "PowerPlug3 Power"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Power}}"
    unit_of_measurement: "W"
  - platform: mqtt
    name: "PowerPlug3 Today"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Today}}"
    unit_of_measurement: "kWh"
  - platform: mqtt
    name: "PowerPlug3 Yesterday"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Yesterday}}"
    unit_of_measurement: "kWh"
  - platform: mqtt
    name: "PowerPlug3 Total"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Total}}"
    unit_of_measurement: "kWh"
  - platform: mqtt
    name: "PowerPlug3 Voltage"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Voltage}}"
    unit_of_measurement: "V"
  - platform: mqtt
    name: "PowerPlug3 Current"
    state_topic: "tele/powerplug3/SENSOR"
    value_template: "{{value_json.ENERGY.Current}}"
    unit_of_measurement: "A"

Deze configuratie wordt doorgegeven aan Home Assistant via ‘Instellingen’ -> ‘Serverbeheer’ -> ‘HANDMATIG GECONFIGUREERDE MQTT-ENTITEITEN’

Dashboard

Een lovelace dashboard kan nu de smartplug aan/uit en het stroomverbruik tonen:

Mooi zou het zijn als de icons bij de wattage, voltage en stroom ook geel worden als de waarde hiervan meer dan 0 is. Dat kan gedaan worden met de card-mod plugin via HACS
De bijbehorende code in de lovelace card voor de entities wordt in dit geval dan alsvolgt:

- entity: sensor.powerplug3_power
  name: PowerPlug3 Wattage
  card_mod:
    style: |
      :host {
        --card-mod-icon-color:
        {% if is_state('sensor.powerplug3_power', '0') %}
          #44739e;
        {% else %}
          #fdd835;
        {% endif %}
      } 

en zo dus ook voor ‘voltage’ en ‘current’ waarbij de current state op ‘0.0’ gecontroleerd wordt.

et voila

Uiteraard kunnen nu ook automatiseringen aangemaakt worden met waardes vanuit deze sensors als trigger. Via Node-RED laat ik bv weten dat de vaatwasser of de wasmachine klaar is omdat het wattage voor een periode van 5 minuten naar 0 is gegaan.