Gniazdka Blitzwolf – tworzymy automatyzacje w oparciu o stan poboru prądu.

Dzień dobry. Ostatnia, trzecia, część konfiguracji gniazdek Blitzwolf.

Poprzednie tutaj:

http://blog.asobczak.pl/2020/08/20/pierwsze-efekty-buy-my-a-coffee-gniazdka-blitzwolf-bw-shp6/

http://blog.asobczak.pl/2020/08/26/gniazdka-blitzwolf-wgrywamy-tasmota-za-pomoca-tuya-convert/

Na jakiej zasadzie się oparłem? Odczytuję stan pobory mocy w gniazdku. Jeżeli pobór jest większy niż 2 Watt, zmieniam status czujnika na 'pranie'. Jeżeli spada do zera, zmienia się na 'wyłączona'. W Automations HA sprawdza na bieżąco stan czujnika, jeżeli zmieni się z 'pranie' na 'wyłączona' na trzy minuty, powiadamia mnie e-mailem oraz Alexą, że pranie się skończyło. Trzy minuty to, na podstawie testów, czas w którym już wiem, że grzałka nie działa, silnik nie kręci bębnem, pompa nie odsącza wody.

Wstawiam ponownie konfigurację gniazdek po stronie Tasmota, bo trochę zmieniło się nazewnictwo. Parametry i nazwy wyglądają teraz następująco:

Jak widać, w MQTT Topic do komunikacji ma nazwę blitzwolf2:

To później wykorzystuję w konfiguracji w pliku sensors.yaml. Z jakiegoś powodu (mimo włączenia odpowiednich parametrów odpowiadających za auto discovery) nie działało mi automatyczne wykrywanie, aby więc nie stać w miejscu dodałem je ręcznie 😀 I tak postąpiłem z każdym, dla nauki.

Przy okazji – Tak, wolę nazwy angielskie w parametrach. Na pulpicie HA nazwy są polskie, ale wewnątrz konfiguracji wolę je mieć po angielsku. Taki odchył 😉
Jak widać poniżej z kanału blitzwolf2 w MQTT odczytuję poszczególne parametry i wstawiam je do zmiennych:

  – platform: mqtt

    name: „Pralka Energy Today”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Today”] }}'

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Yesterday”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Yesterday”] }}'

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Total”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Total”] }}'

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Power”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Power”] }}'

    unit_of_measurement: „W”

  – platform: mqtt

    name: „Pralka Voltage”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Voltage”] }}'

    unit_of_measurement: „V”

  – platform: mqtt

    name: „Pralka Power Factor”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Factor”] }}'   

Kolejny wpis w pliku sensors.yaml. Tutaj właśnie realizowana jest zmiana statusu włączona/wyłączona na podstawie poboru mocy.

  – platform: template

    sensors:
      pralka:
        friendly_name: „Pralka”
        value_template: >-
          {% if states(’sensor.pralka_power') != (’unavailable' or 'unknown') %}
            {% if states(’sensor.pralka_power') | int > 2 %}
              pranie
            {% else %}
              wyłączona
            {% endif %}
          {% else %}
            {{ states(’sensor.pralka') }}
          {% endif %}


Aby skonfigurować stronę jak powyżej dodałem wpis w ui-lovelace.yaml:
    – type: vertical-stack
      in_card: true
      cards:
        – type: glance
          no_card: true
          title: „Łazienka góra”
          show_name: false
          entities:
            – sensor.temperature_158d00022723b2
            – sensor.humidity_158d00022723b2  
            – sensor.pralka
            – sensor.pralka_power
A ikony zdefiniowałem sobie w customize.yaml:
sensor.pralka:
  icon: mdi:washing-machine  
sensor.pralka_power:
  icon: mdi:power
Automatyzacja wygląda następująco:

Tak jak pisałem na początku – jeżeli przez trzy minuty zostanie utrzymana zmiana statusu z 'pranie' na 'wyłączona' – powiadom mnie wybranymi kanałami.

– id: '1599813679318′
  alias: Pralka – koniec prania
  description: ”
  trigger:
  – entity_id: sensor.pralka
    for: 00:03:00
    from: pranie
    platform: state
    to: wyłączona
  condition: []
  action:
  – data:
      message: HA – pralka skończyła pranie
    service: notify.cezar
  – data:
      data:
        method: all
        type: announce
      message: Washing machine has finished job
      title: Washing machine off
    service: notify.alexa_media_adam_s_echo_dot
  mode: single
Dla porządku mam je również wstawione w innych miejscach:

Przy konfiguracji posiłkowałem się konfiguracją https://github.com/bieniu/home-assistant-config. Wpłata na jego konto wskazana 🙂

Gniazdka Blitzwolf – wgrywamy Tasmota za pomocą Tuya Convert

Usssssss… Powitać… To były ciężkie dwa dni. Mentalnie, bo miałem dużo myślenia przez pierdołę… Ale po kolei…
Z serwisu BuyMeACoffee dostałem dwie wpłaty od czytelników (za co bardzo dziękuję), od razu więc kupiłem dwie wtyczki WiFi Blitzwolf BW-SHP6 z pomiarem energii. Od razu rzuca się w oczy mały rozmiar w stosunku do wtyczek na przykład Sonoff oraz innych na 433MHz – niezmiernie mnie w nich drażniło to, że zajmują dwa miejsca w gniazdku, przez co podwójne stawało się pojedyncze.
Te są małe, śliczne, kolorowo mrugają i komunikują się po WiFi – fantastycznie.
Jest oczywiście aplikacja firmowa Blitzwolf, ale kto by na nią patrzył… Zresztą – lepiej jej nie używać aby nie zaktualizować firmware, które może już wykluczyć Tuya-convert, którego użyłem do wgrania alternatywnego oprogramowania Tasmota.
Zasada jest taka – aktualnie praktycznie każde urządzenie aktualizuje oprogramowanie przez OTA (Over-The-Air programming). Wtyczki również. Tak samo jak czajniki, żarówki, oczyszczacze, itp. Takich czasów dożyliśmy. Kontaktują się serwerami tu i tam (przeważnie 'tam', czyli w Chinach) wysyłając i odbierając dane. Cały trik polega na tym, aby zasymulować taki serwer i wgrać swoje oprogramowanie. Do tego przyda nam się Tuya-Convert, która umożliwia wgrania na przykład Tasmota.
Potrzebować będziemy:
– jakiekolwiek Raspberry Pi z WiFi na pokładzie lub donglem USB WiFi (albo podobne urządzenie na którym możemy uruchomić Tuya-Convert). U mnie zawsze wala się gdzieś wolna Malina
– urządzenie, które podłączymy do naszego 'serwera' – na przykład telefon
– urządzenie, które chcemy przeprogramować – tu gniazdko SHP6
Zacząłem od instalacji Raspberry Pi OS (wcześniej Raspbian) – https://www.raspberrypi.org/downloads/raspberry-pi-os/ – wystarczy wersja Lite. Szybki flash karty SD (używając balenaEtcher lub Win32DiskImager), wrzucenie pustego pliku ssh na partycję boot (od razu przez ssh będziemy pracować, monitor nam nie jest potrzebny, ale oczywiście wedle gustu) i jesteśmy gotowi do rozpoczęcia prac.
WAŻNE jeżeli pracujemy przez ssh – Raspberry musi być podłączone po kablu, dlatego że Tuya-Convert stworzy hot-spot WiFi do którego podłączy się gniazdko, ergo – stracilibyśmy połączenie z naszym terminalem.
Polecam przestudiować stronę projektu: https://github.com/ct-Open-Source/tuya-convert
Komendy po kolei to:
– aktualizacja repozytorium i instalacja git
– pobranie kodu tuya-convert
– instalacja niezbędnego oprogramowania (dość długa)
– flash!
sudo apt-get update && sudo apt-get install git
git clone https://github.com/ct-Open-Source/tuya-convert
cd tuya-convert
./install_prereq.sh
 
./start_flash.sh
Na początku wytłumaczenie zasady działania oraz informacje o bezpieczeństwie.
Zamykanie używanych portów, w kolejnym kroku musimy:
– podłączyć na przykład telefon do sieci vtrust-flash (taką stworzy Raspberry Pi)
– wprowadzić urządzenie w tryb parowania – w gniazdku trzeba przytrzymać włącznik przez kilka sekund aż zacznie migać
Po poprawnym połączeniu mamy pytanie co chcemy wgrać, tutaj wybór pomiędzy powrotem do oryginalnego softu, espurna lub tasmota. Ja wgrywam tasmota.bin.
Kilka chwil, tadam!
Na laptopie podłączam się do wykrytego hot-spot tasmota.
Pod adresem 192.168.4.1 będzie już nasze nowe oprogramowanie 🙂 Podajemy naszą nazwę połączenie WiFi oraz hasło.
Po zmianie (jeżeli mamy włączone DHCP na routerze) adres zostanie przyznany automatycznie. Ja używam Advanced IP Scanner aby znaleźć adres IP nowego gniazdka.
Po połączeniu możemy zabrać się za konfigurację. Na początku mamy po prostu Generic Module, podstawowy.
Configuration -> Configure Module i zmieniamy na BlitzWolf SHP.
Możemy już włączyć i wyłączyć gniazdko. Pierwszy sukces.
I teraz ciekawostka. Jako że towar pochodzi z Chin, to bardzo często praktycznie te same wtyczki, gniazdka, czujniki są 'brandowane' różnymi firmami. Podstawa jest ta sama, różni się czasem szczegółami. Z tego to oto powodu pojawiły się Template – czyli pewne 'sposoby' wykorzystania GPIO (General Purpose Input/Output) w sprzętach różnych firm.
Dla mnie ważne było: https://templates.blakadder.com/blitzwolf_SHP6-15A.html. Ważne, bo na przykład dla gniazdka 10A jest inny template 😉
TERAZ WAŻNY MOMENT, który mnie wstrzymał na dwa dni :/ To, że podałem template NIE ZNACZY wcale, że on już działa. Teraz musimy wejść w Configuration -> Configure Other i ZAZNACZYĆ Activate. Bez tego przed dwa dni mogłem sterować gniazdkiem, ale nie miałem podanych odczytów poboru mocy i innych.
Taki template można również wpisać ręcznie pobierając go ze strony podanej wyżej – https://templates.blakadder.com/blitzwolf_SHP6-15A.html
Sprawa następna. Kalibracja. Na wymienionej stronie podany jest również link to kalibracji gniazdka, ponieważ czasem odczyty mogą się różnić po zakupie. Jak? Podłączyć coś, co ma stałe, pewne obciążenie. Ja kupiłem żarówkę 60 Watt i podłączyłem do gniazdka. Z tego co wiem nie warto stosować LEDów i ECO żarówek – mają zbyt mały pobór mocy aby miało to sens. A żarówka i tak mi się przydaje na strychu.
W konsoli wpisujemy PowerSet wartość i VoltageSet wartość.
Jak widzicie domyślnie załadowana jest dość stara wersja Tasmota – 8.1.0.2. Warto zaktualizować. Jak? Zawsze świeże są na stronie projektu: https://github.com/arendst/Tasmota/releases/
Trzeba sobie uświadomić, że gniazdka mają ograniczoną pojemność i muszą podczas aktualizacji przechować wersję aktualną softu, ponieważ w przypadku błędu ładowania nowego muszą ją podmienić, aby nie 'uceglić' sprzętu. Dlatego zaczynamy od ładowania tasmota-lite.bin (mała, kompaktowa wersja), a dopiero później tasmota.bin/
Jeżeli wybierzemy od razu tasmota.bin wystąpi błąd.
Najpierw Minimal,
Później główna tasmota.
Gotowe.
W kolejnym kroku zajmiemy się automatyzacją i powiadomieniami na przykład w zmywarce czy pralce.
Aktualizacja. Odpowiadając na pytanie czytelnika: Aby wyłączyć czerwone światło LED wystarczy zmienić Template z:
na: