fhem-skill für mycroft.ai

Begonnen von dkreutz, 29 Juli 2018, 19:32:15

Vorheriges Thema - Nächstes Thema

Iceman0073

Super, vielen Dank das hört sich ja auf alle Fälle gut an.
Hab noch eine kleine Verständnisfrage. Habe die Geräte, die ich Steuern möchte im zusätzlichen Raum Homebridge aufgenommen und das entsprechende genericDeviceType hinterlegt. Bisher heißen meine Geräte aber sehr kryptisch wie z.Bsp. WZ_Licht_Decke usw.
Wie hast du das bei dir mit den Namen gelöst, verwendest du ein Alias oder hast du alle dann entsprechend umbenannt?
Wenn du mehrere Lampen im Wohnzimmer hast nennst beinhaltet der Name dann z.Bsp. Wohnzimmer_Licht_Decke oder wie funktioniert die Zuordnung am Besten?

Danke für deine Hilfe.

Viele Grüße
Michael


dkreutz

Ich habe bei mir die Namenskonvention "GeräteartRaumname", z.B.

  • LichtWohnzimmer
  • ThermostatSchlafzimmer
  • SensorKinderzimmer

Das ist aber nicht immer konsequent durchgehalten, so gibt es auch "LichtStehlampe" im Raum "Wohnzimmer". Die Geräte sind deshalb immer in einem entsprechenden FHEM-Raum (Room). Der Suchalgorithmus arbeitet mit Fuzzy-Matching, um Fehler bei der Sprache-zu-Text Übersetzung auszugleichen und funktioniert mit meiner eigenen Namenskonvention natürlich ganz gut.

Der FHEM-Skill sucht sowohl in Aliasnamen als auch in Gerätenamen und berücksichtigt auch den Raumnamen mit. In Abhängigkeit des "Intent" werden auch nur bestimmte GenericDeviceTypes berücksichtigt. Der Switch-Intent ("schalte ... an") z.B. Devices vom Type "light", "switch" und "outlet", der Temperatur-Intent ("stelle Temperatur ... auf X Grad") nur Thermostat-Devices, etc. Geräte die im selben Raum wie die Mycroft-Instanz stehen (Parameter "placement" für das Mycroft-Device unter home.mycroft.ai) haben Priorität bzw. es wird dann dieser Raum implizit angenommen, wenn im Sprach-Befehl kein Raum angegeben wurde.
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Prof. Dr. Peter Henning

Beim Spracherkennungsmodul Babble bin ich einen anderen Weg gegangen. Und zwar erhält jedes Gerät, das damit steuerbar ist, ein zusätzliches Attribut "babbleDevice" - unter diesem Namen wird es bei der Sprachsteuerung erkann. Bei der Sprachsteuerung mit Alexa wurde ebenfalls dieser Weg beschritten, das Attribut heißt dann "alexaName". Insofern schlage ich vor, dass das mit dem Zusatzattribut auch hier umgesetzt wird.

LG

pah

dkreutz

https://mycroft.ai/blog/update-from-the-ceo-part-1/

Mycroft als Unternehmen ist am Ende. Die Unterstützer der Kickstarter-Kampagne werden nicht mehr mit Mycroft Mark-II Geräten "belohnt", lediglich direkte Bestellungen über den Webshop der Mycroft-Webseite werden ausgeliefert. Ab März 2023 hat Mycroft-AI keine Mitarbeiter mehr und stellt den Geschäftsbetrieb ein.

Die Pflege und Weiterentwicklung der Mycroft Software wird durch NeonAI fortgesetzt.
Eine weitere Möglichkeit ist OpenVoiceOS (OVOS).
NeonAI OS und OVOS kooperieren und sind untereinander kompatibel (Skills, Pliugins).

Ich werde den FHEM-Skill für Mycroft für NeonAI bzw. OVOS anpassen, kann dazu aber aktuell noch keinen Zeithorizont geben...
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Dr.McKay

Hallo Dominik,

bin nach einiger Recherche über deinen Skill gestolpert. Erstmal ein Dankeschön, dass du dir die Mühe gemacht hast so etwas zu basteln :) Allerdings hätte ich noch ein paar Fragen die ausschlaggebend darüber sind, ob der Skill für uns Sinn macht. Über eine Antwort würde ich mich freuen:
1) gibt es eine Möglichkeit den Skill anzupassen, bzw. um Lampen auf eine Farbe zu setzen (set <Beispiellampe> rgb FF0000)?
2) Wir würden gerne die Kommandos so kurz wie möglich halten, also nach dem Schema "Computer, Hauptbeleuchtung ein" anstelle "Computer, schalte die Hauptbeleuchtung ein". Ist das möglich? (Das Wake Word ist bei mir "Computer")
3) Es soll bei Ausführung eines Befehls kein Text wiedergegeben werden, sondern eine simple Audiodatei abgespielt werden. Wie ist das zu bewerkstelligen?
4) Kannst du noch erläutern wie Talk2Fhem zu definieren ist und wie das funktioniert?

Danke
Erhard

dkreutz

Hallo Erhard /Dr.McKay

Zitat von: Dr.McKay am 26 April 2023, 17:58:041) gibt es eine Möglichkeit den Skill anzupassen, bzw. um Lampen auf eine Farbe zu setzen (set <Beispiellampe> rgb FF0000)?
Ja, das ist grundsätzlich möglich. Schon jetzt kann man die Helligkeit einstellen - das ist ja ähnlich. Allerdings stelle ich es mir schwierig vor den RGG-Wert zu buchstabieren, da würde man eher eine Reihe von Farbnamen vordefinieren und ein Sprachbefehl "stelle Lampenfarbe auf rot" würde dann in "set Lampe rgb FF0000" übersetzt.

Zitat von: Dr.McKay am 26 April 2023, 17:58:042) Wir würden gerne die Kommandos so kurz wie möglich halten, also nach dem Schema "Computer, Hauptbeleuchtung ein" anstelle "Computer, schalte die Hauptbeleuchtung ein". Ist das möglich? (Das Wake Word ist bei mir "Computer")
Das ist schon etwas schwieriger, da der Skill normalerweise über Schlüsselwörter wie "schalte" getriggert wird.
Was funktioniert ist "Computer, mach Licht an" - wenn alles richtig konfiguriert ist, dann schaltet das das Licht im Raum ein, in dem Mycroft steht.

Zitat von: Dr.McKay am 26 April 2023, 17:58:043) Es soll bei Ausführung eines Befehls kein Text wiedergegeben werden, sondern eine simple Audiodatei abgespielt werden. Wie ist das zu bewerkstelligen?
Ist möglich, in der __init__.py müssten die Stellen "self.speak_dialog(...)" auskommentiert und der Befehl zum abspielen der Audiodatei eingefügt werden.

Zitat von: Dr.McKay am 26 April 2023, 17:58:044) Kannst du noch erläutern wie Talk2Fhem zu definieren ist und wie das funktioniert?
In FHEM musst ein Talk2Fhem Device erstellt werden und dessen Name in der Skill-Konfiguration unter "Name of NLU Fallback Device" eingetragen werden. Alles weitere erfolgt dann in dem Talk2Fhem Device (siehe die entsprechende Dokumentation im Fhem-Wiki).

Viele Grüße
Dominik
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Dr.McKay

Hallo Dominik,

danke für die schnelle Antwort. Das mit den Farben habe ich mir so vorgestellt, dass man die Farbwörter wie "rot" "grün", hinterlegt und dazu Hex-Werte hinterlegt, die dann Fhem ausführen soll. Ich habe mir Talk2Fhem zunächst kurz angesehen, und wenn ich das richtig sehe, dann lösen die Sprachkommandos dort Events aus, die man noch nutzen könnte um RGB Werte zu setzen mit einer kleinen Schaltlogik im Notify und Regex, oder was denkst du? Ein Problem habe ich jedoch, ich kann in den Skill-Einstellungen in mYcroft den Haken bei "Enable NLUI as fallback" nicht setzen. Weist du womit das zu tun haben könnte?



Gruß Erhard

Dr.McKay

PS: Auch bei mir tritt exakt der hier https://community.mycroft.ai/t/fhem-skill-doesnt-accept-room-name-giving-error/9697 beschriebene Fehler auf. In der Skillkonfiguration auf mycroft.ai ist exakt das gesetzt, wie du gesagt hast. Ich habe keine Erklärung, warum er mir diesen Fehler wirft. Gibt es noch andere Sachen zu beachten? Wie kann ich z.B. das Logging aktivieren um überhaupt sehen zu können was der Skill verarbeitet und ob überhaupt eine Verbindung zu meinem FHEM-Server aufgebaut wird? Ich hätte noch eine weitere Frage: Woran erkennt Mycroft, dass er andere Befehle an das Talk2Fhem fallback Device schicken soll und nicht den Befehl in irgendeinem anderen Skill sucht?

Danke und Grüße

Dr.McKay

PS: Der Fehler "AttributeError: 'FhemSkill' object has no attribute 'allowed_devices_room" lag daran, dass "csrf= True" in der init.py gsetzt war. ICh nutze keinen Token, da Fhem auch Web-Befehle von anderen Geräten bekommen soll. Die Absicherung geschieht über IP Begrenzung. Also scheint der Verbindungsaufbau von vornherein nicht funktioniert zu haben, allerdings hat das Log nichst über einen gescheiterten verbindungsaufbau gesagt, daher wäre es umso wichtiger für meine weiteren Tests ein hochverboses Logging zu aktivieren. Weist du wie ich das machen kann?

Nochmals Danke :)

dkreutz

Zitat von: Dr.McKay am 27 April 2023, 12:36:38Ein Problem habe ich jedoch, ich kann in den Skill-Einstellungen in mYcroft den Haken bei "Enable NLUI as fallback" nicht setzen. Weist du womit das zu tun haben könnte?
Ich kann den Haken auch nicht setzen - da scheint das Webinterface von home.mycroft.ai einen Fehler zu haben.
Wie Du evtl. aus meinem Post #48 entnommen hast, hat das Unternehmen Mycroft die Geschäftstätigkeit eingestellt.
Ich habe im Mycroft-Forum auf das Problem hier aufmerksam gemacht - vielleicht wird es ja von NeonAI noch behoben...

Zitat von: Dr.McKay am 27 April 2023, 16:36:00Wie kann ich z.B. das Logging aktivieren um überhaupt sehen zu können was der Skill verarbeitet und ob überhaupt eine Verbindung zu meinem FHEM-Server aufgebaut wird? Ich hätte noch eine weitere Frage: Woran erkennt Mycroft, dass er andere Befehle an das Talk2Fhem fallback Device schicken soll und nicht den Befehl in irgendeinem anderen Skill sucht?
Zitat von: Dr.McKay am 27 April 2023, 16:47:23... allerdings hat das Log nichst über einen gescheiterten verbindungsaufbau gesagt, daher wäre es umso wichtiger für meine weiteren Tests ein hochverboses Logging zu aktivieren. Weist du wie ich das machen kann?

Du kannst in der mycroft.conf den Loglevel auf DEBUG setzen: "log_level": "DEBUG",
Darüber kann man dann auch nachvollziehen welcher Fallback-Skill "gewonnen" hat.

Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Dr.McKay

Super, danke. Was mr noch aufgefallen ist, dass offenichtlich die Werte aus mycroft.ai nicht greifen, obwohl in /home/user/.config/mycroft/skill/fhem-skill.domcros/settings.json genau das eingetragen ist, was ich auch über mycroft.ai gsetzt habe, inkl. "fallback_device_name: Talk2Fhem" und "enable_fallback: true." Dennoch hat mir das Log gemeldet fallback sei false und das default fallback device sei TEERKO. Hab das dann kurzerhand durch Definition der Variablen in der init.py gelöst, hoffe du hast nix dagegen. Zusätzlich ist mir noch aufgefallen, dass der selbst gesetzte Name des Fhem Devices "Talk2Fhem" noch übergeben werden muss, da ansonsten die Fhem Meldung: "please define <Devicename> first".

Dr.McKay

#56
Was mich noch interessieren würde: gesetzt der Fall ich sage "...schalte Licht" geht es, bzw. ist es überhaupt möglich, dass Mycroft nochmal rückfragt "Welches Licht soll geschaltet werden?", erneut in den Aufnahmemodus geht, um einen weiteren Parameter in Empfang zu nehmen und dann das Komplette Kommando ausführt bzw. an Fhem übergibt? So wie das bei dem Default Timer-Skill mit der Rückfrage "Wie lang soll der Timer sein?" funktioniert?

Danke

Dr.McKay

Spricht eigentlich etwas dagegen, wenn ich mir noch weitere Intent Handler definiere um noch besondere, individuelle Funktionen auszufühen? Oder wird dann das Programm instabil?

dkreutz

Zitat von: Dr.McKay am 28 April 2023, 16:58:55Was mich noch interessieren würde: gesetzt der Fall ich sage "...schalte Licht" geht es, bzw. ist es überhaupt möglich, dass Mycroft nochmal rückfragt "Welches Licht soll geschaltet werden?", erneut in den Aufnahmemodus geht, um einen weiteren Parameter in Empfang zu nehmen und dann das Komplette Kommando ausführt bzw. an Fhem übergibt? So wie das bei dem Default Timer-Skill mit der Rückfrage "Wie lang soll der Timer sein?" funktioniert?
Das geht zumindest für Ja/Nein Fragen. Mit Conversational Context müsste das aber prinzipiell auch für richtige Dialoge funktionieren.

Zitat von: Dr.McKay am 29 April 2023, 11:20:06Spricht eigentlich etwas dagegen, wenn ich mir noch weitere Intent Handler definiere um noch besondere, individuelle Funktionen auszufühen? Oder wird dann das Programm instabil?
Spricht nichts dagegen, mir sind zumindest keine Limits bekannt

p.s. sorry für die späte Antwort, die automatische Emailbenachrichtigung über neue Antworten hat nicht funktioniert....
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Dr.McKay

#59
Hi @dkreutz,

es scheint nun so, dass mycroft.ai endgültig nicht mehr online ist. Seit lezter Woche kann sich Mycroft nicht mehr mit api.mycroft.ai verbinden und damit geht auch nix mehr außer die Wakewordekrennung, die ich selbst erstelt habe. Sämtli. Skills (auch der Fhem-Skill) gehen nicht mehr, da sich Mycroft vorher erst mit api.mycroft.ai verbinden will. Das interessante allerdings ist, dass erst nach einem Neustart des Raspberry das Problem auftrat. Kurz vorher haben die Anfragen noch funktioniert, daher vermute ich, dass api.mycroft.ai schon vorher down war, aber die Skills noch irgendwo im Cache waren. Kennst du einen Weg um zumindest den Fhem-Skill auch ohne api.mycroft.ai verfügbar zu machen?

Danke, auch nochmal für die vorherigen Antworten