środa, 16 września 2020

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

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

Poprzednie tutaj:

http://cezarowy.blogspot.com/2020/08/pierwsze-efekty-buy-my-coffee-gniazdka.html

http://cezarowy.blogspot.com/2020/08/gniazdka-blitzwolf-wgrywamy-tasmota-za.html


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 :D 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 :)

6 komentarzy:

  1. Dzień dobry.
    Na początku chciałem Panu podziękować za to co Pan robi dla społeczności "smart domu". Super blog.
    Odnośnie omawianego gniazdka i tasmoty mam pytanie - czy jest możliwość wyłączenia podświetlenia pierścienia w tym gniazdku?
    Pozdrawiam
    Rafał

    OdpowiedzUsuń
    Odpowiedzi
    1. Po pierwsze - bardzo dziękuję. Prawdę mówiąc, zacząłem pisać ponieważ to co zrobię często 'wyparowuje' mi z głowy, bo przechodzę do kolejnego tematu. Aby nie robić wszystkiego od początku gdy coś się 'wywali', zacząłem to spisywać. Od tego był już tylko krok do wrzucenia na blog, po co ktoś ma spędzać noce nad czymś, gdy ktoś inny już to zrobił.

      Co do wyłączenia tego upierdliwego czerwonego światła. W sumie spróbowałem przed chwilą i wystarcza zmiana w Template - przy GPIO0 daj None zamiast Led1i. Uaktualniłem wpis.

      Po trzecie - nie 'Panujmy' sobie. Mimo, że siwy włos przyprószył skroń - czuję się młody i gotowy do kolejnych wyzwań ;) Na przykład maraton za miesiąc, przejście na Debian na Intel NUC, opisanie wszystkich moich starszych konsol, itp. :)

      Usuń
    2. Dzięki za informację, właśnie to znalazłem. Co do "Panujmy" to jestem jeszcze z tego pokolenia, że to dwie strony ustalają jak do Siebie mówić a nie jak dzisiejsza młodzież od razu na "Ty".
      Jeszcze raz dziękuję i pozdrawiam.

      Usuń
  2. Dodam jeszcze aby HA wykrywał automatycznie dostępne encje z gniazdka w konsoli wystarczy wpisać komendę: SetOption19 1
    Rafał

    OdpowiedzUsuń
    Odpowiedzi
    1. Ależ próbowałem tego oczywiście ;) Ale możliwe, że HA jeszcze wtedy nie był dla mnie jasny, dlatego zrobiłem to tak, aby po prostu zadziałało ;)

      Usuń