Autor Thema: SEPIA open-source Sprachassistent: Integration in FHEM?  (Gelesen 874 mal)

Offline sepia

  • New Member
  • *
  • Beiträge: 5
Hallo FHEM Community  :)

Ich baue seit längerer Zeit an einem Projekt, dass ich SEPIA Framework bzw. SEPIA Open Assistant nenne.
Es ist ein persönlicher, intelligenter Assistent, der aus einem Server (Java), einer App (HTML) und mehreren zusätzlichen Tools (Control HUB, offline Spracherkennung, wake-word server, Node.js CLEXI server etc.) besteht, alles 100% open-source. Ausführliche Informationen gibt es hier:

https://sepia-framework.github.io/

News, Bilder und Videos gibt es hier:

https://twitter.com/sepia_fw

For einiger Zeit hatte ich bereits eine Smart Home Integration via openHAB gebaut, um meine Philips Hue Lights anzusteuern. Das funktioniert auch ganz gut, allerdings wollte ich demnächst mal die Funktionen ausbauen und hatte dabei auch über einen Connector für FHEM nachgedacht.

Meine Frage an die Community:
Gibt es Interesse an so einer Integration?

Die Features von SEPIA kurz zusammengefasst:
- 100% open source
- Der Server läuft (dank Java) auf Windows, Linux und MacOS. Ich nutze meistens einen Raspberry Pi. Das gesamte SEPIA-Home Bundle (SEPIA Server + WebServer inkl. Client, Tools und Proxy) ist gerade mal 150MB groß.
- Der Client läuft im Browser, Android und (theoretisch) iOS
- Kommunikation zwischen SEPIA Server und Client läuft über einen WebSocket Server, der auch von Usern als Chat-Server genutzt werden kann.
- Minimalistische Clients können auch direkt mit der REST API des Servers kommunizieren
- Spracherkennung läuft entweder nativ in Android, Chrome Browser und iOS oder über den eigenen STT Server (als Docker Container verfügbar), der mit eigenen Sprachmodellen (Englisch, Deutsch) trainiert werden kann.

Grüße,
Florian (SEPIA Erfinder)
« Letzte Änderung: 04 Juli 2019, 12:13:21 von sepia »

Offline dkreutz

  • Full Member
  • ***
  • Beiträge: 344
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #1 am: 04 Juli 2019, 15:07:26 »
Hallo Florian,

Was für ein Zufall - gestern Abend bin ich bei einer Recherche nach deutschsprachigen TTS-Engines/Modellen zufällig auch auf SEPIA gestoßen. Beeindruckend was Du da - soweit ich es verstehe - als "Einzelkämpfer" auf die Beine gestellt hast.

Was ich ad hoc nicht herausfinden konnte: welche Engine verwendet SEPIA für die Sprachausgabe (TTS)?

Neben Alexa und Google-Assistant wirst Du hier Benutzer von snips.ai und mycroft.ai finden. (Der fhem-skill für Mycroft stammt von mir).

VG Dominik
Raspberry Pi3B+ (Stretch) / 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

Offline sepia

  • New Member
  • *
  • Beiträge: 5
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #2 am: 04 Juli 2019, 15:37:12 »
Hi Dominik,

danke. Witzig, dass du es auch zufällig gefunden hattest ;D

Bzgl. TTS: Normalerweise nutzt SEPIA die im Client per default eingestellte TTS Engine. In Android ist das meist die offline oder online Variante von Google (man kann aber alles Mögliche aus dem Store installieren), bei Apple die Siri Stimme, in Firefox für Windows meistens die Microsoft offline Stimmen und in Chrome für Windows gibt es auch die Google Stimmen zur Auswahl (zusätzlich zu Microsoft).
Theoretisch hat der SEPIA Server auch die Möglichkeit Mp3s zum Client zu streamen die vom offline oder online Service der Firma Acapela erzeugt werden, diese Funktion habe ich aber seit langer Zeit nicht mehr getestet.
Es gibt auch einen Raspberry Pi Client der in Chromium läuft (über Openbox im Kiosk-Mode), für den hatte ich eSpeak integriert (weil ich die Stimme einfach geil finde für Roboter  ::)) und mit PicoTTS experimentiert (das war mal die alte Android offline TTS). PicoTTS klappt in der Commandline aber leider nicht im Chromium, deswegen war ich noch am überlegen, ob ich das über die alte Acapela Schnittstelle auch einbaue, so dass es vom SEPIA Server gemanagt wird.
Spannend finde ich auch die neue Mycroft Mimic2 Engine, aber ich habe gelesen, dass die für den Realfall noch zu viel Resourcen frisst und deswegen zu hohe Latenz hat.

Könntest du mir vielleicht einen kurzen Überblick geben über den Mycroft Connector und was alles nötig war dafür? Ich kenne mich noch nicht wirklich aus mit FHEM, aber bei openHAB konnte ich die Geräte über deren REST API abrufen und dann bei SEPIA integrieren (Name geben, Status lesen/schreiben, etc.).

Grüße

Offline dkreutz

  • Full Member
  • ***
  • Beiträge: 344
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #3 am: 05 Juli 2019, 08:49:38 »
Eine echte REST-API gibt es nicht, es können FHEM-Kommandos per http/https oder telnet abgesetzt werden.
Der Status von Devices (State, Readings, Attribute) kann über einen http-Request mit dem Command "jsonlist2" abgefragt werden, das Ergebnis kommt dann im JSON-Format zurück.

Ich verwende im fhem-skill für Mycroft eine Python-Bibliothek (https://github.com/domschl/python-fhem) die alle Aufrufe kapselt.
Raspberry Pi3B+ (Stretch) / 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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21009
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #4 am: 05 Juli 2019, 09:16:55 »
Zitat
Eine echte REST-API gibt es nicht
Wobei ich gerne wuesste, was eine "echte" REST-API ist.

Zitat
Der Status von Devices (State, Readings, Attribute) kann über einen http-Request mit dem Command "jsonlist2" abgefragt werden, das Ergebnis kommt dann im JSON-Format zurück.
...oder xmllist fuer XML Format oder list fuer Newline separiert oder man baut seine eigene Funktion, und ruft diese per HTTP/HTTPS/telnet auf.
Wobei "telnet" hier fuer TCP/IP "pur" steht, und nicht fuer das telnet Protokoll.
Man kann Fremdsysteme auch per MQTT anbinden, dafuer wird gerne das MQTT_GENERIC_BRIDGE als Hilfsmodul verwendet.

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2115
  • cosmoprolet & intelligenzdiabetiker
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #5 am: 05 Juli 2019, 09:35:00 »
höchst interessant ... bookmark
→do↑p!dnʇs↓shit←
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline sepia

  • New Member
  • *
  • Beiträge: 5
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #6 am: 05 Juli 2019, 19:43:33 »
Es muss ja gar keine "echte" REST API sein, ein HTTP(S) Endpoint mit JSON Objekten war eigentlich schon das was ich meinte ;-)
Hätte Jemand vielleicht gerade einen Beispiel request parat oder einen Link zur Dokumentation? :-)

@Dominik: Ein Nachtrag bezüglich TTS. Hatte mich Gestern und Heute wieder mit dem Thema Raspberry Pi Client beschäftigt, da mein RPi4 (4GB) Gestern ankam ^_^ und dabei noch mal mit PicoTTS experimentiert. Das klappt jetzt doch so wie es soll ;D , ist zwar nicht zu vergleichen mit den state-of-the-art TTS Engines aber akzeptabel wenn man komplett unabhängig, kostenlos und Ressourcen schonend arbeiten will.

Auch zum Thema STT (Spracherkennung) noch ein interessanter Hinweis: In der Android App lief bei mir die Google Variante seit Wochen im OFFLINE Modus ohne dass ich es bemerkt hatte :o ;D . Selbst Straßennamen wurden zuverlässig erkannt und das ganz ohne Cloud. Leider finde ich dazu kaum nützliche Informationen seitens Google, aber die scheinen sich extrem verbessert zu haben. Es gab wohl mal die Meldung dass das neue, komprimierte offline Modell kommen soll, aber eigentlich erstmal nur in USA und für GBoard die Keyboard app von Google.

Offline dkreutz

  • Full Member
  • ***
  • Beiträge: 344
  • Home, Smart Home!
    • fhem-skill für Mycroft.ai
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #7 am: 05 Juli 2019, 20:07:47 »
Wobei ich gerne wuesste, was eine "echte" REST-API ist.
Bei FHEM kann ich kein einheitliches Pattern erkennen, mit dem ich im Sinne des RESTful Architekturstils den Zustand von Devices abfragen oder ändern kann.

Bei Homesassistant kann ein Gerät über die URI "/api/states/<entity_id>" adressiert werden. Den Zustand eines Devices kann man mit einem GET abfragen und mit einem POST ändern. Die Payload ist dort im JSON-Format. Bei FHEM frage ich den Zustand mit "/cmd=jsonlist2 NAME=device_name" und schalte mit "/cmd=set device_name on"

Es muss ja gar keine "echte" REST API sein, ein HTTP(S) Endpoint mit JSON Objekten war eigentlich schon das was ich meinte ;-)
Hätte Jemand vielleicht gerade einen Beispiel request parat oder einen Link zur Dokumentation? :-)
https://commandref.fhem.de/#JsonList2 plus https://commandref.fhem.de/#devspec
Raspberry Pi3B+ (Stretch) / 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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21009
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #8 am: 05 Juli 2019, 20:13:59 »
Zitat
Hätte Jemand vielleicht gerade einen Beispiel request parat
http://localhost:8083/fhem?cmd=jsonlist2&fwcsrf=csrf_947663951072259&XHR=1

Den Wert fuer fwcsrf holt man entweder aus dem fwcsrf Attribut des <body> Tags bei einem Aufruf ohne cmd, oder man setzt "attr WEB csrfToken" auf einen festen Wert.

Offline klausw

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1894
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #9 am: 09 Juli 2019, 10:36:31 »
Ich lese hier mal mit. An einer Integration in FHEM hätte ich durchaus Interesse.
Derzeit nutze ich Snips. Das geht halt leider nur in den eigenen vier Wänden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Offline sepia

  • New Member
  • *
  • Beiträge: 5
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #10 am: 11 Juli 2019, 13:29:50 »
http://localhost:8083/fhem?cmd=jsonlist2&fwcsrf=csrf_947663951072259&XHR=1

Den Wert fuer fwcsrf holt man entweder aus dem fwcsrf Attribut des <body> Tags bei einem Aufruf ohne cmd, oder man setzt "attr WEB csrfToken" auf einen festen Wert.

Danke für den Hinweis! Das CSRF Token scheint bisher in der Dokumentation von jsonlist2 nicht aufzutauchen und ich hab mich schon gefragt wieso nix klappte :o. Der Sicherheitsaspekt erschließt sich mir aber noch nicht so ganz, wenn ich das Token selber aus dem Header lesen kann ??? (wahrscheinlich habe ich nicht gründlich genug gelesen ^^).

Habe gerade mal angefangen den alten SEPIA openHAB Service aufzubrechen und in ein allgemeineres Interface umzuwandeln. Ich denke das sollte auch für FHEM ganz gut klappen :-)

Updates folgen :D

Offline TRallala

  • New Member
  • *
  • Beiträge: 8
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #11 am: 17 Oktober 2019, 14:04:49 »
Hey Florian,

meinst du machst noch weiter mit der Anbindung an FHEM?

Würde (ich hoffe nicht nur mich) sehr freuen ein positives Update dazu zu bekommen. Das Framework läuft bei mir zum testen mittlerweile ganz gut und wartet nur noch drauf weiter trainiert zu werden.
Der passende Zeitpunkt alles miteinander auch an fhem anzudocken.

VG
Markus

Offline sepia

  • New Member
  • *
  • Beiträge: 5
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #12 am: 17 Oktober 2019, 14:54:34 »
Hi Markus,

freut mich dass SEPIA bei dir läuft! Wie der Zufall es so will hatte ich mir für heute auf die To-Do Liste gesetzt mal einen Schritt weiter zu kommen mit FHEM :-)

Die letzten beiden SEPIA Updates hatten sich mehr auf die Chat/Messenger Funktionen und die Konfigurierbarkeit des Natural-Language-Understanding (NLU) Moduls konzentriert, parallel hatte ich aber schon Anpassungen an dem Smart Home Service und den Parametern für 'SmartDevice' und 'Room' vorgenommen damit sich FHEM leichter integrieren lässt.

Der nächste Schritt ist nun ein kleines Tutorial für das SEPIA SDK in dem ich FHEM als Beispiel nutzen möchte für einen selbstgebauten Service (vermutlich Lampen Steuerung). Abhängig davon wie gut das klappt entscheide ich dann wie es weiter geht :-)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline TRallala

  • New Member
  • *
  • Beiträge: 8
Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
« Antwort #13 am: 17 Oktober 2019, 15:25:46 »

Danke für das Update - freut mich wenns dann weiter geht!

VG von nebenan (DO)

 

decade-submarginal