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.0k

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

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

  • Neues Video über Aliase, virtuelle Geräte und Kategorien
    BluefoxB
    Bluefox
    25
    1
    1.3k

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.
  • lobomauL Offline
    lobomauL Offline
    lobomau
    wrote on last edited by
    #2

    Ja, gute Idee. Die Ansätze sind vorhanden bei mir. Müsste man nur einen Schritt weitermachen.

    Das ganz einfache habe ich: Regel: Wie kalt/warm ist drin, Trigger-Worte: aussen/draußen kalt/warm/temperatur -> Ergebnis vom HM Temp.Sensor im Wohnzimmer.

    Und das zweite ist eine Menüauswahl: Regel: Schalte irgendwas an oder aus, Trigger-Worte: TV -> Script auslösen "javascript.0.scriptEnabled.common.Telegram.TV_schalten":

    sendTo('telegram.0', {
        text:   'TV',
        reply_markup: {
            keyboard: [
                ['leiser', 'lauter','zurück','vor'],
                ['mute', 'Power off']
            ],
            resize_keyboard:   true,
            one_time_keyboard: true
        }
    });
    

    Für die 6 Knöpfe leiser, lauter, zurück…. habe ich wieder jeweils eine Regel: Schalte irgendwas an oder aus und mit Trigger wird wieder ein Script ausgelöst.

    Nun muss nur anstatt "Schalte irgendwas an oder aus", das obere nehmen "Wie kalt/warm ist drin" für den Sensor.

    Host: NUC8i3 mit Proxmox:

    • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
    • Slave: Pi4
    1 Reply Last reply
    0
    • lobomauL Offline
      lobomauL Offline
      lobomau
      wrote on last edited by
      #3

      Ich wollte das gerade ausprobieren, stelle aber fest, dass man wohl nur einmal jeweils "Wie kalt/warm ist draußen?" und "Wie kalt/warm ist drin?" nehmen kann.

      Warum eigentlich? Ich könnte doch mit anderen Trigger-Worten einen weiteren Temperatursensor abfragen. :roll:

      Host: NUC8i3 mit Proxmox:

      • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
      • Slave: Pi4
      1 Reply Last reply
      0
      • lobomauL Offline
        lobomauL Offline
        lobomau
        wrote on last edited by
        #4

        Zu dem Thema habe ich im Forum gelesen, dass es auch ohne text2command geht. Geht ganz gut. Im Blockly sind zu Testzwecken nur die beiden Räume Eltern und Wohnzimmer bisher enthalten:

        Script info_Klima:

        sendTo('telegram.0', {
            text:   'Klima',
            reply_markup: {
                keyboard: [
                    ['DG Bad'],
                    ['Schlafzimmer'],
                    ['Wohnzimmer', 'Garten'],
                    ['KG Hobby', 'KG Waschraum']
                ],
                resize_keyboard:   true,
                one_time_keyboard: true
            }
        });
        

        Blockly:
        1146_unbenannt.jpg

        Host: NUC8i3 mit Proxmox:

        • ioBroker CT Debian 13, npm 10.9.3, nodejs 22.20.0
        • Slave: Pi4
        1 Reply Last reply
        0
        • P Offline
          P Offline
          pix
          wrote on last edited by
          #5

          @BuZZy:

          Hallo Zusammen,

          hat schon mal jemand eine Art "intelligenten" Bot realisiert?

          (Klar, künstliche Intelligenz ist total übertrieben.. Aber ich wusste nicht wie ich das Thema sonst nennen soll.. :D)

          So nach dem Motto:
          ` > Ich: "Wie warm ist es drin?"

          Bot: "Ich bin mir nicht ganz sicher welchen Raum du meinst."

          Bot: "Für welchen Raum möchtest du die Temperatur abfragen?"

          Bot: "Ich habe zur Auswahl: Wohnzimmer, Schlafzimmer, Kinderzimmer."

          Ich: "Schlafzimmer"

          Bot: "Die Temperatur im Schlafzimmer beträgt 23°C." oder > Ich: "Sind Fenster offen?"

          Bot: "Nein. Alle Fenster sind geschlossen!"

          WENN ABER FENSTER OFFEN SIND DANN:

          Bot: "Ja, Schlafzimmer links und Wohnzimmer Sofa ist offen." oder > Ich: "Welches Fenster ist offen?"

          Bot: "Die Fenster Schlafzimmer Links, Wohnzimmer Sofa und Kinderzimmer sind offen. oder > Bot: "Die Waschmaschine ist fertig!"

          Ich: "Erinnere mich in 10 Minuten nochmal."

          Bot: "Okay, ich erinnere dich nochmal in 10 Minuten daran." `

          Ich hoffe man versteht so ein bisschen was ich meine?

          Es würde mich zusätzlich interessieren was ihr sonst so mit text2command realisiert habt? Mir fehlen so ein bisschen die Ideen und ich hab lust etwas zu basteln.. 😄

          Viele Grüße,

          Alex `
          Hallo,

          ich nutze text2command zur Zeit nicht mehr so häufig, will das aber für die Zukunft wieder verstärken.

          Zuletzt habe ich für die Abfragen, wie zum Beispiel die nach den offenen Fenstern, bereits fertige Werte in variablen vorgehalten. Konkret: Es laufen eine Reihe von Skripten, die prüfen, ob Fenster oder Türen offen, Lichter an, Geräte eingeschaltet sind. Die Skripte werden dann immer bei Veränderung eines passenden Gerätes gestartet. Wenn ein Fenster aufgeht, dann schreibt ein Skript in eine Variable den Namen des Fensters. Ich habe zusätzlich zu den Varablen für die Anzahl der offenen Fenster und die kommaseparierte Aufzählung noch eine Variable geschaffen, in der die Inforamtion "vorlesbar" als Text gespeichert ist. ZB wenn nur ein Fenster auf ist, kann der Inhalt sein "Nur das Küchenfenster ist geöffnet". Bei zwei: "Das Küchenfenster und das Wohnzimmerfenster sind geöffnet". Bei drei: "Das Küchenfenster, das Wohnzimmerfenster und das WC-Fenster sind geöffnet". Das letzte Fenster wird also mit "und" verknüpft. Bei nur einem Wert wird ein "nur" vorangestellt. Es gibt tausend Möglichkeiten.

          Übrigens bietet text2command auch die Funktion mehrere Trigger zuzulassen, wenn man den Beenden-Haken nicht setzt.

          Auf jeden Fall ist das ein spannendes Thema-

          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 Reply Last reply
          0
          • BuZZyB Offline
            BuZZyB Offline
            BuZZy
            wrote on last edited by
            #6

            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]});
                }
            });
            
            1 Reply Last reply
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #7

              Hallo BuZZy,@BuZZy:

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

              Geht bestimmt noch einfacher aber wie gesagt, bin Java Neuling. :mrgreen: `
              für einen Neuling ist das aber schon ein super Ergebnis. Glückwunsch!

              Ich werd es gleich mal testen. https://www.google.de/search?client=safari&rls=en&q=unterschied+java+javascript&spell=1&sa=X&ved=0ahUKEwiNoMnEwrjVAhXM1RQKHYJUANIQvwUIIygA Der Abkürzungswahn führt hier eindeutig zu einem falschen Ergebnis. :lol:

              Gruß

              Pix

              Edit: erster Test: klappt super!

              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 Reply Last reply
              0
              • BuZZyB Offline
                BuZZyB Offline
                BuZZy
                wrote on last edited by
                #8

                @pix:

                Hallo BuZZy,

                […]

                für einen Neuling ist das aber schon ein super Ergebnis. Glückwunsch!

                […]

                Aber bitte in Zukunft von "Javascript" reden/schreiben, nicht "Java". Der Abkürzungswahn führt hier eindeutig zu einem falschen Ergebnis. :lol: `

                Hey pix,

                Danke! Ich freue mich über dein Kompliment. 🙂

                Javascript - nicht Java.. Okay! Habe ich in meinem Kopf abgespeichert und den Beitrag oben entsprechend editiert. 😄

                Habe seit ich 12 Jahre alt war öfters mit verschiedenen Scriptsprachen zu tun gehabt und mich seit dem immer wieder mal (mehr oder weniger) intensiv damit beschäftigt.

                Aufgrund dessen behaupte ich mal dass ich ziemlich gutes Verständnis für das "generelle" Schreiben von Scripten habe und kann mich zum Glück ziemlich schnell in neue Scriptsprachen einarbeiten. 🙂

                Ich hoffe ich kann hier in naher Zukunft den Usern kräftige Unterstützung bieten. 😉

                Viele Grüße,

                Alex

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pix
                  wrote on last edited by
                  #9

                  Kurze Rückmeldung:

                  Die Funktion Inline Keyboard scheint in der OS X Telegram APP nicht zu funktionieren. Unter iOS ohne Probleme.

                  Wenn ich die Funktion für das unten eingeblendete Keyboard umschreibe, funktioniert die Ausgabe nicht korrekt. Dann wird der Beschriftungstext wieder an Telegram geschickt. Da muss es noch einen anderen Befehl gebe.

                  sendTo('telegram', {
                              user: benutzer,
                              text: 'Für welchen Raum möchtest du die Temperatur abfragen?',
                              reply_markup: {
                                  keyboard: [
                                      [{ text: 'WC', callback_data: '%TempWC'}],
                                      [{ text: 'Schlafzimmer', callback_data: '%TempSchlafzimmer'}],
                                      [{ text: 'Bad', callback_data: '%TempBad'}]
                                  ],
                                  one_time_keyboard: true
                               }
                          });
                  

                  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 Reply Last reply
                  0
                  • BuZZyB Offline
                    BuZZyB Offline
                    BuZZy
                    wrote on last edited by
                    #10

                    Normales Keyboard mit Buttons wo die Antwort dann als Nachricht an den Bot zurückgeschickt wird ist:

                    sendTo('telegram.0', {
                        text:   'Press button',
                        reply_markup: {
                            keyboard: [
                                ['Line 1, Button 1', 'Line 1, Button 2'],
                                ['Line 2, Button 3', 'Line 2, Button 4']
                            ],
                            resize_keyboard:   true,
                            one_time_keyboard: true
                        }
                    });
                    

                    Um das zu verwenden müsste man aber wiederum die if Abfrage (z.B. %TempSchlafzimmer) genau auf "Temperatur Schlafzimmer" ändern und die Beschriftung des Buttons dementsprechend natürlich auch "Temperatur Schlafzimmer" nennen.

                    Fand diese Lösung nicht so "elegant" deswegen habe ich mich für das Inline Keyboard entschieden.

                    Verwende Telegram ausschließlich auf Android. Da funktioniert es (wie bei iOS) ohne Probleme.

                    Gruß,

                    Alex

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      anubiss1337
                      wrote on last edited by
                      #11

                      moin,

                      ne ganz doofe Frage:

                      Ich Sende via Telegram:

                      "Temperaturen alle"

                      Und bekomme als Antwort:

                      Wohnzimmer X °C

                      Büro X°C

                      usw….

                      wie bekomme ich so etwas hin?

                      hab schon versucht den Code von BuZZy zu verändern aber da verzweifele ich am Zeilenumbruch. Hier mein Versuch:

                      if (befehl.search(/(?=.*(\bTEMP\b|\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\ALL\b|\bÜBERALL\b|\bALLE\b)).+/ig) != -1) {
                              sendTo('telegram', {
                                  user: benutzer,
                                  text: 'Wohnzimmer ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!' +
                                    'Büro ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!',
                                        });
                          } 
                      
                      

                      hab überhaupt keine Ahnung vom Scripten also entschuldigt meine Unwissenheit.

                      Danke für Eure Hilfe.

                      P.S. Ansonsten klappt Buzzy's Script bei mir wunderbar, nur möchte ich diese Funktion noch haben damit ich auf mal alle Temp. sehe.

                      1 Reply Last reply
                      0
                      • BuZZyB Offline
                        BuZZyB Offline
                        BuZZy
                        wrote on last edited by
                        #12

                        @anubiss1337:

                        Wie bekomme ich so etwas hin?

                        hab überhaupt keine Ahnung vom Scripten also entschuldigt meine Unwissenheit. `
                        Kein Problem - brauchst dich nicht zu entschuldigen. 🙂

                        Zur Frage:

                        \n = Zeilenumbruch

                        Also um ein Zeilenumbruch zwischen "°C!" und "Büro" einzufügen musst du es so machen:

                        if (befehl.search(/(?=.*(\bTEMP\b|\bTEMPERATUR\b|\bWARM\b|\bKALT\b))(?=.*(\bALL\b|\bÜBERALL\b|\bALLE\b)).+/ig) != -1) {
                                sendTo('telegram', {
                                    user: benutzer,
                                    text: 'Wohnzimmer ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!\nBüro ' + getState("hm-rpc.0.OEQ0295648.1.TEMPERATURE").val + '°C!',
                                          });
                            } 
                        
                        

                        P.s.: In der Abfrage (?=.*(\bALL\b|\bÜBERALL\b|\bALLE\b)).+/ig) hast du bei "ALL" das \b vorne (bestimmt aus versehen) gelöscht. Hab es mal wieder eingefügt für dich.. 😉

                        Gruß

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

                          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
                                      }
                                  });
                              }
                          });
                          

                          3822_temp.jpg
                          3822_tempalle.jpg
                          3822_raum.jpg

                          1 Reply Last reply
                          0
                          • UhulaU Offline
                            UhulaU Offline
                            Uhula
                            wrote on last edited by
                            #14

                            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 ...

                            Uhula - Leise und Weise
                            Ex: ioBroker on Gigabyte NUC Proxmox

                            BBTownB 1 Reply Last reply
                            0
                            • DutchmanD Online
                              DutchmanD Online
                              Dutchman
                              Developer Most Active Administrators
                              wrote on last edited by
                              #15

                              @Uhula:

                              Wie weit ich bin? Erst am Anfang [emoji6]

                              Aber, WENN es mal sinnvoll anwendbar ist, erfahrt ihr es zuerst … `

                              Da bin ich aber sehr gespannt das klinkt ja super was du da vor hast !

                              –-----------------------

                              Send from mobile device

                              1 Reply Last reply
                              0
                              • rantanplanR Offline
                                rantanplanR Offline
                                rantanplan
                                wrote on last edited by
                                #16

                                @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. `
                                Und alles OHNE Cloud :!: :!:

                                Ich muss mal in meinen alten Unterlagen schauen. Da gab es mal etwas (vor ca. 30 Jahren :shock: ).

                                Grüße

                                Rantanplan

                                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                                1 Reply Last reply
                                0
                                • T Offline
                                  T Offline
                                  tempestas
                                  wrote on last edited by
                                  #17

                                  klingt sehr spannend.

                                  Bzgl. rantanplans > Und alles OHNE Cloud :!: :!:
                                  wäre meine Frage, ob das so stimmt? Ich dachte, eine (Amazon-)Cloud bzw die dahinter stehende Rechenpower sei zwingend notwendig, um Sprache in Befehle zu wandeln?

                                  <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                                  1 Reply Last reply
                                  0
                                  • rantanplanR Offline
                                    rantanplanR Offline
                                    rantanplan
                                    wrote on last edited by
                                    #18

                                    @tempestas:

                                    wäre meine Frage, ob das so stimmt? Ich dachte, eine (Amazon-)Cloud bzw die dahinter stehende Rechenpower sei zwingend notwendig, um Sprache in Befehle zu wandeln? `
                                    Hier geht es, glaub ich, nicht um eine Sprachsteuerung.

                                    Ehr eine text basierte "Unterhaltung" wie z.B. mit Telegram.

                                    Grüße

                                    Rantanplan

                                    CCU3 / MS Server 2019(VM) / Scripten mit Blockly

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

                                      Hallo,

                                      eine Frage an die Profis. Ich möchte das gleiche Script

                                      ! 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
                                      ! }
                                      ! });
                                      ! }
                                      ! }); nutzen um mir den Status der Batterien meiner Geräte anzeigen zu lassen. Der Status wird mit 0/1 - (voll/leer) angezeigt. Was muß ich ändern das mir bei 0 = voll und bei 1 = leer auch die Worte/Text und nicht 0/1 angezeigt wird ?

                                      Den Volt Zustand bzw die tatsächlich Volt Anzeige wäre ja genauso wie bei Temperatur, halt nur die Begriffe austauschen.

                                      1 Reply Last reply
                                      0
                                      • rantanplanR Offline
                                        rantanplanR Offline
                                        rantanplan
                                        wrote on last edited by
                                        #20

                                        Hallo dslraser

                                        Das würde besser in die Rubrik "scripten" passen.

                                        Grüße

                                        Rantanplan

                                        CCU3 / MS Server 2019(VM) / Scripten mit Blockly

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

                                          @rantanplan:

                                          Hallo dslraser

                                          Das würde besser in die Rubrik "scripten" passen.

                                          Grüße `
                                          soll ich die Frage dort nochmal stellen ? (Ich wollte nix doppelt fragen)

                                          Aber hast Recht, da passt es besser hin, dann stelle ich es da auch noch rein.

                                          LG

                                          1 Reply Last reply
                                          0
                                          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

                                          617

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          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