NEWS
Text2command + Telegrambot - "künstliche Intelligenz" scripten?
-
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
-
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
-
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? -
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
-
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.
-
Hallo dslraser
Das würde besser in die Rubrik "scripten" passen.
Grüße
-
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
-
Ich dachte, eine (Amazon-)Cloud bzw die dahinter stehende Rechenpower sei zwingend notwendig, um Sprache in Befehle zu wandeln? `
Das schon. Aber es macht für mich einen deutlichen Unterschied ob ich die Cloud lediglich dazu nutze um aus einer Sound Datei einen Text zu machen, oder ob ich in der Cloud "erlaube" meine Geräte zu steuern (also diese dort bekannt zu machen). Letzeres gefällt mir gar nicht. Noch besser wäre ein offline-Sprach2Text - gibt es bestimmt bald als Hardware-Plug für den PiMeiner ioBroker-AI wird es egal sein, es reagiert mit Textantworten auf Textfragen/-befehle, egal aus welcher Quelle diese auch kommen. Selbst die Spracherkennung der ioBroker-App sollte dann funktionieren.
-
Sprache > Sprache2Text > AI > Text2Sprache > Sprache
-
Telegram-Chat > AI > Telegram-Chat
-
vis-Textinput > AI > vis-Textoutput
Sorry für off topic - ich halte mich hier nun raus.
-
-
wieso raushalten? ist doch genau richtig hier. Klingt alles sehr spannend (und meilenweit über meinem Können
Wäre schön, Alexa wieder einzumotten.
-
Ich erinnere mich noch an mein erstes Handy mit Sprachsteuerung. Ich glaube da wurde ein Sample mit dem anzurufenden Namen abgelegt und anschließend als Vergleich genutzt.
Ein paar Schlüsselworte müsste man doch so auch abspeichern können.
Und was tts angeht, kann das auch jedes kleine Navi im offline modus.
Gruß
Rainer
-
Sorry für off topic - ich halte mich hier nun raus. `
Wie Homoran schon sagte, passt doch hier rein.
Und wenn Du dieses Projekt genau so professionell angehst wie Dein "Material Design" kann man wirklich gespannt sein.
Grüße
-
Meiner ioBroker-AI wird es egal sein, es reagiert mit Textantworten auf Textfragen/-befehle, egal aus welcher Quelle diese auch kommen. Selbst die Spracherkennung der ioBroker-App sollte dann funktionieren. `
Ööööhhh, bitte halte uns hier unbedingt auf dem Laufenden! Klingt hoch interessant!Das würde sich übrigens ziemlich genial als Adapter machen.
-
-
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
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 } }); } }); ```` `
-
Ich habe keinen Benutzer eingetragen
-
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)
-
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.
-
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 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.
-
Danke für das Script, läuft super! Einzig die Fehlermeldung "ich verstehe xxx nicht" bekomme ich nicht raus. Hast du das gelöst?