fhem-skill für mycroft.ai

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

Vorheriges Thema - Nächstes Thema

Grumpy

#30
Hallo

zunächst einmal großes Lob und Danke an den Entwickler des FHEM-Skills.

Vor 3 Wochen bin ich auf Mycroft gestoßen und plane nun auch mein FHEM über Sprache zu steuern.
Am Wochenende habe ich dann erfolgreich einen Funkschalter über Mycroft geschaltet.
Mycroft läuft bei mir auf einem RPi3 (BS:Stretch), FHEM auf einem RPi4 (BS:Buster).
Die Verbindung erfolgt über Telnet.

Schön wäre es, wenn man mehrere Räume (Name of FHEM-room with controll) angeben könnte.
Darüber hinaus habe ich mehrere Funkrolladen von der Fa. Selve eingebunden.
Bei Interesse kann ich gerne beim Testen helfen und weitere Infos geben.

Grumpy

Grumpy

Hallo

Die Sache mit mehreren Räumen (Name of FHEM-room control) hat sich erledigt.
Habe das wie folgt gelöst: Einen neuen Raum "Mycroft" erstellt, und diesen über Fhem-Web als "hiddenroom" definiert.
Im Anschluss den Devices die man per Sprache steuern möchte den Raum "Mycroft" als zusätzliches room-Attribut hinzugefügt.
Im FHEM-Skill unter "Name of FHEM-room control" Mycroft eingetragen.

Grumpy

dkreutz

Zitat von: Grumpy am 01 Februar 2020, 11:05:48
Hallo

Die Sache mit mehreren Räumen (Name of FHEM-room control) hat sich erledigt.
Habe das wie folgt gelöst: Einen neuen Raum "Mycroft" erstellt, und diesen über Fhem-Web als "hiddenroom" definiert.
Im Anschluss den Devices die man per Sprache steuern möchte den Raum "Mycroft" als zusätzliches room-Attribut hinzugefügt.
Im FHEM-Skill unter "Name of FHEM-room control" Mycroft eingetragen.

Grumpy

Prima, so war das auch gedacht. Ich werde aber noch einmal die Dokumentation überprüfen, ob ich das noch deutlicher beschreiben kann.
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

Grumpy

So, meine Thermostate MAX von eq3 funktionieren auch.
Bleiben nur noch die Rollos. Diese sind von der Fa. Selve und auch als Type  SELVE angelegt. Für diese Funkrollos gibt es ein Gateway vom Type SELVEGateway
Kann man das in einer der Dateien eintragen, oder lieber über den Fallback (Talk2Fehm) gehen?

Grumpy

dkreutz

Ich habe bereits einen Intent für den generischen Device-Type ROLLO programmiert. Die ist aber aktuell deaktiviert, da es Probleme im Zusammenspiel mit anderen Intents gab und ich bisher noch nicht die Zeit gefunden habe, dafür eine Lösung zu entwickeln. Von daher würde ich empfehlen den Fallback über Talk2Fhem zu nutzen.
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

Natürlich kann man das alles mit Talk2Fhem machen - aber warum nicht mit Babble? Durch die darin vorgenommene semantische Analyse werden Mehrdeutigkeiten wie die oben beschriebenen aufgelöst. Und der angehängte Chatbot erlaubt einen echten Dialog.

Ich habe gerade jetzt wieder in einer meiner Konferenzsessions einen interessanten Vortrag gehört, nachdem eine Konversation erst als natürlich empfunden wird, wenn sie 60% Smalltalk enthält - und das kann ein Chatbot sehr viel besser abwickeln, als Talk2Fhem.

LG

pah

dkreutz

Mein FHEM-Skill unterstützt Babble, Talk2Fhem und Teerko - also im Prinzip alles was FHEM in Richtung NLU hergibt.

Den Chatbot-Bezug verstehe ich aber hier nicht: Mycroft ist ein Sprachassistent und mein Skill ermöglicht es FHEM-Devices einfach und unkompliziert darüber zu "schalten". Ich möchte nicht erst eine Minute Smalltalk machen um das Licht auszuschalten.
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

Das geht aber auch nur gut, wenn sich alle Mitglieder des Haushalts zu jeder Zeit daran erinnern, wie die korrekten Befehle lauten. Mit dem Chatbot kann man den Nutzer in einem Dialog zu den richtigen Befehlen führen. Siehe z.B. den Notfall-Dialog, den ich beschrieben habe.

LG

pah

caruso

Guten Abend,
ich habe seit ein paar Tagen endlich mal die Mikrofon-Geschichte mit einem Seeed-VoiceDingsda gelöst und Mycroft arbeitet auf dem Pi endlich soweit, dass ich es an mich anpassen kann und dann auch mal mit FHEM verbinden möchte.

Dabei bin ich auf die Beschreibung hier gestoßen
- FHEM läuft als http ohne Benutzernamen und Passwort, weil es nicht von extern aufrufbar ist
- Port 8083 ist drin
- Fallback Talk2Fhem ist in den Skill geschrieben
- Der Raum heißt "Haus" und ist auch so im Skill hinterlegt

Dummerweise sagt mir Mycroft immer, dass er nicht weiß, was er mit den Anweisungen tun soll, aber er lernt täglich neue Dinge :(

Probleme:
Ich finde keine Möglichkeit genericDeviceType in FHEM zu setzen. Egal ob ich es bei als attr global versuche zu definieren, er sagt mir immer, dass er sowas nicht kennt. Was mache ich falsch? Einfach erfassen geht nicht, in die FHEM.cfg eintragen führt zu einem Fehler. Was habe ich übersehen?

Noch ist das Ganze auf Englisch eingestellt, ich werde mal versuchen, mycroft generell auf Deutsch umzustellen. Hoffentlich klappts. Muss ich anschließend noch was in FHEM anpassen, wenn Mycroft umgestellt ist?

Danke und Gruß
Caruso

dkreutz

Für dem global-Device folgendes im userattr hinzu "genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock"

Alle FHEM-Devices, die von Mycroft gesteuert werden sollen, müssen den genericDeviceType gesetzt haben und sich indem FHEM-Room befinden - in deinem Beispiel "Haus". Die Devices können sich zusätzlich noch in anderen Räumen befinden. Beispiel: genericDeviceType=light, room=Haus,Wohnzimmer - dann funktioniert "schalte das Licht im Wohnzimmer ein".
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

caruso

#40
Hallo,

DAnke für die Info. Ich habe das jetzt eingetragen und tatsächlich geht der Befehl nun an FHEM.
Allerdings quakt mir Mycroft jetzt ins Ohr:
"Bei der Verarbeitung der Anfrage ist ein Fehler im Skill Fhem-Skill aufgetreten"
oder so ähnlich.

Könnt Ihr mir sagen, wo ich nähere Details dazu finde, wo genau der Fehler liegt?

Wie genau muss ich sprachlich in Deutsch an Mycroft herantreten, damit er was schaltet?
Habe das Wort "schalte " benutzt, um einen über CUL auf 433MHz gesetzten Aktor einzuschalten, auch einer über Z_Wave geht nicht.

Gruß
Caruso

PS: Gerade habe ich festgestellt, dass in der settingsmeta.json alle Einstellungen in dem Skill-Frontend nicht in die Datei übernommen wurden.
Ich habe es manuell eingetragen. Allerdings kommt immer noch derselbe Fehler.
PS2: Ich habe gerade noch gesehen, dass es in Mycroft-core/skills/...Fhem... die Datei gibt und unter /opt/mycroft/skills nochmal. In letzterer ist alles eingetragen worden. Jetzt bin ich wirklich ratlos, weil er immer noch auf dem nicht vorhandenen allowed_device_room rumhackt.

caruso

#41
...so, habe das Skills-Log jetzt tatsächlich gefunden unter /var/log/mycroft, ich hatte es lediglich in den Mycroft-Ordnern gesucht, sorry.

Fehler:
2020-11-03 09:28:54.322 | INFO     |   790 | FhemSkill | action: ein
2020-11-03 09:28:54.358 | ERROR    |   790 | mycroft.skills.mycroft_skill.mycroft_skill:on_error:835 | Bei der Verarbeitung der Anfrage ist ein Fehler im Skill Fhem Sk$
Traceback (most recent call last):
  File "/home/pi/mycroft-core/mycroft/skills/mycroft_skill/event_container.py", line 66, in wrapper
    handler(message)
  File "/opt/mycroft/skills/fhem-skill.domcross/__init__.py", line 232, in handle_switch_intent
    fhem_device = self._find_device(device, allowed_types, room)
  File "/opt/mycroft/skills/fhem-skill.domcross/__init__.py", line 817, in _find_device
    device_candidates = self.fhem.get(room=self.allowed_devices_room,
AttributeError: 'FhemSkill' object has no attribute 'allowed_devices_room'
2

Die Aktion wird wohl tatsähclih vom Skill mit "ein" oder "an" korrekt erkannt, aber es bleibt beim Fehler. Ich habe, da Beleuchtung, jetzt light als deviceType angegeben. Das wird aber wohl nicht der Fehler sein oder?

Wieso wird der Raum nach wie vor nicht als gültig erkannt?

[EDIT: PUH, unter ~/.config/mycroft/skills/fhem-skill.domcross gibt es noch eine Datei namens settings.json, wer soll da noch durchfinden. Aber da steht auch alles korrekt drin]

Gruß
Caruso

dkreutz

Das ist ein Mycroft-spezifischer Fehler, den beantworte ich dir im Mycroft-Forum, wo Du ja auchein neues Thema aufgemacht hast...
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

Iceman0073

Hallo und erstmal vielen Dank für die tolle Arbeit, der Skill und die Integration von Talk2FHEM macht echt richtig Spaß.
Ich habe eine Frage und zwar hatte ich mal mit Snips und FHEM zu tun und kenne von dort noch die Möglichkeit, dass man von FHEM aus eine Nachricht über Snips ausgeben lassen kann.

Ist dies mit Mycroft auch möglich, dass ich z.Bsp. zu einer bestimmten Uhrzeit oder nach Ablauf von einem Timer dann die Rückmeldung über Mycroft ausgeben lassen kann?

Vielen Dank im Voraus.

Viele Grüße
Michael

dkreutz

Zitat von: Iceman0073 am 29 Dezember 2020, 21:04:25
Ich habe eine Frage und zwar hatte ich mal mit Snips und FHEM zu tun und kenne von dort noch die Möglichkeit, dass man von FHEM aus eine Nachricht über Snips ausgeben lassen kann.

Ist dies mit Mycroft auch möglich, dass ich z.Bsp. zu einer bestimmten Uhrzeit oder nach Ablauf von einem Timer dann die Rückmeldung über Mycroft ausgeben lassen kann?

Mycroft hat einen Message-Bus, an den z.B. speak-Befehle gesendet werden können. Der läuft aber über Web-Sockets, sodass man nicht z.B. HTTPMOD dafür verwenden kann. Web-Sockets gehen auch in Perl, aber damit (Perl) konnte ich mich nie so recht anfreunden.
Inzwischen gibt es fhempy, damit kann man in Python recht einfach ein Mycroft-Modul für FHEM bauen. Das kann dann auch speak-Befehle. Steht auf meiner ToDo-Liste, habe aber noch keinen konkrete Zeitplan dafür.
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