Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Konversation mit dem BOT via Telegram

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Konversation mit dem BOT via Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fliegema @bahnuhr last edited by

      @bahnuhr Super Danke Dir, habe es testweise mit meinen 10min JavaScript google Kenntnissen sogar fertig gebracht, es in einem Datenpunkt zu schreiben.

          var vEingabe = getState('telegram.0.communicate.request'/*Last received request*/).val;   // Test Eingabe per telegram auf dem Handy
          var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));
          vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
          vEingabe = vEingabe.replace("Strom", ''); 
          setState('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe);
          log (vEingabe);
          console.log (vEingabe);
      

      Leider schreibt er in den Datenpunkt alles was bei Telegram rein kommt. Somit müsste ich erst noch eine If Abfrage rein basteln müssen, dass er nur Werte übernimmt, wenn die lastrequest "Stom" war.

      Da es funktioniert markiere ich es als gelöst, sollte Jemand jedoch bei der Blockly Weise weiterhelfen können, gerne her damit.

      Werde mich dann wohl mal mit Java auseinandersetzen 🙂

      bahnuhr 2 Replies Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @fliegema last edited by

        @fliegema

        dann so:

            var vEingabe = getState('telegram.0.communicate.request'/*Last received request*/).val;   // Test Eingabe per telegram auf dem Handy
            var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));
            vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
            if (vEingabe.indexOf('Strom') > -1) {
               vEingabe = vEingabe.replace("Strom", ''); 
               setState('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe);
               log (vEingabe);
               console.log (vEingabe);
            }
        

        Jetzt wird der Wert nur eingetragen, wenn "Strom" im Text enthalten ist !

        1 Reply Last reply Reply Quote 1
        • bahnuhr
          bahnuhr Forum Testing Most Active @fliegema last edited by

          @fliegema

          auch wichtig;
          ae6dc418-04ac-42e7-a903-a2ca62df9e0c-image.png

          1 Reply Last reply Reply Quote 1
          • F
            fliegema last edited by

            @bahnuhr , Geiler Typ!

            Habe noch einen Trigger hinzugefügt, dass er das immer prüft.

            Läuft!

            on('telegram.0.communicate.request'/*Last received request*/, function (obj) {
                var vEingabe = getState('telegram.0.communicate.request'/*Last received request*/).val;   // Test Eingabe per telegram auf dem Handy
                var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));
                vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
                if (vEingabe.indexOf('Strom') > -1) {
                   vEingabe = vEingabe.replace("Strom", ''); 
                   setState('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe);
                   log (vEingabe);
                   console.log (vEingabe);
                }
            });
            

            Darf ich Dich noch belästigen, wie ich diese Warnung zu verstehen habe?

            20:58:11.507	warn	javascript.0 (20713) at Object.<anonymous> (script.js.common.Telegram.00_PowerMeter:7:8)
            
            bahnuhr 1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @fliegema last edited by

              @fliegema sagte in Konversation mit dem BOT via Telegram:

              20:58:11.507 warn javascript.0 (20713) at Object.<anonymous> (script.js.common.Telegram.00_PowerMeter:7:8)

              Wie hast du den DP angelegt?
              number oder string ?

              vEingabe ist ja ein string.
              Evtl. musst du diesen noch wandeln in eine number !

              F 1 Reply Last reply Reply Quote 1
              • F
                fliegema @bahnuhr last edited by

                @bahnuhr said in Konversation mit dem BOT via Telegram:

                @fliegema sagte in Konversation mit dem BOT via Telegram:

                20:58:11.507 warn javascript.0 (20713) at Object.<anonymous> (script.js.common.Telegram.00_PowerMeter:7:8)

                Wie hast du den DP angelegt?
                number oder string ?

                vEingabe ist ja ein string.
                Evtl. musst du diesen noch wandeln in eine number !

                Habe es gepackt, es klappt! Geil!.

                Jetzt wäre es aber noch super, wenn man den Input prüft, ob dieser größer ist als vorher. Daher dachte ich mir, dass ich eine neue Variable anlegen und gegen diese prüfe, klappt aber scheinbar nicht. Bekomme leider auch keine Fehlermeldung. Denke ich hier zusehr blockly? If AlterWert < vEingabe --> mache weiter. Könntest Du hier bitte nochmal drüber gucken?

                on('telegram.0.communicate.request'/*Last received request*/, function (obj) {
                    var vEingabe = getState('telegram.0.communicate.request'/*Last received request*/).val;   // Test Eingabe per telegram auf dem Handy
                    var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));
                    var vAlterWert;
                    vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
                    if (vAlterWert < vEingabe) {
                        if (vEingabe.indexOf('Strom') > -1) {
                            vEingabe = vEingabe.replace("Strom", ''); 
                            setObject('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe);
                            vAlterWert = vEingabe;
                            // log (vEingabe);
                            console.log ("Aktueller Wert: "+ vEingabe);
                            console.log ("Alter Wert: "+ vAlterWert);
                            }
                        }
                });
                
                bahnuhr 1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @fliegema last edited by bahnuhr

                  @fliegema

                  Du hast vAlterWert zugewiesen wenn der neue Wert geschrieben werden soll. Dieser wird aber nicht behalten.
                  Heißt: Beim nächsten Durchlauf ist valter... = 0

                  du musst den alten Wert am Anfang holen per getState.
                  Also so:

                  on('telegram.0.communicate.request'/*Last received request*/, function (obj) {
                      var vAlterWert =  getState('0_userdata.0.00_Powertest').val;
                      var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));    
                      var vEingabe = obj.state.val;    //ist einfacher als der alte Text !
                      vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
                      vEingabe_wert = vEingabe.replace("Strom", ''); 
                          if (vEingabe.indexOf('Strom') > -1  && vEingabe_wert > vAlterWert) {
                              setObject('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe_wert);
                              log ("Aktueller Wert: "+ vEingabe_wert);
                              log ("Alter Wert: "+ vAlterWert);
                              }
                  });
                  

                  Jetzt wird der neue Wert nur geschrieben wenn er größer ist als der alte gespeicherte!

                  F 1 Reply Last reply Reply Quote 1
                  • F
                    fliegema @bahnuhr last edited by

                    @bahnuhr said in Konversation mit dem BOT via Telegram:

                    @fliegema

                    Du hast vAlterWert zugewiesen wenn der neue Wert geschrieben werden soll. Dieser wird aber nicht behalten.
                    Heißt: Beim nächsten Durchlauf ist valter... = 0

                    du musst den alten Wert am Anfang holen per getState.
                    Also so:

                    on('telegram.0.communicate.request'/*Last received request*/, function (obj) {
                        var vAlterWert =  getState('0_userdata.0.00_Powertest').val;
                        var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));    
                        var vEingabe = obj.state.val;    //ist einfacher als der alte Text !
                        vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
                        vEingabe_wert = vEingabe.replace("Strom", ''); 
                            if (vEingabe.indexOf('Strom') > -1  && vEingabe_wert > vAlterWert) {
                                setObject('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe_wert);
                                log ("Aktueller Wert: "+ vEingabe_wert);
                                log ("Alter Wert: "+ vAlterWert);
                                }
                    });
                    

                    Jetzt wird der neue Wert nur geschrieben wenn er größer ist als der alte gespeicherte!

                    Guten Morgen,

                    leider haut das nicht hin.

                    Kann es sein, dass die Variable vEingabe_wert nicht initialisiert ist?

                    Selbst wenn ich diese aber in Zeile 6 erstelle, klappt es nicht. Bekomme als Fehler nur den Number/String Fehler:

                    on('telegram.0.communicate.request'/*Last received request*/, function (obj) {
                        var vAlterWert =  getState('0_userdata.0.00_Powertest'/*00 Powertest*/).val;
                        var vUser = vEingabe.substring(1, vEingabe.indexOf("]"));    
                        var vEingabe = obj.state.val;    //ist einfacher als der alte Text !
                        vEingabe = vEingabe.substring(vEingabe.indexOf("]") + 1, vEingabe.length);
                        var vEingabe_wert = vEingabe.replace("Strom", ''); 
                            if (vEingabe.indexOf('Strom') > -1  && vEingabe_wert > vAlterWert) {
                                setObject('0_userdata.0.00_Powertest'/*00 Powertest*/,vEingabe_wert);
                                log ("Aktueller Wert: "+ vEingabe_wert);
                                log ("Alter Wert: "+ vAlterWert);
                                }
                    });
                    
                    09:52:22.065	error	javascript.0 (5205) at Object.<anonymous> (script.js.common.Telegram.00_PowerMeter:3:26)
                    

                    Selbst wenn ich in Zeile 2 get State auf getObject ändere klappt es nicht:

                    var vAlterWert =  getObject('0_userdata.0.00_Powertest'/*00 Powertest*/).val;
                    

                    Im datenpunkt ist gerade der Wert manuell gesetzt: 2580, per Telegram sende ich 3000

                    Komme leider nicht weiter.

                    bahnuhr 1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active @fliegema last edited by

                      @fliegema

                      Anydesk ?

                      F 1 Reply Last reply Reply Quote 1
                      • F
                        fliegema @bahnuhr last edited by

                        @bahnuhr said in Konversation mit dem BOT via Telegram:

                        @fliegema

                        Anydesk ?

                        Ich versuche erst nochmal mit Google die Java Kenntnisse zu erweitern, und melde mich nochmal. Danke Dir schon mal fürs Angebot.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        818
                        Online

                        32.1k
                        Users

                        80.6k
                        Topics

                        1.3m
                        Posts

                        2
                        12
                        410
                        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