OH3 Sprachsteuerung Rule?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

OH3 Sprachsteuerung Rule?

Beitrag von mad-mike »

Moin zusammen,

Ich Versuche gerade Stück für Stück mein Haus und Openhab3 zu vereinen...

Dabei habe ich in der APP von Openhab das Mikrofon entdeckt, und gleich ausprobiert.

Habe mir also ein ITEM Voice Command erstellt, und Eine Rule..

Frage:
Ist der Ansatz meiner Blockly Rule denn richtig?

Grundsätzlich funktioniert es, aber wenn nun etliches Per "Sprachbefehl" Steuern möchte, so wird dies ja eine ""Endlose"" Liste.... ???

Hier mal der Anfang von meinem Versuch:

Code: Alles auswählen

if (itemRegistry.getItem('VoiceCommand').getState() == 'Bad Licht an') {
  events.sendCommand('shelly110_Betrieb', 'ON');
}
if (itemRegistry.getItem('VoiceCommand').getState() == 'Bad Licht aus') {
  events.sendCommand('shelly110_Betrieb', 'OFF');
}
if (itemRegistry.getItem('VoiceCommand').getState() == 'Flur Licht an') {
  events.sendCommand('Shelly25RelaySHSW25_Betrieb', 'ON');
}
if (itemRegistry.getItem('VoiceCommand').getState() == 'Flur Licht aus') {
  events.sendCommand('Shelly25RelaySHSW25_Betrieb', 'OFF');
}
Das ganze sieht dann so aus:
Bildschirmfoto zu 2021-08-26 17-32-50.png
Ist diese Vorgehensweise denn richtig??

danke und Gruss
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

heiko74
Beiträge: 14
Registriert: 5. Apr 2019 21:38
Answers: 0

Re: OH3 Sprachsteuerung Rule?

Beitrag von heiko74 »

Hallo,

zuerst eine Info: Ich habe noch OH2.x am laufen.

Zwei Bemerkungen seine mir hier erlaubt:
Zum einen finde ich es persönlich etwas unschön, wenn eine Variable, auf die getriggert wird und sich auch während der Laufzeit ändern kann immer wieder abgefragt wird. Ich würde dies erst in eine lokale Variable schieben und dann mit dieser weiter arbeiten.
Zum anderen hast du recht, es wird eine sehr lange Liste. Dies läßt sich durch eine Schachtelung etwas überschaulicher darstellen.

Hier mein vorgehen:

Code: Alles auswählen

rule "Voice control"

	// Wenn Sprachbefehl eingeht
when
	Item VoiceCommand received command
then
    // nach Kleinschreibung konvertieren
    var String befehl = VoiceCommand.state.toString.toLowerCase

    // LOG-Ausgabe
    logInfo("Voice.Rec","INFO: Sprachbefehl empfangen: "+befehl)

    if(befehl.contains("licht")) {
    	if(befehl.contains("keller")) {
    		if(befehl.contains("aus")) {
       			Licht_Keller_Treppe1.sendCommand(OFF)
...
Zuerst lese ich den "VoiceCommand" aus und wandle sie in einen String mit kleinen Buchstaben um. Die Info über Groß- und Kleinschreibung brauche ich nicht und vereinfachen den Vergleich.
In der nächsten Zeile gebe ich den String im Log aus.
Daraufhin durchsuche ich den String nach Schlüsselwörter und damit verschachtelt sich die Abfrage. Dies hat den Vorteil, daß ich keinen genauen String diktieren muß, sondern einen Satz sagen kann, der alle Signalwörter enthält. In diesem Fall würde passen: "Licht im Keller aus", "Kellerlicht aus", "Mache das Licht im Keller aus", ...

Schlußendlich läuft es für mich auf eine Fleißarbeit heraus, wenn ein Befehl schon funktioniert. Bei dir sollte es in OH3 grafisch ähnlich lösbar sein.

Heiko

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: OH3 Sprachsteuerung Rule?

Beitrag von udo1toni »

Ob man das gut mit Blockly programmieren kann?
Grundsätzlich wäre es aber sinnvoll, die Auswertung aufzuteilen, in den Teil für den erwünschten Zustand und den Teil um welche Lampe es geht. Ein weiterer Punkt ist die mehrfache Abfrage aus der Item Registry.

Statt die Rule neu zu erfinden, hier ein Link auf eine Rule im englischen Forum: https://community.openhab.org/t/voice-c ... es/51146/6 die rlkoshak für diesen Zweck gezeigt hat.

Die Rule zerlegt das empfangene Command und setzt die Anteile passend. Dabei wird der Raumname und das Gerät sowie das eigentliche Kommando ON|OFF in lokalen Variablen gespeichert.
Daraus wird dann zum einen der Itemname generiert und zum anderen der eigentliche Befehl gesendet.

Voraussetzung ist natürlich, dass die Items passend benannt sind, also nicht shelly10_Betrieb, sondern Bad_Licht, nicht Shelly25RelaySHSW25_Betrieb sondern Flur_Licht.
Die erlaubten Schlüsselworte in der Rule müssen natürlich "eingedeutscht" werden, aber anschließend muss die Rule nur die erlaubten Schlüsselworte kennen. Man könnte die Rule auch noch etwas umbauen, so dass die erlaubten Schlüsselworte eventuell auch direkt aus den vorhandenen Items ermittelt werden könnten.

Der Witz bei so einer Rule ist, dass der Wortlaut nicht genau festgelegt ist, es ist egal, ob Du "Schalte das Flur Licht ein" oder "Bitte mach das Licht im Flur aus" sagst, auch "Licht ein im Flur" funktioniert dann, und zwar ohne eine zusätzliche Zeile Code.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Quautiputzli
Beiträge: 364
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: OH3 Sprachsteuerung Rule?

Beitrag von Quautiputzli »

Ich hab es so (ganz einfach gehalten) gelöst: viewtopic.php?f=15&t=5672
Servus

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: OH3 Sprachsteuerung Rule?

Beitrag von mad-mike »

War eigentlich nie meine Absicht, diese Sprachsteuerung mal in Real bei mir umzusetzen.

Es ist leider etwas unkomfortabel jedes mal Icon auf dem Smartphone zu drücken, -> in der Zeit hätte ich das licht schon an... :D

Alexa oder wie die Geräte heißen, habe ich nicht...

Wenn ich jedoch das Lese:
Der Witz bei so einer Rule ist, dass der Wortlaut nicht genau festgelegt ist, es ist egal, ob Du "Schalte das Flur Licht ein" oder "Bitte mach das Licht im Flur aus" sagst, auch "Licht ein im Flur" funktioniert dann,
könnte ich schon gefallen dran finde mir so ein Mikrofon irgendwo zu montieren...


Ich habe oben im Blockly alles zussamen gedockt. Tatsächlich gibts paar Probleme.

Erst nach dem ich jedes "" IF ...... Then...."" auseinander gezogen habe läuft es flüssig...


Aktuell bin ich noch am Aktoren einbauen, und demnach ist Sprachsteuerung derzeit noch etwas überflüssig...

Die Item namen vergabe, JA du hast recht. Bin jetzt auch immer mehr dabei diese anderes zutiteln...

Habe in der APP gemerkt das jede Lampe nur ""Betrieb"" heißt- :lol:

Leider bin ich noch nicht ganz durch die Modell Liste gestiegen. (Das ist aber ein anderes Thema)
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: OH3 Sprachsteuerung Rule?

Beitrag von udo1toni »

Das hat nichts mit dem Model zu tun. Die Itemnamen werden halt automatisch erzeugt, wenn Du nicht beim Erstellen eingreifst.
Nachträglich lassen sich die Namen nicht so ohne Weiteres anpassen.
Am einfachsten geht es noch, per API Explorer die Items zu exportieren, in einer Textdatei zu bearbeiten und anschließend zurück zu schreiben.

Allerdings musst Du den Namen jeweils an zwei Punkten ändern, zum einen im Namensfeld, zum zweiten im Link. Die Namen müssen exakt übereinstimmen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten