Ankündigung

Einklappen
Keine Ankündigung bisher.

Telegram und EibPC

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Telegram und EibPC

    Hallo
    ich habe schon einige Funktionen mit Telegram realisiert und frage mich nun:

    Kann ich nicht auch meinem EibPC eine Nachricht via Telegram schreiben,
    und er wertet diese dann mit einem C1400 und Vergleicher aus und setzt mir
    so ein B0101?

    Mir ist klar das es nicht für Sicherheitsrelevante Dinge die beste Lösung ist.
    Aber um eventuell eine Leuchte zu schalten sollte das doch funktionieren.

    VG Mathias

    #2
    Hi,

    klar geht das. Hier findest du die Bot-API:
    https://core.telegram.org/bots/api#getupdates

    Du brauchst die getUpdates-Funktion. Die kannst du per httprequest abfragen und die Messages auswerten.

    Du solltest dabei aber nicht das LongPolling verwenden, da der EibPC httprequests nicht gleichzeitig ausführt.

    Kommentar


      #3
      Danke für die schnelle Antwort.
      Gibt es hier eventuell ein kleines Programierbeispiel?

      Kommentar


        #4
        Such' mal im Experten in der Makrobibliothek nach Telegram. Das Makro wird intern von der Logik verwendet.

        Edit: Ist ja gar kein Makro, also nichts zu finden.

        Ich liefere am Montag ein Beispiel. Zwischenzeitlich als Inspiration:
        https://www.youtube.com/watch?v=NsHK...nUM1q&index=10

        Ist hier sehr ähnlich, zyklisches Abfragen auf neue Nachrichten, diese mit parsejson auswerten, falls vorhanden.
        Zuletzt geändert von foobar0815; 11.02.2023, 16:32.

        Kommentar


          #5
          Nicht mehr ganz Montag, aber immerhin.

          Die Makrolib im Anhang im Experten in eine neue Makrolib einfügen oder in .lib umbenennen und importieren.

          Beispielprogramm:
          Code:
          zBot=$12345...$
          zChatId=$4711$
          
          bNewMessage=AUS
          zMessage=$$
          zMessageId=$$c10
          uFromIdRef=0815u32
          uFromId=0u32
          
          vmTelegramConfig(zBot, zChatId, bNewMessage, zMessage, zMessageId, uFromId)
          
          // Abfragen mit Nachricht "Licht alle EG?"
          vmTelegramGet(zChatId, uFromIdRef, bNewMessage, zMessageId, zMessage, uFromId, $Licht alle EG$, "Licht EG alle Status-0/4/1")
          // Abfragen mit Nachricht "Licht einige EG?"
          vmTelegramGet(zChatId, uFromIdRef, bNewMessage, zMessageId, zMessage, uFromId, $Licht einige EG$, "Licht EG einige Status-0/4/2")
          
          // Schreiben mit Nachricht "Licht alle EG=0"
          vmTelegramSetGA(zChatId, uFromIdRef, bNewMessage, zMessageId, zMessage, uFromId, $Licht alle EG$, "Licht EG alle-0/4/0")
          
          bVar=AUS
          // Schreiben mit Nachricht "Licht alle EG=0"
          vmTelegramSetVar(zChatId, uFromIdRef, bNewMessage, zMessageId, zMessage, uFromId, $Licht alle EG$, bVar)
          
          vmTelegramNotify(change, zChatId, $Licht alle EG$, "Licht EG alle-0/4/0")
          vmTelegramNotify(eventread, zChatId, $Leseanforderung Licht alle EG$, "Licht EG alle-0/4/0")
          vmTelegramNotify(eventwrite, zChatId, $Schreibtelegramm Licht alle EG$, "Licht EG alle-0/4/0")
          vmTelegramNotify(eventresponse, zChatId, $Antworttelegramm Licht alle EG$, "Licht EG alle-0/4/0")​
          Du brauchst also die IDs vom Chat mit dem Bot und den API-Token des Bots, wie beim Telegram-Logikknoten auch. Diese den Variablen
          Code:
          zBot, zChatId
          zuweisen.

          Außerdem brauchst du noch die Benutzer-ID aller User, die Befehle auslösen können sollen. Am einfachsten bekommst du die, indem du im Chat mit dem Bot eine Nachricht schreibst, und im Debugger die Variable
          Code:
          uFromId
          auswertest. Anschließend als
          Code:
          uFromIdRef
          im Programm setzen.
          Es wird alle 10 Sekunden auf neue Nachrichten geprüft. Länger wäre besser.
          Angehängte Dateien

          Kommentar

          Lädt...
          X