Powiadomienia na WhatsApp

Cześć,

Z życia wzięte :grin: :

Jak przekonać drugą połówkę, że moje marnowania czasu na tematy smart home ma jakiś większy sens? :thinking: Pokazać, że to Jej również ułatwi życie. W ten sposób postanowiłem, że żona będzie otrzymywała powiadomienia o zakończeniu prania (bo pralka znajduje się poziom niżej niż salon).
Co jest potrzebne, dla przypomnienia, do realizacji takiego zadania:

  • pralka w wersji smart ale nasza dobrze działa więc nie ma podstaw żeby ją wymieniać na nowszy model, pozostaje zakup gniazdka smart z pomiarem mocy, gniazdko jak wiadomo musi być “o dużej mocy”, w moim przypadku to Gosund Inteligentne gniazdko WiFi SP111 (maksymalne obciążenie: 3450 W) z wgraną Tasmotą przy wykorzystaniu tuya-convert [wygląda to na skomplikowane ale wystarczy do tego laptop z bootowaniem z pendrive, na którym jest obraz linuxa]
  • opracować automatyzację w HA, która wykryje stan zakonczenia prania, opierałem sie na informacjach z Making ‘dumb’ Dishwashers and Washing Machines Smart: Alerts When the Dishes and Clothes Are Cleaned
  • wysłać powiadomienie na telefon żony ale jak to bywa nie ma mowy o żadnej dodatkowej, niezbędnej aplikacji do smart home dlatego postanowiłem skorzystać z WhatsAppa, który jest już używany na telefonie :wink:

Do integracji z HA wykorzystałem serwis CallMeBot, szczegóły integracji pod linkiem WhatsApp Text Messages from HomeAssistant. Po częściowej modyfikacji u mnie wygląda to tak:

shell_command:
  whatsapp_wife: '/usr/bin/wget https://api.callmebot.com/whatsapp.php?phone=+48xxxxxxxxx&apikey=yyyyyy&text={{ texttosend | urlencode  }}'

czyli wpisywać będę tekst powiadomienia bez konieczności kodowanie znaków i podawania za kazdym razem danych do integracji jak to opisane jest na stronie serwisu.
Wywołanie powiadomienia wygląda już standardowo:

- service: shell_command.whatsapp_wife
  data_template:
    texttosend: 'Czesc, tu Twoja pralka, wlasnie skonczylam pranie, pora wyjac ubrania.'

Usługa CallMeBot jest darmowa ale po podłuższym korzystaniu z niej dostałem informacje o wsparciu projektu:

I need your support to keep CallMeBot alive
As said, I need your help to keep CallMeBot alive as the ongoing cost is too high for a hobby. With only 0,40 USD per month, I can afford to mantain the infrastructure required (AWS server, Hosting, Domains, Phone lines, licenses, etc.). If you can’t afford to pay $4 per year, please contact me and we will find a solution.
Thank you for your support!

2 Likes

Powiadomienia na WhatsApp’a to świetny pomysł. Trochę opóźnione są powiadomienia, ale działa niezawodnie.

Edit: Próbuję wywołać service w NR, podstawiam komunikat pod zmienną i mam ciągle API error. Pomóżcie, bo składnia json mnie dobija. Reczne wywołanie serwisu działa.

Trochę opóźnione są powiadomienia, ale działa niezawodnie.

Tak, są opoźnienia i wynikają z dostępności serwerów, które są wykorzystywane, można to zobaczyć na stronie CallMeBot Servers. Na samym początku wszystko działało szybko i sprawnie ale jak widać projekt spotkał sie z dużym zainteresowaniem i pojawiły się problemy z wydajnością.
Testowo wykupiłem płatną subskrycję, porównam czasy dostarczania wiadomości i dam znać czy warto wydać 4USD/rok.

1 Like

Składnia w call service to { “message”: “tekst” }

Ja daję przed call service funkcję:

msg.payload =
{ “data”:
{
“message”: “tekst test”,},
}

return msg;

Po 3 tygodniach używania płatnej integracji wszystko działa dobrze. Wybrałem opłatę miesięczną w cenie 0,4USD i jestem zadowolony z rozwiązania, polecam.

@macek dobrze wiedzieć dziękuję !

W call service ja mam tylko to:
{
“message”: “tekst test”}
}

Mam pytanie co do integracji aplikacji WhatsApp z Home Assistant. Otóż także chciałbym podpiąć żonę w działanie automatyzacji naszego domu. Oczywiście dopiero raczkuję w tym temacie. Stąd pytanie do Was:
Czy jest możliwe wysyłanie poleceń do HA wykorzystując WhatsApp? Mam konkretny przykład: Zintegrowałem Shelly1 i wykorzystując jego styki bezpotencjałowe chcę móc zdalnie otwierać bramę wjazdową na podwórko.
Początkowo myślałem o geolokalizacji lecz mieszkam przy drodze, którą zdarza mi się mijać bez robienia postoju w domu.
Czy jest możliwość wysłania polecenia wykonania konkretnego procesu?

Też o tym myślałem bo takie interakcje są możliwe w aplikacji mobilnej, tutaj znajdziesz pomocne informacje o tym Home Assistant – powiadomienia z akcjami. Osobiście nie podjąłem tematu realizacji tego z wykorzystaniem WhatsApp’a. Serwis CallMeBot ciągle się rozwija, pojawił się nowy sposób integracji - HA REST Notify service, myślę, że to kwestia czasu jak pojawi się taka funkcjonalność.

To rozumiem że wykorzystując Whatsapp nie ma możliwości wysyłania komend do wykonania?
A w takim razie wykorzystując aplikacje HA i geolokalizację można uzyskać powiadomienie które będzie zarazem pytaniem? Np. " Zbliżasz się do domu. Otworzyć bramę? " i do tego dwie opcje, jedna do wybrania np. "Potwierdź " lub “Odrzuć” ?

W październiku będzie materiał na blogu o notyfikacja z powiadomieniem. Chyba za bardzo chcecie szybciej to mogę zmienić plany. Może zrobię ankietę na temat kolejności materiałów :grinning:

1 Like

Tak się zastanawiam, dlaczego w ten sposób sposób chcesz otwierać bramę? Jeżeli HA jest dostępny z internetu to możesz to zrobić ręcznie, bezpośrednio z aplikacji, to wymaga takiej samej czynności co potwierdzenie w odebranym powiadomieniu?

I to w zasadzie jest najprostsza metoda, którą wykorzystam. A z czasem poczekamy na ciekawe i oryginalne pomysły Artura :wink:

[UPDATE 2020-09-10]

Pojawił inny sposób integracji Home Assistanta z WhatsApp przy wykorzystaniu serwisu HA REST Notify, poniżej przykład konfiguracji:

# Example configuration.yaml entry 
notify:
# WhatsApp Text Messages from HomeAssistant
# https://www.callmebot.com/blog/whatsapp-text-messages-from-homeassistant/
  - name: WhatsApp_wife
    platform: rest
    resource: https://api.callmebot.com/whatsapp.php
    data:
      source: HomeAssistant
      phone: +48*********   #enter your phone number here
      apikey: 3****9        #enter your apikey here

Po restarcie HA będziesz miał dostępny nowy serwis do powiadamiania:

Capture

Dla takiego sposobu integracji nie musisz już kodować adresu URL (urlencode). Dozwolone są także znaki formatujące WhatsApp (np. „*” dla pogrubienia) oraz standardowe korzystanie ze zmiennych HA, np.

- service: notify.whatsapp_wife
  data_template:
    message: 'Cześć, tu Twoja *pralka*, skończyłam pranie o {{now().strftime("%H:%M")}}, pora wyjać ubrania.'

Efekt poniżej:

Capture

Super, prawda :grin:.

2 Likes

Świetna sprawa z tym whatsappem, ale wysłałem wiadomość kilka razy ale nie dostałem odpowiedzi.

@pawelwaz sprawdź najpierw czy poprawnie dostajesz wiadomości wykorzystując do tego przeglądarkę internetową, w pasku adresu wpisz poniższy URL uzupełniając go swoimi danymi:

https://api.callmebot.com/whatsapp.php?source=HomeAssistant&phone=+48xxxxxxxxx&apikey=xxxxxx&text=Testowa+wiadomość

Efekt poprawnego wysłania wiadomości powinien być następujący:

Message to: +48xxxxxxxxx

Text to send: Testowa wiadomość

Message queued. You will receive it in a few seconds. 

Jaką masz odpowiedź?

Zaraz będę sprawdzał czy działa bo, niestety pomyliłem treść wiadomości i nie dostałem apikey, poprawiłem i dostałem odrazu. Muszę sprawdzić czy będą dobrze dizałać te powiadomienia.

Wszystko działa, z delikatnym opóźnieniem powiadomienia przychodzą.
Jedyną kwestią jaką widzę to zastosowanie zmiennych w Node Red (chociaż jeszcze się na tym nie znam, nie wiem jak zakodować np. godzinę), a drugie to zmienne i znaki formatujące WhatsApp są czytane przez głośnik jeśli oczywiście to samo powiadomienie idzie na głośnik.

Tu masz dwa materiały które chyba dobrze wprowadza Ciebie w zmienne