Telegram Bot gebruiken voor Domoticz-notificaties

Introductie

Voor Domoticz-notificaties kun je verschillende commerciële apps gebruiken, maar het is ook mogelijk om Telegram Bot hier voor in te zetten. Telegram is vergelijkbaar met WhatsApp, maar dan met volledige Cross platform-ondersteuning! Ook kun je met Telegram-berichten Domoticz beheren. In juni 2015 heeft Telegram een ​​bot-platform geïntroduceerd. Hierdoor hoef je op je Domoticz-systeem geen andere software te installeren als je Telegram wilt gebruiken voor Domoticz-notificaties of om bepaalde opdrachten uit te laten voeren.

Benodigdheden

Telegram Bot  en token aanmaken

We gaan nu eerst een eigen Telegram Bot maken. Dat klikt een stuk lastiger dan het in werkelijkheid is. Hieronder zie je een voorbeeld van het maken van een bot genaamd Domoticz met de gebruikersnaam ehocobot en het token is 657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2. Dit token heb je nodig om als bot berichten te kunnen verzenden.

Met de Telegram-app (op je smartphone of pc, dat maakt niet uit) maak verbinding met @BotFather en volg het onderstaande gesprek (jouw berichten staan in het rood gedrukt):

What can this bot do? Botfather is one bot to rule them all. Use it to create new bot accounts and manage your existing bots. About Telegram bots: https://core.telegram.org/bots, Bot API manual: https://core.telegram.org/bots/api

Hello

They call me the Botfather, I can help you create and set up Telegram bots. Please read this manual before we begin: https://core.telegram.org/bots. You can control me by sending these commands:
/newbot – create a new bot
/token – generate authorization token
/revoke – revoke bot access token
/setname – change a bot’s name
/setdescription – change bot description
/setabouttext – change bot about info
/setuserpic – change bot profile photo
/setcommands – change bot commands list
/setjoingroups – can your bot be added to groups?
/setprivacy – what messages does your bot see in groups?
/deletebot – delete a bot
/cancel – cancel current operation

/newbot

Allright, a new bot. How are we going to call it? Please choose a name for your bot.

Domoticz

Good. Now let’s choose a username for your bot. It must end in ‘bot’. Like this, for example: TetrisBot or tetris_bot.

ehocobot

Done! Congratulations on your new bot. You will find it at telegram.me/ehocobot. You can now add a description, about section and profile photo for your bot, see /help for a list of commands.
Use this token to access the HTTP API:
657432935:ABGsNuT5l7KHgKcYu40-gX-7184Z3LFx5A2
For a description of the Bot API, see this page: https://core.telegram.org/bots/api

Bewaar je bot-naam, gebruikersnaam en token op een veilige plek!

Bot testen en Chat ID opzoeken

Stuur een paar berichtjes naar de zojuist aangemaakte Telegram Bot om te kijken of alles goed werkt. De Telegram Bot zal nu nog niets antwoorden, aangezien je hem nog niet verder geprogrammeerd hebt. Nadat je een paar berichten hebt gestuurd kun je de http api gebruiken om de berichten op te halen. In dit geval is het doel om het ID van je Telegram gebruiksnaam te vinden. Vervang in onderstaande url het dummy token door jouw echte token en pak het in een willekeurige browser:


Let op! Vergeet niet het woord “bot” na https://api.telegram.org/.

Als je alles goed gedaan hebt dan zal je iets als onderstaande zien:


Je hebt het ID nodig die achter “from”:{“id”: staat (in dit voorbeeld 274720651). Dit is het ID (274720651) van je gebruikersnaam die je gebruikt om berichten naar je bot te sturen en het ID waar je Domoticz-notificaties op zal ontvangen.

Test nu of je bot een bericht naar jou kan sturen:


Indien alles goed gaat zal je iets als onderstaand zien:


Op je Telegram app zal je ook een bericht ontvangen.

Domoticz instellen om Telegram Bot Noficaties te gebruiken

We gaan nu Domoticz instellen dat er gebruik gemaakt gaat worden van Telegram notificaties. Ga in Domoticz naar Setup > Settings> Notifications > Custom HTTP Action. Activeer deze box, vul het ID (274720651) in het #TO-veld en kopieer onderstaande url in het veld URL/Action (uiteraard met jouw eigen token):


Klik een keer op de Test-knop om te kijken of alles goed werkt en sla de wijzigen op door op Apply Settings te klikken.

Notificaties naar Channel versturen (meerdere gebruikers)

Bovenstaande methode werkt met één gebruiker. Indien meerdere gebruikers de Domoticz-notificaties moeten ontvangen, dan moet je gebruik maken van een channel. Maak eerst in Telegram een channel aan. Zet de channel nog niet op privé, aangezien we de channel-ID eerst nog moeten achterhalen. Geef de channel een @channelName. Voeg jouw bot toe als Administrator, zodat de bot berichten kan versturen. De bot zal niet in je contactenlijst staan, je moet er zelf naar zoeken. Verstuur een bericht naar de zojuist aangemaakte channel met de bot API:


Het resultaat zal iets als onderstaande zijn:


Je kunt nu je channel op privé zetten en bij het #TO-veld -1002346216984 invullen (dit is je channel-ID).

Telegram Bot berichten versturen met Curl

Je kunt eenvoudig de https url gebruiken met Curl:


Echter, het is beter om gebruik te maken van onderstaand format, waarbij de tekst URL encoded is:

Telegram Bot foto’s versturen met Curl

Met de Telegram Bot api kun je ook eenvoudig foto’s versturen door gebruik te maken van de sendPhoto methode:


De Telegram Bot api heeft nog veel meer functies die hier worden uitgelegd. Nog meer informatie via je op deze site.

Telegram Bot berichten versturen met Curl in Lua

Curl kan direct gebruikt worden in Lua met de os.execute functie:

22 gedachten over “Telegram Bot gebruiken voor Domoticz-notificaties

  • 30 maart 2019 om 18:32
    Permalink

    Dankjewel ehoco.nl voor je fraai stukje documentatie. (Had wellicht zelfs in het engels gemoeten?)
    Werkt als een trein!
    Een prettige verrassing na alle teleurstelling met commerciële apps (bv Pushsafer).

    Voor mij als Telegram-Newbie was niet alles direct duidelijk: “maak verbinding met @BotFather” Ok, dat betekent dus @BotFather intypen in het Search-veld.

    Ik heb ook jouw Domoticz Instelling “Custom HTTP Action” opgevolgd omdat ik eea – vreemd genoeg – niet via de Domoticz Instelling “Telegram” a/d praat kreeg.

    Nogmaals dank voor je uitstekende uitleg.

    Beantwoorden
  • 19 april 2019 om 13:36
    Permalink

    Ook vanuit mij dank je wel ehoco. berichten werken echter alleen vanuit de app of browser.
    Vanuit Domoticz komt er niet aan. ID en Token zijn correct utieraard, en de actie is actief.

    Waar zou dat aan kunnen liggen?

    Beantwoorden
  • 20 april 2019 om 10:16
    Permalink

    Inderdaad: Wat staat er in je log?

    Gebruik je “Custom HTTP Action” (werkt bij mij) of de “Telegram”-optie (in Settings-Notifications) (deze werkt nl – vreemd genoeg – niet bij mij).
    Suc6.

    Beantwoorden
  • 17 juni 2019 om 11:40
    Permalink

    ligt het aan mij of is de tekst weg van dit artikel, zou het graag een keer doorlezen

    Beantwoorden
    • 18 juni 2019 om 07:33
      Permalink

      Bedankt voor de melding, de tekst zou nu weer zichtbaar moeten zijn.

      Beantwoorden
  • 27 juli 2019 om 01:14
    Permalink

    Denk dat het niet meer lukt. Als ik de URL intoets krijg ik:
    {“ok”:false,”error_code”:401,”description”:”Unauthorized”}

    Beantwoorden
  • 28 juli 2019 om 10:40
    Permalink

    Domoticz stuurt mij – zonder uitzondering – dagelijk een berichtje.
    Ook de Test-button werkt (bericht komt met een paar seconden binnen op Telegram android).
    Werkt bij mij in elk geval dus prima.

    Beantwoorden
  • 19 augustus 2019 om 08:35
    Permalink

    Zou dit graag willen gebruiken maar naar het invoeren van de 1e URL ontvang ik enkel: {“ok”:true,”result”:[]}

    Helaas geen ID.

    Beantwoorden
  • 10 januari 2020 om 21:37
    Permalink

    Beste Ehoco, ik heb de notificaties helemaal werkend in domoticz.
    Alleen begrijp ik niet hoe ik Telegram Bot foto’s versturen met Curl werkend kan krijgen.

    Waar vul ik dit in?
    Ik heb een dahua camera reeds werkend, en krijg nu een foto via de mail. Ik zou dit heel graag werkend willen hebben via Telegram.

    Beantwoorden
    • 11 januari 2020 om 10:49
      Permalink

      Dat zijn voorbeeld-regels die je in een script kunt verwerken.

      Beantwoorden
  • 9 april 2020 om 18:56
    Permalink

    Hallo kan iemand mij helpen draai domoticz via raspberry ik kan wel een text notificatie via telegram krijgen.
    nou wil ik ook mijn esp32 cam snapshot doorsturen maar dat lukt niet geen foto ook geen foutmelding in domoticz.

    Dit zijn mijn regels:
    #!/bin/sh
    SnapFile=”/var/tmp/camsnapshot.jpg”
    # Get snapshot via Domoticz server
    wget -O $SnapFile “192.168.178.239:8080/camsnapshot.jpg?idx=1”
    # Send Telegram message with image
    curl -s -X POST “https://api.telegram.org/botxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxx/sendPhoto” -F chat_id=xxxxxxxx -F photo=”@$SnapFile”(werkt niet)
    curl -s -X POST “https://api.telegram.org/botxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx/sendMessage?chat_id=-xxxxxxxxx&text=testing” (deze werkt)

    # Remove Image
    /bin/rm $SnapFile

    Beantwoorden
    • 4 februari 2021 om 15:24
      Permalink

      ik heb precies hetzelfde probleem, foto verzenden lukt niet, tekst wel. I s er inmiddels een oplossing???

      Beantwoorden
  • 8 juli 2020 om 15:21
    Permalink

    Het heeft altijd gewerkt, maar nu dus niet meer.
    De TEST button in Domoticz geeft netjes een test msg door, maar als ik probeer, als het voorbeeld hier, de test te sturen, krijg als antwoord:

    {
    ok: false,
    error_code: 400,
    description: “Bad Request: message text is empty”
    }

    De notifications in Domoticz werken ook niet.

    Beantwoorden
    • 22 mei 2021 om 16:50
      Permalink

      klopt had ik ook. in het voorbeeld op deze site zit een foutje. Het werkt als je de tekst ‘&text=Hello’ uit het voorbeeld vervangt voor ‘&text=Hello’

      Beantwoorden
  • 20 november 2020 om 22:31
    Permalink

    Hallo,

    Is er iemand dit bovenstaande (of onderstaande) ook herkend en de oplossing hiervoor kent?

    ok: false,
    error_code: 400,
    description: “Bad Request: message text is empty”

    groet en bvd M vdWerf

    Beantwoorden
  • 19 januari 2021 om 19:22
    Permalink

    Weet iemand hoe je *verschillende** berichten kunt sturen via de Call api van Telegram?

    https://www.callmebot.com/telegram-call-api/

    Verschillend: ik bedoel daarmee:
    als de rookmelder afgaat, wil ik een ‘rookmelder alarm’ tekst.
    als de bewegingsmelder afgaat, wil een ‘bewegingsmelder’ tekst.

    Het lijkt erop dat ik in de URL/ACtie maar één tekst kan maken:

    http://api.callmebot.com/start.php?user=@MijnNaam&text=Brandmelding+Brandmelding+Brandmelding+Brandmelding+Alarm&lang=nl-NL-Standard-B&rpt=5

    Beantwoorden
  • 6 februari 2021 om 15:52
    Permalink

    Hoi Ehoco,
    Hopelijk kan je helpen. Ik heb de eerste stappen door lopen voor het aanmaken van een account.
    Nu geef je aan https://api.telegram.org/bot dan code met daar achter /getUpdates
    Ik krijg alleen het volgende te zien.

    {“ok”:true,”result”:[]} meer niet en ook in verschillende browsers.

    wat doe ik verkeerd. Hoor graag van je

    Beantwoorden

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.