Dzwonek z Biedronki + kamera = zdjęcie na Slack'a

Jak wysłać zdjęcie z kamery na komunikator Slack w momencie wciśnięcia przycisku dzwonka do drzwi?
Oczywiście można kupić i zainstalować gotowy video-domofon z wifi i używać apki producenta x, ale można również obsłużyć za pomocą kilku tańszych i uniwersalnych elementów.
Niezbędne do działania:

Opis działania w skrócie - musimy nauczyć bramkę RF naszego kodu z dzwonka i po jego wykryciu uruchomić automatyzację zapisującą zdjęcie z kamery i wysłanie komunikatu przez Slack.

  1. z konsoli bramki RF zapisujemy kod pod przyciskiem 16 komendą:
    RfKey 2 16
    lub uczymy bramkę RF wg instrukcji: https://sviete.github.io/AIS-docs/docs/en/next/ais_iot_gate_device_rf433.html#uczenie-bramki-kodow-rf
  2. w configuration.yaml dodajemy nową encję (lub używamy dodanej wg powyższej instrukcji):
input_boolean:
  doorbell:
    name: Dzwonek do drzwi
    initial: off
    icon: mdi:doorbell-video
  1. konfigurujemy kamerę:
  • w przypadku Yi Outdoor jest to nieco bardziej skomplikowane ponieważ trzeba wgrać dodatkowy software umożliwiający stream’owanie RSTP - https://github.com/TheCrypt0/yi-hack-v4
  • w configuration.yaml dodajemy (uzupełnij IP kamery w adresie rstp):
ffmpeg:
camera:
  - platform: ffmpeg
    name: Yi_Outdor_Cam_Low
    input: -rtsp_transport tcp -i rtsp://CAMERA_IP_ADDRESS/ch0_1.h264
  1. konfigurujemy integrację Slack (https://www.home-assistant.io/integrations/slack/)
  • ustaw własną nazwę konta i domyślny kanał
  • zdefiniuj hasło w pliku secrets.yaml
notify:
  - name: NOTIFIER_NAME
    platform: slack
    api_key: !secret slack_api_key
    default_channel: '#dom'
  1. dodajemy automatyzację w automations.yaml
  • zamiast xxxxxx wstaw rozpoznany kod dzwonka - można go znaleźć w konsoli RF’a w polu Data:
    20:11:38 MQT: RFBridge/tele/RESULT = {"Time":"2019-12-18T20:11:38","RfReceived":{"Sync":5110,"Low":180,"High":490,"Data":"xxxxxx","RfKey":16}}
  • zamiast NOTIFIER_NAME wstaw nazwę konta w Slack
- id: 11111353bd7440dca318a33474bc1112
  alias: Dzwonek do drzwi - wyślij zdjęcie na Slack
  initial_state: 'on'
  trigger:
    platform: mqtt
    topic: RFBridge/tele/RESULT
  condition:
    condition: template
    value_template: '{{ trigger.payload_json.RfReceived.Data == "xxxxxx" }}'
  action:
  - service: camera.snapshot
    data:
      entity_id: camera.yi_outdor_cam_low
      filename: /data/data/pl.sviete.dom/files/home/AIS/www/img/snapshot_camera.jpg
  - service: notify.NOTIFIER_NAME
    data_template:
      title: Dzwonek
      message: Ktoś dzwoni do drzwi! {{now().strftime("%H:%M:%S")}}
      data:
        file:
          path: /data/data/pl.sviete.dom/files/home/AIS/www/img/snapshot_camera.jpg

a dodając dodatkową akcję można wywołać powiadomienie głosowe:

  - service: ais_ai_service.say_it
    data:
      text: Ktoś dzwoni do drzwi!

lub nawet w określonych godzinach zadzwonić dzwonkiem sąsiada, coby odebrał paczkę od listonosza :wink:

- id: 11111353bd7440dca318a33474bc3212
  alias:  Dzwonek do drzwi -> Dzwonek do sąsiada
  initial_state: 'on'
  trigger:
    platform: mqtt
    topic: RFBridge/tele/RESULT
  condition:
  - condition: template
    value_template: '{{ trigger.payload_json.RfReceived.Data == "xxxxxx" }}'
  - condition: time
    after: 08:00:00
    before: '16:00:00'
    weekday:
    - mon
    - tue
    - wed
    - thu
    - fri
  action:
  - service: mqtt.publish
    data_template:
      topic: RFBridge/cmnd/RfKey13
      payload: ''

W Asystencie może to wyglądać tak:


a na Slack’u dostajemy takie powiadomienie:
image

Powodzenia w kopiowaniu :wink:

3lajki

Super!
W jaki sposób działa te powiadomienie głosowe ?
Nawet jak mam zablokowany telefon to je usłyszę ?
Zastanawiam się nad podobnym rozwiązanie ale nie koniecznie z kamerą, potrzebuje tylko powiadomienie na telefon, że ktoś dzwoni do drzwi.

Powiadomienie głosowe (ais_ai_service.say_it) to po prostu tekst odczytany przez Jolkę - na podłączonym głośniku, na kompie w przeglądarce (wystarczy mieć otwartą kartę z Asystentem) lub w apce na telefonie (tu niestety dużo zależy od telefonu i Androida - może ubić proces w tle i komunikatu nie usłyszysz).

Powiadomienie na Slack’a działa bezbłędnie - zazwyczaj po kilku sekundach od zdarzenia mam go na telefonie. Jeśli nie korzystasz ze Salck’a na co dzień, to można przekierować powiadomienia na dowolny inny komunikator obsługiwany przez HA np. Hangout, Messanger, Jabber, Telegram i wiele innych opisanych tu: https://www.home-assistant.io/integrations/#notifications

Dzisiaj chwilę pobawiłem się ais_ai_service.say_it i faktycznie na Androidzie różnie bywa z powiadomieniem. Na bramce oczywiście działa niezawodnie :+1:
Co do Slacka to nigdy nie używałem ale może pora spróbować, Trello w zupełności mi wystarczało :grinning:

Niestety u mnie Slack pomimo zastosowania sugerowanych ustawień nie da się zmusić do powiadomień pushUp na Lenovo K6 Note. Nie i koniec… Test w apce slacka wypada pomyślnie ale po wysłaniu message pojawia się w chat’cie ale bez jakichkolwiek powiadomień. (Cała konfiguracja i faq przestudiowane kilka razy.)
Zmieniłem na Pushsafer też ciekawa apka do powiadomień.