Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Pushover + Command = Telegram

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Pushover + Command = Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Solear last edited by

      Danke für das Beispiel! Ja, den sendto telegram Befehl kenne und nutze ich.

      Ich meinte, ob man aus der telegram App iobroker anschreiben kann. Wo ich mit einer On Funktion drauf lauschen kann.

      Momentan mache ich das über den Umweg text2command, indem ich dort etwas in eine Variable schreibe die ich in einem Script als Auslöser abfrage.

      Gesendet von iPhone mit Tapatalk

      1 Reply Last reply Reply Quote 0
      • M
        mayer last edited by

        Steht doch im Code:

        on("telegram.0.communicate.request", function (obj)
        
        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          @mayer:

          Der Telegram Adapter ist sehr zuverlässig und reagiert sofort auf eingehende Befehle. Es lassen sich auch über BotFather Kommandos vordefinieren und dann direkt in Telegram auswählen und senden. Super Sache. `

          Danke für das Beispiel!

          Hast Du für den letzten Teil ein konkretes Beispiel und den Syntax dazu (vordefinierte Kommandos über BotFather)?

          1 Reply Last reply Reply Quote 0
          • M
            mayer last edited by

            > Hast Du für den letzten Teil ein konkretes Beispiel und den Syntax dazu (vordefinierte Kommandos über BotFather)?

            • BotFather starten

            • /setcommands eingeben

            • ioBroker Bot auswählen

            • Liste mit Kommandos eingeben

            z.B.

            tuer - Türalarm abschalten

            fenster - Fensteralarm abschalten

            aussenfotos - Kamerabilder anfordern

            • die ganze Liste senden

            • fertig

            Die Liste vordefinierten Kommandos kann im Telegram Chat dann aufgeklappt werden über die '/' Taste (neben dem Smily) und das Kommando kann direkt zum Senden ausgewählt werden.

            In "telegram.0.communicate.request" steht dann folgendes '[xxx]/tuer". Wobei 'XXX' für den Chatnamen steht, welcher mitgesendet wird.

            Per Script frage ich dann ab:

            z.B.:

            if  (obj.newState.val == "[xxx]Tuer" || obj.newState.val == "[xxx]/tuer") {
            

            Es ist auch möglich ein eigenes Keybord zu definieren, welches dann Im Chatfenster angezeigt wird. Damit lassen sich die Kommandos direkt auf Tasten legen. Dazu muss aber ein Webserver laufen. Vielleicht integriert ja Bluefox einmal sowas direkt in den Adapter.

            Gruss

            1 Reply Last reply Reply Quote 0
            • ruhr70
              ruhr70 last edited by

              Danke!

              Habe etwas für den zweiten Punkt gebraucht 😉

              @Name_des_Bots nach dem /setcommands

              Klasse Tipp!

              1 Reply Last reply Reply Quote 0
              • S
                Solear last edited by

                @mayer:

                • BotFather starten

                • /setcommands eingeben

                • ioBroker Bot auswählen

                • Liste mit Kommandos eingeben

                z.B.

                tuer - Türalarm abschalten

                fenster - Fensteralarm abschalten

                aussenfotos - Kamerabilder anfordern

                • die ganze Liste senden

                • fertig

                Die Liste vordefinierten Kommandos kann im Telegram Chat dann aufgeklappt werden über die '/' Taste (neben dem Smily) und das Kommando kann direkt zum Senden ausgewählt werden. `

                Genial! Klappt super!

                Meine Ubuntu Telegram App zeigt mit Klick auf / die Befehlliste an.

                Die App auf dem iPhone leider nicht, obwohl der / neben dem Smily da ist. Kommt bestimmt dem einem Update irgendwann.

                edit: Doch es geht nun, es hat nur einen Tag gedauert. Vermutlich hätte ein Neustart des iPhones sofort alle Befehle angezeigt. Nun werden mit Klick auf / die Befehle angezeigt. genial!

                text2command muss man dann auch in den Telegram Adaptereinstellunen deaktivieren, oder mit einer 2. Telegramm-Instanz verbinden.

                Also ich muss noch einmal sagen: iobroker in Verbindung mit Telegram = genial! So stelle ich mir Hausautomatisation vor.

                1 Reply Last reply Reply Quote 0
                • S
                  Solear last edited by

                  Es wird immer besser mit Telegram!

                  Man kann praktisch eigene Befehlsdialoge erstellen.

                  Wenn iobroker einen Text "/beispieltext" sendet, also mit einem / davor, dann wandelt Telegram das in einem ausführbaren Befehl um. Man kann dann mit dem Finger einfach rauftippen, um diesen Befehl auszuführen.

                  Natürlich muss auf iobroker ein Skript auf diesen Telegrambefehl dann lauschen.

                  Als Beispiel: Über den in Telegram hinterlegten Befehl /keller kommt eine Abfrage und Anzeige aller Kellermessdaten. Im selben Text erscheint auch die Frage, ob man die Kellerfenster (außerhalb der Automatik) öffnen möchte. Da kann man dann raufklicken oder es ignorieren.

                  Einfach genial!

                  1145_telegram.png
                  Hier die letzten beiden Zeilen: klicken und der geklickte Befehl wird als neuer Befehl gesendet. 😄 😄

                  So kann man ganze Dialoge führen bzw. situationsabhängige Befehle auswählen ohne diese jeweils einzeln irgendwo aufrufen zu müssen.

                  Die einzige Frage, die für mich noch offen ist:

                  Kann man irgendwie im zu sendenden Text für Telegram Absätze einfügen?

                  Mit dem Workaround

                  '                         Text'
                  

                  geht es zwar auch, dann findet ein Zeilenumbruch statt aber nur wenn die Leerzeichen länger sind als die Breite des Telegramfensters. Und im Code sieht es auch nicht schön aus. Hat da jemand einen Tipp? Man könnte auch mehrere Sprechblasen senden, aber schöner wäre eine Sprechblase mit Absätzen.

                  1 Reply Last reply Reply Quote 0
                  • M
                    mayer last edited by

                    Zeilenumbruch geht mit````
                    \n

                    
                    Gruss
                    1 Reply Last reply Reply Quote 0
                    • S
                      starfish last edited by

                      wie kann man mit text2command ccu-systemvariablen setzen?

                      edit:

                      hat sich erledigt, man muss nur das Variablennummer-objekt manuell eingeben (z.B. hm-rega.0.11732) - die Variablen erscheinen nicht in der Auswahlliste (bei mir zumindest).

                      Richtig cooler Adapter, das eröffnet zusammen mit Telegram ganz neue Möglichkeiten. Danke Bluefox.

                      1 Reply Last reply Reply Quote 0
                      • S
                        Solear last edited by

                        Ich war eine Woche im Ausland, und konnte wunderbar über Telegram mit iobroker "kommunizieren", Webcambild schicken lassen, Stromverbräuche und Gaszähler abfragen, Kellerfreuchte überwachen.

                        Lief alles stabil durch.

                        Also Danke noch einmal für diesen tollen Adapter! 8-) Endlich kann man auf die Hausdaten zugreifen, wenn man es selbst möchte. Früher ging das ja nur einseitig ala "Pushover sendet jeden Tag den Status". Das nutze ich nur noch bei Klingel oder Alarmmeldungen, um mich selbst etwas "freier" von den Meldungen zu machen.

                        1 Reply Last reply Reply Quote 0
                        • S
                          simpixo last edited by

                          Kannst du vielleicht die Scripte veröffentlichen!? Würde mich interessieren wie das gelöst wurde

                          Danke schon mal dafür [emoji6][emoji1360]

                          Gesendet von meinem iPhone mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • S
                            Solear last edited by

                            Ja, hatte ich weiter oben schon, aber hier noch einmal die überarbeiteten Beispiele:

                            Ist jeweils ein Skript im Skriptordner "Telegram"

                            Kellerdaten

                            ! ````
                            // #####################################################
                            // Kellerdaten anzeigen
                            ! on("telegram.0.communicate.request", function (obj) {
                            if (obj.newState.val == "[Henrik]kellerdaten" || obj.newState.val == "[Henrik]/kellerdaten") {

                               var kellerfrid = "hm-rpc.0.LEQ108xxxx.1.HUMIDITY"/*Temperatur Feuchtesensor Keller Mitte.HUMIDITY*/;  // Kellerfeuchte relativ
                               var kellerfaid = "javascript.0.Keller.Feuchtegehalt"/*Keller.Feuchtegehalt*/;   // Kellerfeuchte absolut
                               var aussenfrid = "javascript.0.Aussen.rel_Feuchte"/*Aussen.rel_Feuchte*/;
                               var aussenfaid = "javascript.0.Aussen.Feuchtegehalt"/*Aussen.Feuchtegehalt*/;   // Außenfeuchte absolut
                               var kellerfenstwaid = "hm-rpc.0.MEQ028xxxx3.1.STATE"/*Fenstersensor Keller Waschraum.STATE*/; // Kellerfenster Waschraum
                               var kellerfenstsiid = "hm-rpc.0.MEQ028xxxx6.1.STATE"/*Fenstersensor Keller Sicherungsraum.STATE*/; // Kellerfenster Sicherungsraum
                               var lueftenid = "javascript.0.Lueften.Lueften"/*Lueften.Lueften*/;
                            

                            ! var kellerfr = getState(kellerfrid).val;
                            var kellerfa = getState(kellerfaid).val;
                            var aussenfr = getState(aussenfrid).val;
                            var aussenfa = getState(aussenfaid).val;
                            var lueften = getState(lueftenid).val;
                            var kellerfenstwa = getState(kellerfenstwaid).val;
                            var kellerfenstsi = getState(kellerfenstsiid).val;

                               sendTo('telegram', '#Kellerfeuchte ' + kellerfr + ' % / ' + kellerfa + ' g/kg' +
                            
                                                 '\n' + '#Außenfeuchte ' + aussenfr + ' % / ' + aussenfa + ' g/kg' +        //   Zeilenumbruch: \n 
                                                 '\n' + '#Lüftenmöglich ' + lueften + 
                                                 '\n' + '#Fensteroffen ' + kellerfenstwa + ' / ' + kellerfenstsi +
                                                 '\n' + 
                                                 '\n' + 'Kellerfenster ' +
                                                 '\n' + '- schließen? /kellerfensterschliessen' +                           // Neuer BEfehl wird angezeigt! Skript Kellerfensterschließen erforderlich!
                                                 '\n' + '- öffnen? /kellerfensteroeffnen' +
                                                 '\n' + 
                                                 '\n' + 'Was noch?' +
                                                 '\n' + '/verbrauchsdaten' +
                                                 '\n' + '/torfoto'); 
                               setState("telegram.0.communicate.request","leer");
                            

                            }
                            });

                            ! ````

                            Verbrauchsdaten

                            ! ````
                            ! // #####################################################
                            // Verbrauchsdaten
                            ! on("telegram.0.communicate.request", function (obj) {
                            if (obj.newState.val == "[Henrik]verbrauchsdaten" || obj.newState.val == "[Henrik]/verbrauchsdaten") {

                               var stromhausid = "hm-rpc.0.MEQ03xxxx.1.POWER";
                               var stromhaus = getState(stromhausid).val;
                            
                               var strommessid = "hm-rpc.0.MEQ02xxxx.2.POWER"/*Strommessstecker Waschmaschine:2.POWER*/;
                               var strommess = getState(strommessid).val;
                            
                               var gashausid = "hm-rpc.0.MEQ038xxxx.1.GAS_POWER";
                               var gashaus = getState(gashausid).val;
                            
                               sendTo('telegram', 'Stromverbrauch Haus: ' + stromhaus + ' Watt' +
                                           '\n' + 'Strommessstecker: ' + strommess + ' Watt' +
                                           '\n' +
                                           '\n' + 'Gasverbrauch: ' + gashaus + ' m3' +
                                           '\n' + 
                                           '\n' + 'Was noch?' +
                                           '\n' + '/torfoto' +
                                           '\n' + '/kellerdaten');
                            
                               setState("telegram.0.communicate.request","leer");
                            

                            }
                            });

                            
                             ****Webcamfoto****
                            
                            >! ````
                            // ###################################################
                            // Webcamfoto schicken
                            >! on("telegram.0.communicate.request", function (obj) {
                               if  (obj.newState.val == "[Henrik]torfoto" || obj.newState.val == "[Henrik]/torfoto") {      
                                   getfoto(); 
                                   setState("telegram.0.communicate.request","leer");
                               }
                            });
                            >! function getfoto() {
                                    exec ("wget --user=xxxx --password=xxxxx -N -P /home/henrik/iobroker/cache http://192.168.1.xxx/dms?nowprofileid=1.jpg");
                                    sendphoto();                                    // Rufe Funktion sendphoto auf
                            
                                    sendTo('telegram', 'Was noch?' +
                                               '\n' + '/verbrauchsdaten' +
                                               '\n' + '/kellerdaten');
                                    setState("telegram.0.communicate.request","leer");
                            
                            }
                            >! function sendphoto() {                      // Warteschleife, 2 Sekunden, damit das Bild erzeugt wird
                                setTimeout(waittime, 3000);    
                            }
                            >! function waittime() {                       // Nach der Warteschleife, sende das Bild per Telegram
                                sendTo('telegram', "/home/henrik/iobroker/cache/dms?nowprofileid=1.jpg");  
                            }
                            

                            Im Prinzip ist es für Telegram wichtig, mit einem on Skript auf Telegram auf einem bestimmten Befehl zu lauschen und diesen dann nach der Abfrage zurückzusetzen:

                            on("telegram.0.communicate.request", function (obj) {
                               if  (obj.newState.val == "[Henrik]torfoto" || obj.newState.val == "[Henrik]/torfoto") {      // Hier wird gelauscht auf den Befehl "torfoto" oder "/torfoto"
                                   getfoto(); 															  // nun eine Funktion ausführen
                                   setState("telegram.0.communicate.request","leer");						  // Telegrambefehl zurücksetzen
                               }
                            });
                            

                            In Telegram über den Botfather kann man Befehle definieren, so dass man auf der Tastatur nur auf das / klicken muss um die vorher gespeicherten Befehle auflisten zu lassen.

                            In meinen Telegramantworten liste ich mit "Was noch? /verbrauchsdaten /foto /etc" noch direkt die weiteren (sinnvollen) Möglichkeiten auf. Diese Befehle kann ich dann nacheinander antippen und abfragen.

                            Siehe Foto

                            1145_bildschirmfoto_vom_2016-05-05_21-54-08.png

                            1 Reply Last reply Reply Quote 0
                            • P
                              pix last edited by

                              Hallo,

                              tolles Werkzeug, danke für die ausführliche Darstellung. Es braucht zwar einige Zeit zum Einstellen / Skripten, aber dann klappt das wunderbar. Nutze diese "Dialoge" für die Lichtsteuerung. Vor allem in Verbindung mit dem Scenes-Adapter sehr mächtig.

                              Danke!

                              Pix

                              1 Reply Last reply Reply Quote 0
                              • ruhr70
                                ruhr70 last edited by

                                Sehr fein 🙂 Das sind wirklich schöne Beispiele.

                                Anbei noch ein RegEx für die Abfrage:

                                on({id:"telegram.1.communicate.request",change:'any'}, function (obj) {
                                    if  (obj.newState.val.match(/([.+])(\/|)klima/i)) {
                                

                                Einmal habe ich im on() change:'any' genutzt, damit man das gleiche Kommando zweimal schicken kann.

                                Und das RegEx reagiert auf jeden Usernamen, dem Stichwort mit und ohne "/" und Groß-/Kleinschreibung wird ignoriert.

                                Nach dem Stichwort (hier: "Klima") kann der weitere Text dahinter im Skript auch noch ausgewertet werden.

                                1 Reply Last reply Reply Quote 0
                                • R
                                  RS_Tobi last edited by

                                  Hallo,

                                  jetzt muss ich mich mal kurz hier "reinhängen" ich habe laut SuFu nichts passenderes gefunden.

                                  Falls ich TOTAL OFFTOPIC bin, bitte verschieben oder ich mach einen neuen Thread auf.

                                  Ich würde gerne über Telegram/text 2 command ein Schaltsignal in TASTEND durchführen,

                                  Leider schaffe ich es nur entweder eine 1 oder ein 0 Wert zu schalten.

                                  Habt ihr einen Denkanstoß für mich?

                                  Danke

                                  Tobi

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Solear last edited by

                                    Meinst du einen Taster simulieren?

                                    Direkt nach dem "true" setzen mit demselben Befehl wieder auf "false" oder "null" oder was auch immer setzen.

                                    1 Reply Last reply Reply Quote 0
                                    • R
                                      RS_Tobi last edited by

                                      Hallo,

                                      ja einen Taster simulieren.

                                      wenn ich jetzt im Text 2 Command unter Parameter (Wert zu schreiben) eine 1 eingebe, dann

                                      sendet er mir beim Befehl eine 1, aber wie kann ich diesen wert wieder automatisch nach ca 1 oder 1 sek. wieder

                                      auf 0 setzen lassen?

                                      Danke

                                      EDIT:

                                      Habe mir deinen Beitrag jetzt 5 mal durchgelsen, ich denke ich denke ich weiß jetzt was du meinst.

                                      tobi

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Solear last edited by

                                        Ob es so klappt, keine Ahnung, so würde ich jedenfalls herangehen, wenn nur etwas kurz umgeschaltet werden soll.

                                        Für Telegram:

                                        on("telegram.0.communicate.request", function (obj) {
                                           if  (obj.newState.val == "[xxx]text" || obj.newState.val == "[xxx]/text") {      
                                                   sendTo('telegram.0', "Text erhalten!");  
                                               setState("telegram.0.communicate.request","leer");
                                        
                                               setState("Gerät",true);  
                                               setTimeout(waittime, 1000); 	// 1 Sekunde Pause, dann weiter
                                               setState("Gerät",false);  
                                        
                                           }
                                        });
                                        
                                        

                                        Die letzten 3 set Befehle.

                                        Ob der setTimeout Befehl sein muss weiß ich nicht, wenn es nur "on(…)", also maschinenerkennbar sein soll kann man es vermutlich weglassen.

                                        edit:

                                        Ach so, mit text2command.

                                        Ja ne keine Ahnung. Das Skript holt sich das direkt hier aus Telegram.

                                        1 Reply Last reply Reply Quote 0
                                        • R
                                          RS_Tobi last edited by

                                          HI!

                                          ich finde es gerade TOLL!! :lol:

                                          Du erklärst mir was, ich verstehe was anderes und trotzdem funktioniert es!

                                          Ich habe im Text -> Command Adapter eine Regel erstellt und die selbe nochmal

                                          kopiert. Bei der ersten setzte ich Wert "1" und mache den Haken für ANHALTEN raus.

                                          Beim der zweiten Regel setzte ich Wert "0" und lasse den Haken drin für ANHALTEN.

                                          Wenn ich die beiden Regeln in Reihe habe dann setzt er mir (zumindest laut LOG Datei)

                                          erst eine "1" und dann eine "0"

                                          aber wo muss ich den skript eingeben den du mir gesendet hast?

                                          grüße Tobi

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            Solear last edited by

                                            @RS_Tobi:

                                            HI!

                                            ich finde es gerade TOLL!! :lol: `

                                            :lol: :lol:

                                            Hauptsache es hat geklappt! Die (also unsere) Lösung(en) sind nicht schön, aber selten 8-)

                                            Mit den Skripten,

                                            da installierst du dir den Javascript Adapter. Nach einem Neustart siehst du einen neuen Reiter: Skripte.

                                            Dort kannst du verschiedene Skripte (also Miniprogramme) anlegen.

                                            Ziemlich kompliziert für Anfänger, aber hier kann man im Skriptunterforum einige Beispiele abkupfern oder nachfragen.

                                            Ich habe damit meine Telegramanworten so programmiert, dass ich mittels einfachen Druck wunderbare Abfragen und Befehle absetzen kann.

                                            Das sieht so aus:

                                            http://forum.iobroker.de/viewtopic.php? … =20#p25263

                                            Ist letztlich leichter als mit text2command, denn letztlich schreibt man doch keine ganzen Sätze wenn es nur auf "Licht an" ankommt. Das wird erst interessant wenn es etwas gibt, dass permanent im Raum akustisch mithört und die Befehle herausfiltert (wie was Amazon mit Alexa anbietet, nur lokal).

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            792
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            23
                                            137
                                            30228
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo