Telegram we współpr...
 
Powiadomienia
Wyczyść wszystko

Telegram we współpracy z Domoticzem i nie tylko z nim

25 Wpisów
8 Użytkownicy
7 Likes
6,037 Wyświetleń
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 
wpf-cross-image

Jakiś czas temu, kiedy to Adrian odrobinę krytycznie odniósł się do serwera  domoticz, a raczej do braku info o stanie modułu  i  o zdalnym potwierdzeniu wykonania akcji, zacząłem kombinować, jak w prosty sposób zrealizować takie powiadomienie.

Jak to często bywa chciałem osiągnąć jedno, a przy okazji zrodziło się drugie.

Do rzeczy, ponieważ powiadomienia drogą e-mail, dochodzą, ale wiąże się to z większym, lub mniejszym opóźnieniem   szukałem innej bez kosztowej drogi i tak natrafiłem na Telegram.

Telegram  to taki  WhatsApp, czyli komunikator, ale posiada on możliwość tworzenia swoich prywatnych  API Bot-ów, dzięki czemu możemy takiego bota spersonalizować i nakazać mu wysyłanie do nas wiadomości o ważnych zdarzeniach w naszym systemie automatyki.

Całą instalację Telegramu i tworzenie własnego bota pominę, gdyż wszystko można znaleźć na stronie https://telegram.org/

Ważne jest aby po stworzeniu swojego bota uzyskać dwa  ważne parametry

Pierwszy to HTTP API TOKEN  , drugi to CHAT ID.

Dla użytkowników Domoticza wszystko jest opisane na stronie

https://www.domoticz.com/wiki/Telegram_Bot#Creating_Your_Bot_and_Getting_Your_Token

Po uzyskaniu „tokena” i chat ID  możemy sobie tworzyć adresy URL z dowolną wiadomością tekstową wyglądające np. tak

https://api.telegram.org/bot [TOKEN]/sendMessage?chat_id=12345678&text=dowolny tekst

Oczywiście nie tylko użytkownicy domoticza mogą to wykorzystać.

Kolejną fajną rzeczą jest możliwość otrzymywania oprócz wiadomości tekstowych, zrzutów z kamery – er, tak zwanych snapshotów.

Tworząc prosty skrypt wyglądający np. tak

Nazwijmy go sobie dowolnie np. brama.sh

#!/bin/sh
SnapFile="/var/tmp/image.jpg"

# Get snapshot via Domoticz server
wget -O $SnapFile "http://adresIP kamery/cgi-bin/snapshot.cgi"

# Send Telegram message with image
curl -s -X POST "https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=12345678&text=Otwarta brama"
curl -s -X POST "https://api.telegram.org/bot[TOKEN]/sendPhoto?chat_id=12345678" -F photo="@$SnapFile"

# Remove Image
/bin/rm $SnapFile

 

Co robi powyższy skrypt?

  • Najpierw robi fotkę z widoku naszej kamery
  • Zapisuje ją w plikach tymczasowych
  • Wysyła wiadomość tekstową o treści ”Otwarta brama” a zaraz po niej wysyła zrobioną fotkę
  • Usuwa fotkę z plików tymczasowych

Po wykonaniu powyższego skryptu w ciągu kilku sekund otrzymujemy wiadomości od naszego bota, wyglądające tak jak na poniższym foto.

 

Otwarta brama to jedno, ale wykorzystując „zdolności” naszego bota można np. mając zwykły domofon, lub tylko dzwonek przy furtce, zrobić sobie coś ala wideodomofon.

Montujemy kamerę IP obserwującą furtkę

Pod przycisk dzwonka, lub domofonu podpinamy np. ESP 01 (najmniejszy), zmiana stanu GPIO 0 w ESP uruchamia skrypt . Jak nie ma nas w domu dostajemy po krótkiej chwili wiadomość, że ktoś dzwoni i fotkę z widokiem kto to jest .

Jeżeli to znajomy, który przyszedł z piwem trochę za wcześnie, to dzwonimy do niego lub wysyłamy sms, prosząc, żeby zaczekał na tarasie, otwieramy mu za pomocą GPIO 2 tego samego ESP furtkę i szybko jedziemy do domu, bo najlepsze piwo, to zimne piwo.

Macie inne pomysły, to piszcie, na pytania i wątpliwości, też postaram się w miarę możliwości odpowiedzieć.

PS 1 Żeby do ESP 01 wgrać firmware AFE T5 i wykorzystać je do tego otwierania furtki, muszę poprosić adriana , żeby zwiększył zakres czasowy podtrzymania, bo dwie sekundy dla rygla w furtce to tak zdąży albo nie, 4 sekundy było by super.

Najlepiej  moim zdaniem zrobić od 0,5 sek do 4

PS 2 Taki zrzut z kamery oczywiście daje się powiększyć

 
Więc do wersji z obserwacją furtki można kamerę zamontować na budynku jeżeli odległość nie jest zbyt duża.
 
 
 
Dodane : 24/08/2018 10:26 am
muchac35 reacted
adrian
(@adrian)
Wpisów: 3973
Szefu Admin Zasłużony dla Forum, Patron Strony
 

@isom, przy następnej okazji zwiększe czas podtrzymania przekaźnika do 9999msek. Tyle mogę tam chyba na maksa dać.

 
Dodane : 03/09/2018 7:33 pm
isom reacted
 Raku
(@raku)
Wpisów: 1
Świeżak
 

@isom mógłbyś opisać konfiguracje telegramu uzyskałem HTTP API TOKEN ale coś z CHAT ID nie mogę sobie poradzić

Już sobie poradziłem nie było pytania

 
Dodane : 06/09/2018 7:19 am
(@wo__jo)
Wpisów: 17
Praktykant Donator 2K23 Donator 2K21
 

Ja używam Pushbullet i polecam ale niestety nie rozgryzłem jak wysyłać wiadomości na kilka telefonów. Można to zrobić w Telegramie ??

 
Dodane : 04/10/2018 11:47 pm
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

W Telegramie jest to jak najbardziej możliwe , do tego między innymi został stworzony , tworzysz sobie grupę osób do , której dodajesz bota , który ma wysyłać powiadomienia i on wysyła do wszystkich członków grupy.

 
Dodane : 05/10/2018 5:46 pm
adrian reacted
(@wo__jo)
Wpisów: 17
Praktykant Donator 2K23 Donator 2K21
 

Wcale tak łatwo nie było skonfigurować Telegram dla kilku użytkowników za snapshotem, ale udało się i działa całkiem fajnie. Pewnie dlatego, że działanie tego komunikatora jest trochę inne niż tych których do tej pory używałem.

W skrypcie który jest w pierwszym poście trzeba odkomentować ostatnią linię żeby plik się kasował.

 
Dodane : 09/10/2018 9:09 am
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@wo__jo dzięki za zwrócenie uwagi na ostatnią linię w skrypcie , moje niedopatrzenie już poprawiłem.

Nie wiem z czym miałeś problemy ale metody są dwie zawsze można stworzyć dla każdego  użytkownika oddzielnego bota i rozbudować skrypt o takie same wpisy z innym tokenem , lub dodać bota do grupy i wysyłać do wszystkich

 

 
Dodane : 09/10/2018 4:42 pm
(@muchac35)
Wpisów: 443
Ekspert
 

Tak pomyślałem że mam bramę zwykle otwartą zdarza sie ze ktoś wchodzi bez dzwonienia

jeśli by podłączyć pod czujniki fotokomórki i gdy tylko zostanie przerwana linia podczerwieni w bramie to zdjęcie by sie wysyłało

ktoś pewnie napisze że miałbym zdjęcia wszystkich piesków z okolicy które się wałęsają heheheh

Ale ja dopiero zaczynam z domoticzem więc to odległa przyszłość

 
Dodane : 08/10/2019 12:11 am
(@muchac35)
Wpisów: 443
Ekspert
 
Dodane przez: @isom

 

Ważne jest aby po stworzeniu swojego bota uzyskać dwa  ważne parametry

Pierwszy to HTTP API TOKEN  , drugi to CHAT ID.

 
 

HTTP API TOKEN już mam ale nie wiem gdzie jest CHAT ID

podpowiesz gdzie go wyszukać?

 
Dodane : 09/10/2019 1:36 pm
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

Jak utworzyłeś już BOTA to w dowolnej przeglądarce wpisz https://api.telegram.org/botxxxxyxyxyxyxyxyxyxyxyxyxy/getUpdates

zamiast tych xyxyxy wstaw swój token zaraz po bot bez spacji . JSON powinien zwrócić coś w tym stylu

{„ok”: true, „result”: [{„update_id”: 939819607,
„message”: {„message_id”: 81, „from”: {„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „chat” :
{„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „date”: 1436104501, „text”: „\ / devices Study”}} , {"update_id": 939819608,
„message”: {„message_id”: 82, „from”: {„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „chat” :
{„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „date”: 1436104512, „text”: „\ / off 1”}} ]}

Gdzie to co zaznaczyłem będzie twoim Chat ID

 
Dodane : 09/10/2019 2:51 pm
(@muchac35)
Wpisów: 443
Ekspert
 
Dodane przez: @isom

Jak utworzyłeś już BOTA to w dowolnej przeglądarce wpisz https://api.telegram.org/botxxxxyxyxyxyxyxyxyxyxyxyxy/getUpdates

zamiast tych xyxyxy wstaw swój token zaraz po bot bez spacji . JSON powinien zwrócić coś w tym stylu

{„ok”: true, „result”: [{„update_id”: 939819607,
„message”: {„message_id”: 81, „from”: {„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „chat” :
{„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „date”: 1436104501, „text”: „\ / devices Study”}} , {"update_id": 939819608,
„message”: {„message_id”: 82, „from”: {„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „chat” :
{„id”: 1234567, „first_name”: „Joe”, „last_name”: „Bloggs”, „username”: „jbloggs”}, „date”: 1436104512, „text”: „\ / off 1”}} ]}

Gdzie to co zaznaczyłem będzie twoim Chat ID

coś chyba źle robię - czy to na czerwono dobrze odczytuje?

w domoticz wpisałem key i to id

a czy coś trzeba ustawiać w telegramie na telefonie?

{"ok":true,"result":[{"update_id":20382896,
"message":{"message_id":1,"from":{"id":532242320,"is_bot":false,"first_name":"Tom","last_name":"ting"},"chat":{"id":-317204237,"title":"ticz","type":"group","all_members_are_administrators":true},"date":1570627620,"group_chat_created":true}},{"update_id":20382897,
"message":{"message_id":2,"from":{"id":532246350,"is_bot":false,"first_name":"Tom","last_name":"ting"},"chat":{"id":-317204237,"title":"ticz","type":"group","all_members_are_administrators":true},"date":1570627629,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":20382898,
"message":{"message_id":3,"from":{"id":532246350,"is_bot":false,"first_name":"Tom","last_name":"ting","language_code":"pl"},"chat":{"id":5555650,"first_name":"Tom","last_name":"Sting","type":"private"},"date":1570627728,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":20382899,
 
Dodane : 09/10/2019 7:17 pm
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

W telefonie musisz mieć uruchomiony czat z Botem u mnie Bot nazywa się Domoticz  https://drive.google.com/file/d/12tA7WsaeJRyf_GQ67kVWHzHj5P94-qYm/view?usp=sharing

ale z tego co widzę to ty nie aktywowałeś żadnego bota przeczytaj sobie dokładnie 

https://www.domoticz.com/wiki/Telegram_Bot#Creating_Your_Bot_and_Getting_Your_Token

musisz wysłać wiadomość tekstową do bota zanim wyślesz tą komendę przez przeglądarkę

 
Dodane : 09/10/2019 7:33 pm
(@muchac35)
Wpisów: 443
Ekspert
 
Dodane przez: @isom

W telefonie musisz mieć uruchomiony czat z Botem u mnie Bot nazywa się Domoticz  https://drive.google.com/file/d/12tA7WsaeJRyf_GQ67kVWHzHj5P94-qYm/view?usp=sharing

ale z tego co widzę to ty nie aktywowałeś żadnego bota przeczytaj sobie dokładnie 

https://www.domoticz.com/wiki/Telegram_Bot#Creating_Your_Bot_and_Getting_Your_Token

musisz wysłać wiadomość tekstową do bota zanim wyślesz tą komendę przez przeglądarkę

wysyłam wiadomość a pierwsza wiadomość to była klik na START i wysłało się /start

co mogę robić źle?

zrobiłen nowego bota i mam nowy token i tak:

{"ok":true,"result":[{"update_id":42356133,
"message":{"message_id":2,"from":{"id":511116350,"is_bot":false,"first_name":"Tom","last_name":"Sting","language_code":"pl"},"chat":{"id":531146350,"first_name":"Tom","last_name":"Sting","type":"private"},"date":1170647208,"text":"Ggg"}},{"update_id":41356634,
"message":{"message_id":3,"from":{"id":531146350,"is_bot":false,"first_name":"Tom","last_name":"Sting","language_code":"pl"},"chat":{"id":531111350,"first_name":"Tom","last_name":"Sting","type":"private"},"date":1170647223,"text":"Gfg"}}]}

 
Dodane : 09/10/2019 7:59 pm
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

Po utworzeniu przez BotFather nowego bota musisz wysłać do tego nowego bota dowolną wiadomość tekstową np witaj bez żadnych znaków czy cudzysłowów , nie dostaniesz odpowiedzi , ale te wiadomości zostaną zapisane w skrzynce bota, żeby  odczytać te wiadomości wysyłasz z przeglądarki komendę którą już znasz i w zwrotce dostajesz ciąg bardzo podobny do tego , który wstawiłem , potem żeby sprawdzić wyślij przez przeglądarkę 

https://api.telegram.org/botxxxxxxxxxxxxxxxxxyxyxyxy/sendMessage?chat_id=abcbcbcbcb&text=Hello

i powinieneś dostać coś w tym stylu 

{„ok”: true, „result”: {„update_id”: 939819608,
„message”: {„message_id”: 82, „from”: {„id”: abcbcbcbcb, „first_name”: „Bot”, „last_name”: „Domoticz”, „username”: „Domoticz”}, „chat” :
{„id”: abcbcbccb, „first_name”: „Bot”, „last_name”: „Domoticz”, „username”: „Domoticz”}, „date”: 1436104512, „text”: „Hello from your bot”}}

Jak tego nie dostaniesz to coś jest nie tak

I najlepiej opisz krok po kroku co robisz bo trudno jest pomagać jak się nie wie co robisz po kolei

 
Dodane : 09/10/2019 8:33 pm
(@muchac35)
Wpisów: 443
Ekspert
 
 
ok zadziałało
wielkie dzięki za podpowiedzi!!!!!
 
Dodane : 09/10/2019 8:53 pm
wojtek_gtx
(@wojtek_gtx)
Wpisów: 538
Ekspert Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K22, Donator 2K24
 

Troszkę wczoraj się pobawiłem i odpaliłem Telegram.

Instalujemy aplikacje na telefonie, uwierzytelniamy z telefonem i komunikator już działa .

Wyszukujemy bota za pomocą lupki  - BotFather

Klikamy w niego i start następnie wybieramy -  /newbot

BotFather prosi nas o podanie nazwy dla naszego nowego bot-a,  podajemy jeżeli nie jest zajęta zwraca nam info o utworzeniu wraz z API naszego bota.

Więc już połowa sukcesu teraz potrzebujemy chat ID 

Wyszukujemy kolejnego bot-a za pomocą lupki o nazwie: @get_id_bot  -  w ikonie bot-a jest gość z łukiem 😉 klikamy start i zwraca nam chat ID 

Wszystko za pierwszym razem zadziałało.

 

Napisałem ten poradnik bo wiele osób ma problem z pozyskaniem chat ID, samo API przysparza mniej problemów 

 

 
Dodane : 24/08/2020 5:55 pm
(@bartolomeo)
Wpisów: 210
Pomocny Donator 2K22
 

Tworząc prosty skrypt wyglądający np. tak

Nazwijmy go sobie dowolnie np. brama.sh

Jak / gdzie utworzyć ten skrypt? Wolałbym mieć to po prostu w dzVents. Czy jest taka możliwość? Widzę, że mogę stamtąd zrobić wywołanie, ale raczej nie sam skrypt, racja?

Właśnie z powodzeniem sobie z dzVents wyłałem powiadomienie. Jakby ktoś podpowiedział tylko czy do tego można dorzucić fotkę z tego poziomu, to będę usatysfakcjonowany 🙂

Edit: chyba znalazłem, sprawdzę to.

https://www.domoticz.com/forum/viewtopic.php?t=26729

 

 
Dodane : 08/10/2020 11:19 am
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@bartolomeo To działa na 100%

 
Dodane : 08/10/2020 12:15 pm
bartolomeo reacted
(@szmydu)
Wpisów: 68
Kontrybutor
 

@isom

Cześć, wrzuciłem ten skrypt jako dzVents do domoticza. Podmieniłem dane w "teleTok", "chatId", "domoReq". Gdzie w tym skrypcie wskazuje np. włącznik po załączaniu którego ma się wykonać zdjęcie i wysłać do Telegrama ?  Dla próby nazwę przycisku podałem w trzeciej linii w "devices" ale niestety to nie działa 🙁 

return {
    on = { 
       devices = {'Ośw. pokój gościnny'},
    },

    execute = function(domoticz, device)
        if(device.state == 'On') then
            local teleTok   = 'tu jest token'
            local chatId    = 'tu jest id'
            local snapFile  = '/home/pi/domoticz/scripts/camera_'
            local domoReq   = 'http://192.168.8.106:8081/cgi-bin/snapshot.cgi'
            local camName   = 'Kamera'
            os.execute('wget -O "'..snapFile..camName..'.jpg" "'..domoReq..'"')
            os.execute('curl -s -X POST "https://api.telegram.org/bot'..teleTok..'/sendPhoto?chat_id='..chatId..'" -F photo="@'..snapFile..camName..'.jpg"')
            os.execute("rm " ..snapFile..camName..'.jpg')

        end
    end
}

 

Samo wysyłanie powiadomień tekstowych z domoticza działa. Zrobiłem wirtualny przycisk po wyzwoleniu którego wykonywane jest odpowiednie polecenie https.

 
Dodane : 04/03/2021 10:58 am
isom
 isom
(@isom)
Wpisów: 5079
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@szmydu skrypt na podstawie zdefiniowanego urządzenia - devices , a konkretnie gdy to urządzenie zostanie włączone zapisuje fotkę z kamery i wysyła za pomocą os.execute curl

na konto wskazanego użytkownika telegram , na końcu kasuje tą fotkę za pomocą polecenia rm.

Co dostajesz w logach domoticz po włączeniu Ośw pokój gościnny ?

 
Dodane : 04/03/2021 11:51 am
Strona 1 / 2
Udostępnij: