Telegram Menus für den einfachen Zugriff von unterwegs auf ioBroker

In diesem Artikel zeige ich Dir, wie Du mit einem Telegram Menu von unterwegs dein Smart-Home steuern kannst.

Der Telegram-Adapter bietet neben der normalen Versand-Möglichkeit von Texten oder optional auch Bildern zudem die Möglichkeit über den Telegram-Bot Geräte im ioBroker zu steuern oder Informationen auszugeben. Hierzu kann zudem über eine weitere Tastatur eine Menü-Struktur / Button Übersicht angelegt werden, mit der z.B. Räume aufgelistet werden können oder Geräte gesteuert werden. Im Artikel werden wir nun ein eigenes Menü erstellen, mit dem wir ein Leuchtmittel steuern und zusätzlich noch Temperatur- und Luftfeuchtigkeitsinformationen abrufen.

Folgende Voraussetzungen müssen für diesen Artikel erfüllt sein:

Bevor wir mit der Einrichtung beginnen müssen wir zunächst prüfen ob der Adapter „Text to command“ installiert und aktiviert ist. Gehe dazu in die Adapter-Übersicht und suche nach „text2“. Du solltest hier den Adapter sehen. Falls der Adapter noch nicht installiert ist, kannst Du dies hier jetzt über die Plus-Schaltfläche erledigen.

Unter den Instanzen sollte der Adapter nun mit dem grünen Icon dargestellt werden.

Im nächsten Schritt müssen wir in der Telegram-Adapter Konfiguration die Instanz des „Text to command“ Adapter zuweisen. Dazu öffnest Du die Adapter-Konfiguration und wählst auf der Tab-Lasche „Nachrichten“ die „Text to command“ Instanz aus und klickst auf Speichern.

Wir haben nun die Grundlagen für die weitere Implementierung der Menü-Steuerung angelegt. Im nächsten Schritt wechseln wir nun in den Bereich „Skripte“. Da wir für die Menü-Steuerung für jedes Menü ein eigenes Script anlegen und zudem später noch weitere Scripte für den Informationsabruf benötigen, habe ich hier zunächst aus Gründen der Übersichtlichkeit einen neuen Ordner mit dem Namen „Telegram-Menu“ angelegt. Unterhalb von diesem Ordner werden wir im nächsten Schritt die benötigten Scripte hinterlegen.

Nun fügen wir auf dem Ordner ein neues JavaScript ein. Als Name habe ich Start gewählt. Als Script-Code können wir den folgenden Code einfügen:

sendTo('telegram.0', {
    text:   'Raum wählen',
    reply_markup: {
        keyboard: [
            ['Flur', ''],
            ['Wohnzimmer' ,''],
            ['Esszimmer' ,''],
            ['Status' ,'']
        ],
        resize_keyboard:   true,
        one_time_keyboard: false
    }
});

Das JavaScript sollte nun wie folgt aussehen. Über den Pfeil neben dem Script-Namen können wir dann das Script für die Ausführung aktivieren,

Im nächsten Schritt wechseln wir nun die in den Bereich Text -> Kommandos. Mit diesem Adapter werden können Telegram-Nachrichten analysiert und aufgrund der hinterlegten Regeln Aktionen ausgeführt werden. Im ersten Schritt legen wir nun über die Plus-Schaltfläche oben links eine neue Regel an. Als Regel-Art wählen wir Schaltete irgendwas an oder aus. Als Trigger-Worte habe ich hier den Begriff Übersicht gewählt. Im nächsten Schritt wählen wir im Feld Parameter unser Start-Script aus dem Ordner Telegram-Menu. Als Parameter-Wert geben wir hier true an.

Nun können wir ein weiteres JavaScript anlegen. Ich habe hier den Namen Esszimmer gewählt. In das Script kopieren wir den folgenden Inhalt:

sendTo('telegram.0', {
    text:   'Bitte wähle eine Aktion',
    reply_markup: {
        keyboard: [
            ['Übersicht', ''],
            ['Esszimmerlicht an', 'Esszimmerlicht aus']
        ],
        resize_keyboard:   true,
        one_time_keyboard: false
    }
});

Nach dem Speichern und Aktivieren des Scripts wechseln wir wieder in den Adapter Text -> Kommandos und legen über die Plus-Schaltfläche oben links eine weitere Regel an. In der Regel wählen wir wieder den Typ Schalte irgendwas an oder aus und wählen als Trigger-Wort Esszimmer. Als Parameter wählen wir das gerade angelegt Esszimmer Script aus. Als Parameter-Wert wähle ich hier wieder true.

Jetzt legen wir noch die beiden Regeln an, mit denen wir nun endlich den ersten Aktor steuern können. Hierzu wählen wir wieder den Typ Schalte irgendwas an oder aus sowie die folgenden im Screenshot ersichtlichen Werte. Die Trigger-Worte haben wir ja vorher schon im Menü verwendet, die Parameter sind nun die zu schaltenden Aktoren (On-State). Beim Einschalten nehmen wir dann true, beim Ausschalten false.

Wir können jetzt in die Telegram-App wechseln und unseren Bot öffnen. Im ersten Schritt geben wir nun das Trigger-Wort Übersicht ein. Nun erscheint die Antwort Raum wählen und es werden die vorher definierten Buttons im Tastatur-Bereich eingeblendet. Da wir bis jetzt nur die Menüs Übersicht und Esszimmer definiert und implementiert haben, klicken wir jetzt auf die Schaltfläche Esszimmer. Nun wird das Menü des Esszimmers geladen und im Tastatur-Bereich eingeblendet.

Über die Schaltflächen Esszimmerlicht an und Esszimmerlicht aus können wir nun den Aktor direkt steuern. Mit einem Klick auf die Schaltfläche Übersicht wird wieder das Übersichtsmenü eingeblendet.

Zudem habe ich noch ein weiteres Blockly-Script geschrieben, mit dem ich Status-Informationen von Türen oder Fenstern sowie Temperatur-Informationen anzeigen lassen kann. Hierzu habe ich zunächst das Blockly-Script mit dem Namen Status erstellt.

Im Script werden zunächst die Informationen über geöffnete Fenster oder Türen ermittelt. Im Beispiel prüfe ich derzeit nur zwei Türen. Im zweiten Teil des Scripts werden dann Informationen über Temperaturen und Luffeuchtigkeiten ermittelt und an die Zeichenkette angehängt. Aus Gründen der Übersichtlichkeit habe ich die Blöcke im Script zusammengefaltet. Für die Bearbeitung müsst ihr diese wieder entfalten.

Ich habe hier das gesamte Script als Download, so müsst ihr das Script nicht nachbauen, sondern könnt direkt eure Sensoren integrieren.

Blockly Status Script (284 Downloads)

Nach dem das Script gespeichert und für die Ausführung aktiviert wurde, erstellen wir im nächsten Schritt den entsprechenden Eintrag im Text->Kommandos Adapter.

Als Regel wählen wir hier wieder Schalte irgendwas an oder aus. Als Trigger-Wort Status und als Parameter des Script Datenpunkts unser aktuell erstelltes Status Script. Zudem als Parameter-Wert true.

Wir können mit dem Telegram-Menü nun von unterwegs Aktoren schalten sowie Informationen aus unserem Smart-Home abrufen. Ich finde es wirklich ein sehr praktisches Hilfsmittel, falls VPN oder andere Lösungen nicht funktionieren.

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

6 Gedanken zu „Telegram Menus für den einfachen Zugriff von unterwegs auf ioBroker

  • 8. Dezember 2019 um 21:34
    Permalink

    Hallo Matthias,
    Danke für das Tuto. Liest sich ganz gut. Kann es leider
    nicht testen, da ich im Urlaub bin.
    Grüße aus Puerto del Carmen
    Michael

    Antwort
  • 26. Februar 2020 um 23:41
    Permalink

    Hallo Meister,
    funktioniert wunderbar einfach – aber wenn ich mehrere Geräte (>4?) steuern will, geht das Script nicht mehr (ich habe einfach eine Zeile hinzugefügt, aber dann passiert eben nix mehr). Geht das nicht oder mache ich einen Fehler?

    Antwort
  • 2. April 2020 um 19:38
    Permalink

    Hallo Meister , konntest du bereits den Fehler finden? Ich stehe vor dem gleichen Problem.

    Antwort
    • 3. April 2020 um 8:55
      Permalink

      Moin zusammen, was für ein Fehler kommt denn bei euch?

      Antwort
  • 22. Mai 2020 um 23:30
    Permalink

    Hallo Mathias & tony & Manfred

    in Zeile 6 des JS-Scripts fehlt das Komma am ende der Zeile.

    6> [‚Esszimmerlicht an‘, ‚Esszimmerlicht aus‘] <

    Dann kann man auch noch mehrere Zeilen eintragen, die auch übermittelt werden (gerade getestet).

    Antwort
  • 6. September 2020 um 20:00
    Permalink

    Hat bisher immer gut gekplappt.

    Seit letztem iobroker Update ist das importieren nicht mehr möglich.

    „TypeError: main.instances[i].match is not a function“

    Kann man da was machen?

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.