Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Text2command + Telegrambot - "künstliche Intelligenz" scripten?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Text2command + Telegrambot - "künstliche Intelligenz" scripten?

Scheduled Pinned Locked Moved ioBroker Allgemein
38 Posts 16 Posters 9.4k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • HomoranH Offline
    HomoranH Offline
    Homoran
    Global Moderator Administrators
    wrote on last edited by
    #27

    Schon gelesen?

    https://www.heise.de/newsticker/meldung … 04454.html

    Gruß

    Rainer

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    1 Reply Last reply
    0
    • lobomauL Offline
      lobomauL Offline
      lobomau
      wrote on last edited by
      #28

      Das Script gefällt mir, habe ich eingebaut. Funktioniert korrekt, gibt bei mir aber einen error, der aber nicht die Funktion beeinträchtigt!? Vielleicht muss ich den user manuell eintragen?

      telegram.1	2017-11-29 23:00:05.879	error	Cannot send answerCallbackQuery [user - undefined]: Error: ETELEGRAM: 400 Bad Request: QUERY_ID_INVALID
      

      @dslraser:

      Ich habe das mal für mich umgebaut. Ob es korrekt ist (bin Anfänger) weiß ich nicht, aber es funktioniert.

      Die Abfrage in Telegram habe ich auf ein Wort gekürzt. Geht mit dem Wort Temperatur oder warm oder kalt.

      Vielleicht braucht/will das Jemand so nutzen

      on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
          var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
          var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
      
           if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b)).+/ig) != -1) {
              sendTo('telegram', {
                  user: benutzer,
                  text: 'Für welchen Raum möchtest du die Temperatur abfragen?',
                  reply_markup: {
                      inline_keyboard: [
                          [{ text: 'alle Räume', callback_data: '%Tempalle'}],
                          [{ text: 'Flur', callback_data: '%TempFlur'}],
                          [{ text: 'Wohnzimmer', callback_data: '%TempWohnzimmer'}],
                          [{ text: 'Badezimmer', callback_data: '%TempBadezimmer'}], 
                          [{ text: 'Gästezimmer', callback_data: '%TempGaestezimmer'}],
                          [{ text: 'Schlafzimmer', callback_data: '%TempSchlafzimmer'}],
                      ]
                   }
              });
          }    
          
      // Auswahl alle Räume oder einzeln.
          else if (befehl === "%Tempalle") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Temperatur alle Räume angefragt",
                  answerCallbackQuery: {
                  text: 'Flur ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C\nWonzimmer ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C\nBadezimmer ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C\nGästezimmer ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C\nSchlafzimmer ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          } 
          else if (befehl === "%TempFlur") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Flurtemperatur angefragt",
                  answerCallbackQuery: {
                  text: 'Die Temperatur im im Flur beträgt ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          } 
          else if (befehl === "%TempSchlafzimmer") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Schlafzimmertemperatur angefragt",
                  answerCallbackQuery: {
                  text: 'Die Temperatur im Schlafzimmer beträgt ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          }
          else if (befehl === "%TempGaestezimmer") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Gästezimmertemperatur angefragt",
                  answerCallbackQuery: {
                  text: 'Die Temperatur im Gästezimmer beträgt ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          }
          else if (befehl === "%TempWohnzimmer") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Wohnzimmertemperatur angefragt",
                  answerCallbackQuery: {
                  text: 'Die Temperatur im Wohnzimmer beträgt ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          }
          else if (befehl === "%TempBadezimmer") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Badezimmertemperatur angefragt",
                  answerCallbackQuery: {
                  text: 'Die Temperatur im Badezimmer beträgt ' + getState("hm-rpc.0..1.ACTUAL_TEMPERATURE").val + '°C',
                  showAlert: true
                  }
              });
          }
      });
      ```` ` 

      Host: NUC8i3 mit Proxmox:

      • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
      • Slave: Pi4
      1 Reply Last reply
      0
      • dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        wrote on last edited by
        #29

        Ich habe keinen Benutzer eingetragen

        1 Reply Last reply
        0
        • dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          wrote on last edited by
          #30

          @lobomau:

          Das Script gefällt mir, habe ich eingebaut. `
          Ich habe für mich für die Batteriegeräte noch das gleiche Script gemacht, allerdings geht da nicht die komplette Abfrage für alle Geräte, dann kommt bei mir auch ne Fehlermeldung im Log (Sinngemäß: Nachricht zu lang) Hier sind die Wörter Batterie/voll/leer/Volt.

          ! ````
          on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
          var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben
          var benutzer = stateval.substring(1,stateval.indexOf("]")); // Benutzer aus Statevalue extrahieren
          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length); // Befehl/Text aus Statevalue extrahieren
          ! if (befehl.search(/(?=.*(\bBATTERIE\b|\bVOLL\b|\bLEER\b|\bVOLT\b)).+/ig) != -1) {
          sendTo('telegram', {
          user: benutzer,
          text: 'Für welchen Raum möchtest du die Batterie abfragen?',
          reply_markup: {
          inline_keyboard: [
          // [{ text: 'alle Räume', callback_data: '%Batalle'}],
          [{ text: 'Flur', callback_data: '%BatFlur'}],
          [{ text: 'Wohnzimmer', callback_data: '%BatWohnzimmer'}],
          [{ text: 'Badezimmer', callback_data: '%BatBadezimmer'}],
          [{ text: 'Gästezimmer', callback_data: '%BatGaestezimmer'}],
          [{ text: 'Schlafzimmer', callback_data: '%BatSchlafzimmer'}],
          ]
          }
          });
          }

          // Auswahl alle Räume oder einzeln.Alle Räume ist für Telegramm zu lang = Fehler im log
          /* else if (befehl === "%Batalle") {
          sendTo('telegram', {
          user: benutzer,
          text: "Batterien alle Räume angefragt",
          answerCallbackQuery: {
          text: 'Flur\nFlur Haustür ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nFlur Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nFlur Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          'Wohnzimme\nWohnzimmer Fenster links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Fenster rechts ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt',
          showAlert: true
          }
          });
          }*/
          else if (befehl === "%BatFlur") {
          sendTo('telegram', {
          user: benutzer,
          text: "Flur Batterie angefragt",
          answerCallbackQuery: {
          text:
          'Flur Haustür ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nFlur Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nFlur Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt',
          showAlert: true
          }
          });
          }
          else if (befehl === "%BatSchlafzimmer") {
          sendTo('telegram', {
          user: benutzer,
          text: "Schlafzimmer Batterie angefragt",
          answerCallbackQuery: {
          text:
          'Schlafzimmer Fenster links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nSchlafzimmer Fenster rechts ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nSchlafzimmer Wandthermostat ' + getState("hm-rpc.0.000A97099C2232.0.OPERATING_VOLTAGE").val +
          ' Volt\nSchlafzimmer Heizkörper links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nSchlafzimmer Heizkörper rechts ' + getState("hm-rpc.0.000A1709A1EBD5.0.OPERATING_VOLTAGE").val +
          ' Volt',
          showAlert: true
          }
          });
          }
          else if (befehl === "%BatGaestezimmer") {
          sendTo('telegram', {
          user: benutzer,
          text: "Gästezimmer Batterie angefragt",
          answerCallbackQuery: {
          text:
          'Gästezimmer Fenster links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nGästezimmer Fenster rechts ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nGästezimmer Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nGästezimmer Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt',
          showAlert: true
          }
          });
          }
          else if (befehl === "%BatWohnzimmer") {
          sendTo('telegram', {
          user: benutzer,
          text: "Wohnzimmer Batterie angefragt",
          answerCallbackQuery: {
          text:
          'Wohnzimmer Fenster links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Fenster rechts ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nWohnzimmer Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt',
          showAlert: true
          }
          });
          }
          else if (befehl === "%BatBadezimmer") {
          sendTo('telegram', {
          user: benutzer,
          text: "Badezimmer Batterie angefragt",
          answerCallbackQuery: {
          text:
          'Bad Fenster links ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nBad Fenster rechts ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nBad Wandthermostat ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val +
          ' Volt\nBad Heizkörper ' + getState("hm-rpc.0..0.OPERATING_VOLTAGE").val + ' Volt',
          showAlert: true
          }
          });
          }
          });

          [3822_bat.jpg](/assets/uploads/files/3822_bat.jpg)
          1 Reply Last reply
          0
          • R Offline
            R Offline
            robsdobs
            wrote on last edited by
            #31

            @dslraser:

            Ich habe keinen Benutzer eingetragen `

            Wenn nur eine Person den Bot Nutzer geht das. Sobald mehrere Nutzer den Bot nutzen, gehen alle Nachrichten ohne user immer an alle die den Bot nutzen. Daher im Multi-User Betrieb ist die Angabe des Benutzers schon sinnvoll.

            Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

            1 Reply Last reply
            0
            • lobomauL Offline
              lobomauL Offline
              lobomau
              wrote on last edited by
              #32

              @dslraser:

              Ich habe keinen Benutzer eingetragen `
              Läuft bei dir telegram mit "ständig Abfragen" oder "Server"?

              Bei mir ständig Abfragen… ich suche noch nach der Ursache meiner Fehlermeldung.

              Host: NUC8i3 mit Proxmox:

              • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
              • Slave: Pi4
              1 Reply Last reply
              0
              • dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                wrote on last edited by
                #33

                @lobomau:

                @dslraser:

                Ich habe keinen Benutzer eingetragen `
                Läuft bei dir telegram mit "ständig Abfragen" oder "Server"?

                Bei mir ständig Abfragen… ich suche noch nach der Ursache meiner Fehlermeldung. ` Ich bin gerade unterwegs, aber aus dem Kopf kann ich Dir sagen das ich keinen "Server" im Adapter konfiguriert habe. Im Moment nutze ich Telegram nur selbst und habe keinen weiteren Benutzer.

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  Basti1234
                  wrote on last edited by
                  #34

                  Danke für das Script, läuft super! Einzig die Fehlermeldung "ich verstehe xxx nicht" bekomme ich nicht raus. Hast du das gelöst?

                  1 Reply Last reply
                  0
                  • dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    wrote on last edited by
                    #35

                    @Basti1234:

                    Danke für das Script, läuft super! Einzig die Fehlermeldung "ich verstehe xxx nicht" bekomme ich nicht raus. Hast du das gelöst? ` nein, habe mich drann gewöhnt.

                    1 Reply Last reply
                    0
                    • E Offline
                      E Offline
                      erkenbrecht
                      wrote on last edited by
                      #36

                      @BuZZy:

                      Hab auch mal text2command außen vor gelassen und kurz & schnell ein Script erstellt womit man erstmal nur die Temperatur abfragen kann.

                      Wenn man nicht genau definiert was man abfragen will dann kommt eine Rückfrage mit Vorschlägen.

                      Beschäftige mich erst seit 2 Wochen mit Javascript.. Also bitte habt Verständnis falls es "komplizierter" Code ist.. 😄

                      Geht bestimmt noch einfacher aber wie gesagt, bin Javascript Neuling. :mrgreen:

                      on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
                          var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                          var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                          var unbekannt = [                                                           // Array für Antworten bei unbekanntem Befehl
                              'Ich weiß leider nicht was du meinst.',
                              'Das habe ich leider nicht verstanden.',
                              'Tut mir leid. Ich verstehe das nicht.'
                                          ];
                          var zufall = Math.floor(Math.random()*unbekannt.length);                    // Setzt eine zufällige Zahl für Antworten bei unbekanntem Befehl
                          
                          //createState('Telegram.Bot.Menu' + benutzer, '');                          // EVENTUELL Datenpunkt für "Menüführung" erstellen
                          //setState('Telegram.Bot.Menu' + benutzer, 'Ich bin hier');                 // EVENTUELL Schreiben in welchem Menü der Benutzer sich befindet.
                      
                      // Ab hier werden die zu beantwortenden Fragen definiert.
                      // /(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\bWOHNZIMMER\b|\bSTUBE\b)).+/ig
                      // reagiert auf Sätze in denen die Wörter
                      // (TEMPERATUR oder WARM oder KALT) UND (WOHNZIMMER oder STUBE) vorhanden sind.
                      // Klar definierte Abfragen müssen logischerweise oben stehen (Wie ist die Temperatur im Wohnzimmer?),
                      // damit das Script aufhört zu laufen wenn eine passende Antwort gefunden wurde.
                      // Unklar definierte Abfragen wo der Bot nachfragen muss was gemeint ist müssen weiter unten definiert werden.
                      // (Wie ist die Temperatur drin?) - Antwort vom Bot: "Welcher Raum ist gemeint? - Vorschlag 1, Vorschlag 2?"
                      
                          if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\bWOHNZIMMER\b|\bSTUBE\b)).+/ig) != -1) {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: 'Die Temperatur im Wohnzimmer beträgt ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!',
                              });
                          } 
                          else if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\bSCHLAFZIMMER\b)).+/ig) != -1) {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: 'Die Temperatur im Schlafzimmer beträgt ' + getState("hm-rpc.0.OEQ0291234.1.TEMPERATURE").val + '°C!',
                              });
                          } 
                          else if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\bDRINNE\b|\bDRIN\b|\bIM\b|\bIN\b)).+/ig) != -1) {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: 'Für welchen Raum möchtest du die Temperatur abfragen?',
                                  reply_markup: {
                                      inline_keyboard: [
                                          [{ text: 'Wohnzimmer', callback_data: '%TempWohnzimmer'}],
                                          [{ text: 'Schlafzimmer', callback_data: '%TempSchlafzimmer'}]
                                      ]
                                   }
                              });
                          }    
                          
                      // Ab hier werden die Reaktionen auf die returns zu "unklaren" Fragen definiert.
                          
                          else if (befehl === "%TempWohnzimmer") {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: "Wohnzimmertemperatur angefragt",
                                  answerCallbackQuery: {
                                      text: 'Die Temperatur im Wohnzimmer beträgt ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!',
                                      showAlert: true
                                  }
                              });
                          } 
                          else if (befehl === "%TempSchlafzimmer") {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: "Schlafzimmertemperatur angefragt",
                                  answerCallbackQuery: {
                                      text: 'Die Temperatur im Schlafzimmer beträgt ' + getState("hm-rpc.0.OEQ0291234.1.TEMPERATURE").val + '°C!',
                                      showAlert: true
                                  }
                              });
                          }
                          
                      // Wenn überhaupt kein Befehl erkannt wurde dann einen zufälligen Satz aus dem unbekannt Array senden
                      
                          else { 
                              sendTo('telegram', {user: benutzer, text: unbekannt[zufall]});
                          }
                      });
                      ```` `  
                      

                      Top. Genau sowas habe ich gesucht. Vielen Dank.

                      Was müsste ich in das Script noch reinschreiben, wenn ich über Telegram die Temperatur des Heizungsthermostates einstellen will? Also wenn ich dem Bot schreibe "Stelle Heizung im Wohnzimmer auf 22 Grad"

                      Hab jetzt schon eine Weile erfolglos gesucht ob ich etwas in der Art finde. Leider hab ich von Javascript so gar keinen Plan. In Blockly bekomme ich auch nur die einfachsten Sachen hin. Bin erst ein paar Tage dabei.

                      Beste Grüße

                      1 Reply Last reply
                      0
                      • F Offline
                        F Offline
                        Fischler
                        wrote on last edited by
                        #37

                        Moin moin,

                        In dem Script von dslRaser:

                        on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
                            var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                            var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                            var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                        
                             if (befehl.search(/(?=.*(\bBATTERIE\b|\bVOLL\b|\bLEER\b|\bVOLT\b)).+/ig) != -1) {
                                sendTo('telegram', {
                                    user: benutzer,
                                    text: 'Für welchen Raum möchtest du die Batterie abfragen?',
                                    reply_markup: {
                                        inline_keyboard: [
                                            [{ text: 'Flur', callback_data: '%BatFlur'}],
                                            [{ text: 'Wohnzimmer', callback_data: '%BatWohnzimmer'}],
                                            [{ text: 'Badezimmer', callback_data: '%BatBadezimmer'}], 
                                            [{ text: 'Gästezimmer', callback_data: '%BatGaestezimmer'}],
                                            [{ text: 'Schlafzimmer', callback_data: '%BatSchlafzimmer'}],
                                        ]
                                     }
                                });
                            }    
                        
                            ......
                        
                        

                        gibt es eine RegExp mommt

                        kann mir vielleicht jemand kurz die RegExp erklären?

                        /(?=.(\bBATTERIE\b|\bVOLL\b|\bLEER\b|\bVOLT\b)).+/ig*

                        Einiges habe ich schon selber heraus gefunden:

                        .* -> kein oder mehrere beliebige Zeichen

                        (\bBatterie\b|\bSpannung\b) -> allein stehendes Wort Batterie oder Spannung

                        .+ -> Ein oder mehrere beliebige Zeichen

                        i -> insensitiv (Klein und Großschreibung wird nicht beachtet)

                        g -> globale Suche

                        Wofür wird das ?= und das .+ benötigt ?

                        Da die Wörter Batterie, Voll, Leer und Volt ja alleine stehen (\bVoll\b) warum soll dann noch ein beliebiges Zeichen folgen?

                        Das ?= ist ja eine lookahead Anweisung aber davor steht ja nichts.

                        Ich hoffe Ihr könnt meinen Knoten im Kopf etwas lösen.

                        Danke schon mal.

                        1 Reply Last reply
                        0
                        • UhulaU Uhula

                          Da die Möglichkeiten von text2command nicht ausreichen um eine Konversation stattfinden zu lassen, kommt man um die Realisierung mit einem Script nicht herum. Ich bin gerade dabei eine ioBroker-AI/KI zu schreiben, mit der man, ähnlich dem Google-Assistenten, kommunizieren kann. Soll heißen, die sich Kontexte merkt und auch Nachfragen zu Befehlen stellt.

                          Bsp:

                          Sofalicht

                          < Was soll mit dem Sofalicht gemacht werden? Einschalten, ausschalten, ist es eingeschaltet, ist es ausgeschaltet

                          Einschalten

                          < Das Sofalicht wurde eingeschaltet

                          Das Licht im Flur dimmen

                          < Gerne, auf welchen Wert im Bereich 0 bis 100?

                          Auf 40

                          < Das Licht im Flur wurde auf 40 gedimmt

                          usw.

                          Der AI ist es dabei egal, ob die Anfragen/Antworten via Spracherkennung/Sprachausgabe oder Telegram-Chat erfolgen, sie untersucht lediglich die eingehenden Textphrasen und interpretiert sie. Damit es nicht zu langweilig wird, sind natürlich Antwortvarianten implementiert.

                          Bsp:

                          Schalte bitte das Sofalicht ein

                          < Das Sofalicht wurde eingeschaltet.

                          oder < Jo, habs eingeschaltet

                          oder < Sofalicht ist an

                          oder < ….

                          Die Steuerung erfolgt über RegEx-Keyworte und weiteren Angaben, die je ioBroker-State individuell vergeben werden können. Ich nutze absichtlich nicht die vorhandenen Aufzählungen um flexibel zu bleiben. Nichts ist eintöniger als immer die gleiche Antwort zu erhalten. Natürlich gibt es auch Konversations-Objekte ohne ioBroker-States dahinter - um das Gefühl zu haben, ioBroker könne wirklich kommunizieren.

                          Bsp:

                          Hallo

                          < Hallo, was kann ich für dich tun?

                          Wie heißt du?

                          < Man nennt mich Haus!

                          Wie spät ist es?

                          < Es ist 20 Uhr 13

                          Schalte das Licht aus?

                          < Gerne, aber wo? Wohnzimmer, Flur, Küche, überall

                          Überall

                          < Nun ist es dunkel.

                          Medienabghängig sind auch erweiterte Antworten möglich. So wird beim Telegram-Chat z.B. auch die Möglichkeit der Inline- und/oder Static-Buttons als Antwort möglich sein.

                          Wie weit ich bin? Erst am Anfang 😉

                          Aber, WENN es mal sinnvoll anwendbar ist, erfahrt ihr es zuerst ...

                          BBTownB Offline
                          BBTownB Offline
                          BBTown
                          wrote on last edited by
                          #38

                          @Uhula sagte in Text2command + Telegrambot - "künstliche Intelligenz" scripten?:

                          Ich bin gerade dabei eine ioBroker-AI/KI zu schreiben, mit der man, ähnlich dem Google-Assistenten, kommunizieren kann

                          Ich bin durch Zufall über diesen - zugegeben etwas älteren 😉 - Beitrag von dir gestolpert.
                          Mir blieb zunächst einmal der Mund offen stehen, als ich gelesen habe was Du urspünglich mal vorgehabt hast.

                          Da stellt sich für mich natürlich die neugierige Frage - Hast Du das Thema weiterverfolgt?
                          Gibt es es irgendetwas bei dem man in Form von testen oder ähnlichem unterstützen kann?

                          ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.0.7 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

                          1 Reply Last reply
                          1
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

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

                          580

                          Online

                          32.4k

                          Users

                          81.4k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe