Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [gelöst] telegram -> text2command mit Parameter

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    533

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    622

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

[gelöst] telegram -> text2command mit Parameter

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
18 Beiträge 5 Kommentatoren 4.9k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J Offline
    J Offline
    joerg66
    schrieb am zuletzt editiert von
    #9

    Darum. Bei mir sind die "Einstellungen" des Adapter's auch grau.

    Ich versuche es dann heute Abend mal ohne text2command

    1 Antwort Letzte Antwort
    0
    • lobomauL Offline
      lobomauL Offline
      lobomau
      schrieb am zuletzt editiert von
      #10

      @ruhr70:

      Wenn Du text2command gar nchit verwenden willst, lösche es einfach und Dein Skript ein paar Post höher bekommt nicht mehr die Rückmeldung "Ich verstehe "wzt 50" nicht". `
      Sollte doch auch reichen, wenn man einfach beim telegram Adapter unter "text2Command-Instanz", "keins" auswählt.

      Ich habe zwei telegram Instanzen, bei der einen ist "keins" ausgewählt, da gibt es dann keine Antwort.

      Host: NUC8i3 mit Proxmox:

      • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
      • Slave: Pi4
      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #11

        Hallo,

        wenn ich mich nicht irre, kann man auch den Datenpunkt text2command.0.response dafür überwachen.

        Dann werden so Ausgaben von text2command an den Datenpunkt textProcessor geleitet.

        on("text2command.0.response"/*Answer on requested question*/, "javascript.0.textProcessor");
        
        

        261_bildschirmfoto_2018-04-11_um_10.32.50.jpg

        Gruß,

        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #12

          Danke Pix!

          Ich hatte Settings aus der Beschreibung als Einstellungen unter der Adapter Instanz interpretiert.

          Das Fenster, welches Du gepostet hast, findet sich aber unter dem Zahnrad auf der Regelseite vom Adapter.

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Antwort Letzte Antwort
          0
          • J Offline
            J Offline
            joerg66
            schrieb am zuletzt editiert von
            #13

            Dann habe ich den text2command jetzt deaktiviert. Finde es übersichtlicher, wenn die Eingaben nicht an zweierlei Stellen bearbeitet werden.

            Außerdem brauche ich dann den textProzessor nicht …. oder denke ich da falsch?

            So habe ich das jetzt am Laufen, das heißt nicht ganz so. Es läuft ohne die Parameterübergabe an die Funktion Jalousie(). In der Funktion würde ich mir gerne die ersten 4 Zeilen sparen und das Array Ausgabe[] übergeben, bekomme aber bei "function Jalousie(String Zeichen[]){" einen Fehler. Warum das denn nun?

            on ({id: "telegram.0.communicate.request",  change:  "any"}, Befehl);
                function Befehl(){
                    var Ausgabe = getState("telegram.0.communicate.request").val;
                    Ausgabe = Ausgabe.split(" ");
                    Ausgabe[0] = Ausgabe[0].substring(4);
                    switch (Ausgabe[0]) {
                        case "wzf":  Jalousie(Ausgabe);
                                 break;
                        case "wzt":  Jalousie(Ausgabe);
                                 break;
            
                        default: sendTo("telegram", "send", { text: (String('Die Anweisung ist unbekannt'))
                                    });
                    }
                }
            
                function Jalousie(String Zeichen[]){
                    var Ausgabe = getState("telegram.0.communicate.request").val;
                    Ausgabe = Ausgabe.split(" ");
                    var Fenster = Ausgabe[0].substring(4);
                    var Prozent = Ausgabe[1];
                    if(Fenster == "wzf") //Wohnzimmerfenster
                    {
                        setState("hm-rpc.0.NEQ0057186.1.LEVEL"/*Jalousie Wohnzimmerfenster.LEVEL*/, Prozent);
                    }
                    else if(Fenster == "wzt") //Wohnzimmerterasse
                    {
                        setState("hm-rpc.0.NEQ0050764.1.LEVEL"/*Jalousie Terrassentuer.LEVEL*/, Prozent);
                    }
                    else
                        setState("javascript.0.textProcessor", '', true);
            }
            
            
            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #14

              @joerg66:

              Dann habe ich den text2command jetzt deaktiviert. Finde es übersichtlicher, wenn die Eingaben nicht an zweierlei Stellen bearbeitet werden.

              Außerdem brauche ich dann den textProzessor nicht …. oder denke ich da falsch?

              So habe ich das jetzt am Laufen, das heißt nicht ganz so. Es läuft ohne die Parameterübergabe an die Funktion Jalousie(). In der Funktion würde ich mir gerne die ersten 4 Zeilen sparen und das Array Ausgabe[] übergeben, bekomme aber bei "function Jalousie(String Zeichen[]){" einen Fehler. Warum das denn nun? `

              Versuche mal bitte:

              on ({id: "telegram.0.communicate.request",  change:  "any"}, Befehl);
                  function Befehl(){
                      var ausgabe = getState("telegram.0.communicate.request").val;
                      var ausgabeArr = ausgabe.split(" ");
              
                      switch (ausgabe[0]) {
                          case "wzf":  Jalousie(ausgabeArr);
                                   break;
                          case "wzt":  Jalousie(ausgabeArr);
                                   break;
              
                          default: sendTo("telegram", "send", { text: (String('Die Anweisung ist unbekannt'))
                                      });
                      }
                  }
              
                  function Jalousie(ausgabeArr){
                      var Fenster = ausgabeArr[0];
                      var Prozent = parseInt(ausgabeArr[1]);
                      if(Fenster == "wzf") //Wohnzimmerfenster
                      {
                          setState("hm-rpc.0.NEQ0057186.1.LEVEL"/*Jalousie Wohnzimmerfenster.LEVEL*/, Prozent);
                      }
                      else if(Fenster == "wzt") //Wohnzimmerterasse
                      {
                          setState("hm-rpc.0.NEQ0050764.1.LEVEL"/*Jalousie Terrassentuer.LEVEL*/, Prozent;
                      }
                      else
                          setState("javascript.0.textProcessor", '', true);
              }
              

              Ein paar Fehler könnte man noch abfangen.

              • keine Zahl eingegeben

              • ungültiger Wertebereich

              • ungültige Anzahl von Kommandos

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • J Offline
                J Offline
                joerg66
                schrieb am zuletzt editiert von
                #15

                Vielen Dank, ich war nur fest der Meinung, in der Funktion muss der Typ angegeben werden, ist doch in Java eigentlich so. :x

                Na egal. Die Zeile: Ausgabe[0] = Ausgabe[0].substring(4);

                ist nötig, weil am Anfang, also vor dem wzt/wzf "[J.]" steht und das schneide ich weg.

                Eingefügt habe ich noch: var Prozent = Integer.parseInt(Ausgabe[1]);

                weil ich eine Warnung bekommen habe,das die Zahl als String in der nächsten Version einen Fehler geben wird.

                Die Fehlerabfragen kommen noch, aber für Leute die ähnliches machen wollen, ist der code so übersichtlicher.

                Das funktionierende Ergebnis ist unten eingestellt und kann beliebig erweitert werden:

                on ({id: "telegram.0.communicate.request",  change:  "any"}, Befehl);
                    function Befehl(){
                        var Ausgabe = getState("telegram.0.communicate.request").val;
                        Ausgabe = Ausgabe.split(" ");
                        Ausgabe[0] = Ausgabe[0].substring(4);
                        switch (Ausgabe[0]) {
                            case "wzf":  Jalousie(Ausgabe);
                                     break;
                            case "wzt":  Jalousie(Ausgabe);
                                     break;
                
                            default: sendTo("telegram", "send", { text: (String('Die Anweisung ist unbekannt'))
                                        });
                        }
                    }
                
                    function Jalousie(Ausgabe){
                        var Fenster = Ausgabe[0];
                        var Prozent = Integer.parseInt(Ausgabe[1]);
                        if(Fenster == "wzf") //Wohnzimmerfenster
                        {
                            setState("hm-rpc.0.NEQ0057xxx.1.LEVEL"/*Jalousie Wohnzimmerfenster.LEVEL*/, Prozent);
                        }
                        else if(Fenster == "wzt") //Wohnzimmerterasse
                        {
                            setState("hm-rpc.0.NEQ0050xxx.1.LEVEL"/*Jalousie Terrassentuer.LEVEL*/, Prozent);
                        }
                        else
                            setState("javascript.0.textProcessor", '', true);
                }
                
                

                Vielen Dank an alle, die mir geholfen haben !!!

                1 Antwort Letzte Antwort
                0
                • lobomauL Offline
                  lobomauL Offline
                  lobomau
                  schrieb am zuletzt editiert von
                  #16

                  @joerg66:

                  Vielen Dank, ich war nur fest der Meinung, in der Funktion muss der Typ angegeben werden, ist doch in Java eigentlich so. :x

                  Na egal. Die Zeile: Ausgabe[0] = Ausgabe[0].substring(4);

                  ist nötig, weil am Anfang, also vor dem wzt/wzf "[J.]" steht und das schneide ich weg.

                  Eingefügt habe ich noch: var Prozent = Integer.parseInt(Ausgabe[1]);

                  weil ich eine Warnung bekommen habe,das die Zahl als String in der nächsten Version einen Fehler geben wird.

                  Die Fehlerabfragen kommen noch, aber für Leute die ähnliches machen wollen, ist der code so übersichtlicher.

                  Das funktionierende Ergebnis ist unten eingestellt und kann beliebig erweitert werden:

                  on ({id: "telegram.0.communicate.request",  change:  "any"}, Befehl);
                      function Befehl(){
                          var Ausgabe = getState("telegram.0.communicate.request").val;
                          Ausgabe = Ausgabe.split(" ");
                          Ausgabe[0] = Ausgabe[0].substring(4);
                          switch (Ausgabe[0]) {
                              case "wzf":  Jalousie(Ausgabe);
                                       break;
                              case "wzt":  Jalousie(Ausgabe);
                                       break;
                                       
                              default: sendTo("telegram", "send", { text: (String('Die Anweisung ist unbekannt'))
                                          });
                          }
                      }
                  
                      function Jalousie(Ausgabe){
                          var Fenster = Ausgabe[0];
                          var Prozent = Integer.parseInt(Ausgabe[1]);
                          if(Fenster == "wzf") //Wohnzimmerfenster
                          {
                              setState("hm-rpc.0.NEQ0057xxx.1.LEVEL"/*Jalousie Wohnzimmerfenster.LEVEL*/, Prozent);
                          }
                          else if(Fenster == "wzt") //Wohnzimmerterasse
                          {
                              setState("hm-rpc.0.NEQ0050xxx.1.LEVEL"/*Jalousie Terrassentuer.LEVEL*/, Prozent);
                          }
                          else
                              setState("javascript.0.textProcessor", '', true);
                  }
                  
                  

                  Vielen Dank an alle, die mir geholfen haben !!! `
                  Was muss ich noch anpassen, damit das Script bei mir funktioniert? Ich habe es so übernommen und lediglich die beiden homematic-Geräte angepasst und zwei Rollläden von mir genommen.

                  Hab gesendet "wzf" oder "wzt", als Antwort kommt dann immer Anweisung ist unbekannt

                  Host: NUC8i3 mit Proxmox:

                  • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                  • Slave: Pi4
                  1 Antwort Letzte Antwort
                  0
                  • J Offline
                    J Offline
                    joerg66
                    schrieb am zuletzt editiert von
                    #17

                    Zunächst sendest Du nur den halben Befehl.

                    Du mußt die Behanghöhe mit angeben, also "wzt 50". (Steht im Post weiter oben)

                    Dann fährt der Rolladen auf 50%.

                    Welch Meldung GENAU kommt denn, die "default" der Switch-case oder evtl. die von text2command?

                    text2command ist bei mir deaktiviert und im Telegram-Adapter abgewählt.

                    1 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      Berzi
                      schrieb am zuletzt editiert von
                      #18

                      Ich muss den alten Thread noch einmal herauskramen.
                      Ich habe mir ein Script nach dieser Manier hier geschrieben, um selbst variable Zahlen in Zustände per Telegram zu schreiben.

                      Wie hier schon bechrieben, meckert nun immer mein text2command, dass es den Befehl nicht versteht. (danach funktioniert die Verarbeitung wunderbar über mein Script)

                      Ich möchte text2command ungern deaktivieren, da ich alles Andere darüber umfangreich eingerichtet habe.

                      Kann ich das irgendwie unterbinden, dass text2command mir auf diesen einen Fall reagiert?
                      Ich konnte ein paar Ansätze in diesem Thread herauslesen, bin jedoch nicht schlau genug zur eigenen Umsetzung geworden.

                      Dankeschön! (auch für das Script hier!)

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

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

                      881

                      Online

                      32.6k

                      Benutzer

                      81.9k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe