SEPIA open-source Sprachassistent: Integration in FHEM?

Begonnen von sepia, 04 Juli 2019, 12:10:12

Vorheriges Thema - Nächstes Thema

sepia

Hi Stefan,

so wie ich das sehe wird der Text für das Talk2Fhem Modul ein fach über einen SET Befehl übermittelt als wenn es ein Gerät wäre, stimmt das? Falls ja könnte ich einfach in SEPIA einen Gerätetypen "Chat" (o.ä.) hinzufügen, der dann den Inputtext übermittelt.
Technisch ist es also wohl kein Problem, allerdings müsste man in SEPIA selber vermutlich einen Service erzeugen, der ziemlich großzügig alle Spracheingaben auf das Talk2Fhem Modul umleitet, da SEPIA ja selber schon viele Services und Smalltalk bedient (Musik/Radio, Nachrichten, Websuche, Wikipedia, To-Do Listen, Wetter, Navigation etc.) und das sonst gar nicht erst in den Smart Home Service gelangt. Man könnte z.B. alles was auf "... (an/über/auf) FHEM" endet einfach pauschal an diesen Service umleiten für solche Sätze wie "Guten Morgen FHEM" oder "Musik über FHEM" etc.. Oder man erzeugt einen Service der radikal alles abfängt (RegEx: "*"), dann sind aber alle sonstigen Services von SEPIA nicht mehr erreichbar.

Wenn ich mir das Talk2Fhem Modul so angucke entspricht das in vielen Teilen dem, was man im SEPIA SDK machen kann (input Sätze + RegEx definieren, vordefinierte Parameter nutzen (z.B. Datum), Aktionen ausführen und Antworten zurückgeben), das ganze würde sich also nur lohnen wenn du schon sehr viele Sätze und Regular-Expressions in Talk2Fhem hast die du nicht noch mal neu erstellen willst.

Zitat... auf der Suche nach Möglichkeiten für fest installierte Peripheriegeräten mit Hotword-Erkennung bin (ALEX bzw. Google kommen nicht in Frage)

Was schwebt dir dabei so vor? Eher ein minimalistisches Gerät im Stile vom Echo Dot oder eher ein Gerät mit Display im Stile vom Echo Show?

Haecksler

Ja, bei Talk2Fhem wird der Text einfach mit einem SET Befehl übermittelt.

ZitatWenn ich mir das Talk2Fhem Modul so angucke entspricht das in vielen Teilen dem, was man im SEPIA SDK machen kann (input Sätze + RegEx definieren, vordefinierte Parameter nutzen (z.B. Datum), Aktionen ausführen und Antworten zurückgeben), das ganze würde sich also nur lohnen wenn du schon sehr viele Sätze und Regular-Expressions in Talk2Fhem hast die du nicht noch mal neu erstellen willst.
Denke ich mir, aber mit Talk2Fhem ist man halt absolut flexibel und kann die RegEx Auswertung direkt im FHEM-Frontend anpassen.
Denkbar wäre auch, dass alles was dem Standard entspricht (Licht an/aus; Jalousien rauf/runter) direkt über SEPIA läuft und "Sonderzeug" wie z.B. Wecker/Steuerung Raumfeld etc. über Talk2Fhem gemacht wird.

Prinzipiell Stelle ich mir folgende Konfiguration vor.

Inte NUC mit FHEM und SEPIA Server sowie SEPIA Client (PS3-Eye) => Wohnzimmer
Antroid Tablet mit Frondend (TabletUI)  und SEPIA Client (Könnte hier auch die "sepia-html-client-app" in ein iframe eingebunden werden?) => Küche
pi zero mit mic-head als SEPIA Client => Schlafzimmer etc.
Android Telefon => Mobiles Gerät

Ein cooles Feature wäre noch, wenn man dem Server sagen könnte welche Clients auf welche Services zu greifen können/dürfen oder sollen.
Somit könnte man z.B. die Pis nur auf den "FHEM-Chat" zugreifen lassen und somit ohne zusätzliches "Code-Wort" Befehle an FHEM senden.

sepia

ZitatDenke ich mir, aber mit Talk2Fhem ist man halt absolut flexibel und kann die RegEx Auswertung direkt im FHEM-Frontend anpassen.
Denkbar wäre auch, dass alles was dem Standard entspricht (Licht an/aus; Jalousien rauf/runter) direkt über SEPIA läuft und "Sonderzeug" wie z.B. Wecker/Steuerung Raumfeld etc. über Talk2Fhem gemacht wird.

Ich gucke mal, dass ich da einen guten Kompromiss finde. Prinzipiell würde ich natürlich gerne beide Optionen anbieten und es dann dem User überlassen was ihm besser gefällt :-)

ZitatInte NUC mit FHEM und SEPIA Server sowie SEPIA Client (PS3-Eye) => Wohnzimmer
Antroid Tablet mit Frondend (TabletUI)  und SEPIA Client (Könnte hier auch die "sepia-html-client-app" in ein iframe eingebunden werden?) => Küche
pi zero mit mic-head als SEPIA Client => Schlafzimmer etc.
Android Telefon => Mobiles Gerät

Das klingt nach einer guten Kombination 8)

Eine PS3-Eye hab ich auch mal getestet, ich meine die funktionierte auf manchen System ganz gut, aber wenn ich mich richtig erinnere hatte ich teilweise Probleme mit den Treibern. In letzter Zeit nutze ich oft das "AmazonBasics Tragbares USB-Kondensatormikrofon", eine günstigere Version des "Samson Go Mic Clip-On" das ich leider noch nicht testen konnte. Auch wenn ich grundsätzlich kein Fan der AmazonBasics Produkte bin hat sich das auch bei größeren Demos überraschend gut geschlagen.

Iframes sind kein Problem, im Gegenteil ich arbeite zur Zeit sogar an einem erweiterten Interface dafür. Was ich allerdings noch nicht wirklich getestet habe ist die Kombination mit dem mobilen Browser. Je nachdem welche Spracherkennung man da nutzt (Android-Nativ oder eigener Server) könnte es etwas unterschiedlich reagieren.

Der PI Zero mit mic-head als SEPIA Client ist etwas, dass ich gerade teste. Da der SEPIA Client auf HTML basiert ist meine bisherige "headless" Variante ein RPi3 gewesen der mittels Xvfb das Display simuliert und den Client dann im Chromium Browser laufen lässt. Hier gibt es etwas mehr Infos dazu. Das hat soweit ziemlich gut funktioniert, ich weiß aber noch nicht wie gut der Zero da von der Performance mithalten kann.
In den nächsten Tagen würde ich dazu gerne eine offizielle Variante mit Installationsskript veröffentlichen.

ZitatEin cooles Feature wäre noch, wenn man dem Server sagen könnte welche Clients auf welche Services zu greifen können/dürfen oder sollen.
Somit könnte man z.B. die Pis nur auf den "FHEM-Chat" zugreifen lassen und somit ohne zusätzliches "Code-Wort" Befehle an FHEM senden.

Das setze ich mal auf die To-Do Liste :-)

Jasdhewer

Hallo,
ich habe folgende (Anfänger)fragen.
Kann ich SEPIA auch auf einem Raspberry Pi 4 betreiben?
Bei der Anleitung (https://github.com/SEPIA-Framework/sepia-docs/wiki/Installation#raspberry-pi-3) steht die vorgehensweise für den Pi3. Kann ich diese Anleitung auch für den PI 4 benutzen? Weiterhin darf ich laut Anleitung keine desktop version nehmen. Diese habe ich habe bereits installiert mit Programmen wie fhem, iobroker, debmatic. Ich würde ungerne wieder alles von vorne beginnen?!

Welche Hardware benötige ich am Besten? Ich habe einen ReSpeaker 4 mic array noch übrig. Kann ich den dafür benutzen oder was wäre besser dafür geeignet?

Vielen Dank schon mal für die Hilfe!

WarLLe

Hi,
erstmal vielen Dank für deine Entwicklung bisher.
Wenn ich das richtig Verstanden habe exisitiert die FHEM Unterstützung derzeit nur im dev branch.
Ich habe versucht aus dem dev branch alles zu erstellen leider läuft er beim Build auf einen Fehler in den Tests.
Liegt das an mir oder ist da was allgemein schief gelaufen?

LG

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building SEPIA Core-Tools 2.2.4
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ sepia-core-tools ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /root/SEPIA/tmp/sepia-core-tools-java/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ sepia-core-tools ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 61 source files to /root/SEPIA/tmp/sepia-core-tools-java/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ sepia-core-tools ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.2:testCompile (default-testCompile) @ sepia-core-tools ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 8 source files to /root/SEPIA/tmp/sepia-core-tools-java/target/test-classes
[INFO]
[INFO] --- maven-surefire-plugin:3.0.0-M3:test (default-test) @ sepia-core-tools ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running tools.ToolsTest
{"other":{"level1":{"level2a":{"level3":{"new":"deep down"}},"level2b":{"level3":{"new":"deep down 2"}}}},"top":{"unt                                                                                                                        ouched":"true","new":"here"},"over_the_top":"yeah"}
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.165 s - in tools.ToolsTest
[INFO] Running data.CommandTest
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 1.257 s <<< FAILURE! - in data.CommandTest
[ERROR] testImportJSON(data.CommandTest)  Time elapsed: 1.256 s  <<< FAILURE!
org.junit.ComparisonFailure:
expected:<...-31T11:10:43",
    "[environment" : null,
    "explicit" : false,
    "language" : "en",
    "local" : false,
    "machine_translated" : false,
    "params" : { },
    "public" : true,
    "replies" : [ ],
    "source" : null,
    "tagged_text" : "",
    "text" : "Hello, <user>, how are you?",
    "translated_from" : null,
    "user" : "myuser",
    "user_location" : "5,8.2"
  }, {
    "cmd_summary" : "foo",
    "data" : { },
    "date" : "2016-05-31T11:10:43"],
    "environment" ...> but was:<...-31T11:10:43",
    "[device_id" : null,
    "environment" : null,
    "explicit" : false,
    "language" : "en",
    "local" : false,
    "machine_translated" : false,
    "params" : { },
    "public" : true,
    "replies" : [ ],
    "source" : null,
    "tagged_text" : "",
    "text" : "Hello, <user>, how are you?",
    "translated_from" : null,
    "user" : "myuser",
    "user_location" : "5,8.2"
  }, {
    "cmd_summary" : "foo",
    "data" : { },
    "date" : "2016-05-31T11:10:43",
    "device_id" : null],
    "environment" ...>
        at data.CommandTest.testImportJSON(CommandTest.java:26)

[INFO] Running data.AnswerTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.117 s - in data.AnswerTest
[INFO] Running microservices.TestMicroservices
NOTE: JUnit-microservices: skipped dBStationResults testing due to missing API-key!
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in microservices.TestMicroservices
[INFO]
[INFO] Results:
[INFO]
[ERROR] Failures:
[ERROR]   CommandTest.testImportJSON:26 expected:<...-31T11:10:43",
    "[environment" : null,
    "explicit" : false,
    "language" : "en",
    "local" : false,
    "machine_translated" : false,
    "params" : { },
    "public" : true,
    "replies" : [ ],
    "source" : null,
    "tagged_text" : "",
    "text" : "Hello, <user>, how are you?",
    "translated_from" : null,
    "user" : "myuser",
    "user_location" : "5,8.2"
  }, {
    "cmd_summary" : "foo",
    "data" : { },
    "date" : "2016-05-31T11:10:43"],
    "environment" ...> but was:<...-31T11:10:43",
    "[device_id" : null,
    "environment" : null,
    "explicit" : false,
    "language" : "en",
    "local" : false,
    "machine_translated" : false,
    "params" : { },
    "public" : true,
    "replies" : [ ],
    "source" : null,
    "tagged_text" : "",
    "text" : "Hello, <user>, how are you?",
    "translated_from" : null,
    "user" : "myuser",
    "user_location" : "5,8.2"
  }, {
    "cmd_summary" : "foo",
    "data" : { },
    "date" : "2016-05-31T11:10:43",
    "device_id" : null],
    "environment" ...>
[INFO]
[ERROR] Tests run: 10, Failures: 1, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.573 s
[INFO] Finished at: 2019-12-07T16:08:44+01:00
[INFO] Final Memory: 15M/45M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test (default-test) on project                                                                                                                         sepia-core-tools: There are test failures.

sepia

ZitatKann ich SEPIA auch auf einem Raspberry Pi 4 betreiben?
Bei der Anleitung (https://github.com/SEPIA-Framework/sepia-docs/wiki/Installation#raspberry-pi-3) steht die vorgehensweise für den Pi3. Kann ich diese Anleitung auch für den PI 4 benutzen? Weiterhin darf ich laut Anleitung keine desktop version nehmen. Diese habe ich habe bereits installiert mit Programmen wie fhem, iobroker, debmatic. Ich würde ungerne wieder alles von vorne beginnen?!

Hi Jasdhewer,
SEPIA läuft auch ohne Probleme auf dem RPi4, ich bin nur leider noch nicht dazu gekommen die Docs dafür zu aktualisieren. Ich habe eine Version in Betrieb, die den Server, Client und Smart Home HUB auf einem RPi4 4GB gleichzeitig laufen lässt. Dazu habe ich einen kleinen 4" Touchscreen (Hyperpixel) angeschlossen, ein USB Mikrofon (Amazon Basics) und einen Lautsprecher via Klinke. Für den Server brauchst du eigentlich nur Raspbian Buster Lite und Java, ich nutze zur Zeit JDK 11:
sudo apt-get install openjdk-11-jdk-headless

Für den Client sind noch ein paar Einstellungen mehr nötig, die ich die Tage noch dokumentieren will. Bis dato würde ich die Android App empfehlen oder Chromium Browser auf einem beliebigen (non-iOS) Gerät.
Wenn dein RPi4 genug RAM hat für FHEM, ioBroker, etc. dann kannst du auch ruhig die Desktop Version nutzen. Die Einschränkung gilt beim RPi3 nur weil es den mit maximal 1GB RAM gibt. SEPIA braucht mindestens 500MB RAM für die Elasticsearch Datenbank und noch mal wenigstens 250MB für den Rest, da wird es dann mit installiertem Desktop etwas knapp und mit zusätzlicher Software vermutlich sehr instabil ;-)

ZitatWenn ich das richtig Verstanden habe exisitiert die FHEM Unterstützung derzeit nur im dev branch.
Ich habe versucht aus dem dev branch alles zu erstellen leider läuft er beim Build auf einen Fehler in den Tests.
Liegt das an mir oder ist da was allgemein schief gelaufen?

Hi WarLLe,
ja der FHEM Support ist noch in der Test-Phase im Dev Branch allerdings läuft die aktuelle Version schon ganz ordentlich bei mir. Ein bekanntes Problemchen sind z.B. noch Temperaturen für Thermostate, ansonsten wäre Feedback von "echten" Systemen sehr nützlich!
Der Fehler im Build war meine Schuld ::) Hatte vergessen die Test-Daten zu aktualisieren nach dem letzten Commit ??? Danke für den Hinweis! Jetzt läuft es in meinem Test-Build wieder komplett durch. Versuch es doch bitte noch mal  ;D

WarLLe

#36
Zitat von: sepia am 07 Dezember 2019, 23:41:58
Hi Jasdhewer,
SEPIA läuft auch ohne Probleme auf dem RPi4, ich bin nur leider noch nicht dazu gekommen die Docs dafür zu aktualisieren. Ich habe eine Version in Betrieb, die den Server, Client und Smart Home HUB auf einem RPi4 4GB gleichzeitig laufen lässt. Dazu habe ich einen kleinen 4" Touchscreen (Hyperpixel) angeschlossen, ein USB Mikrofon (Amazon Basics) und einen Lautsprecher via Klinke. Für den Server brauchst du eigentlich nur Raspbian Buster Lite und Java, ich nutze zur Zeit JDK 11:
sudo apt-get install openjdk-11-jdk-headless

Für den Client sind noch ein paar Einstellungen mehr nötig, die ich die Tage noch dokumentieren will. Bis dato würde ich die Android App empfehlen oder Chromium Browser auf einem beliebigen (non-iOS) Gerät.
Wenn dein RPi4 genug RAM hat für FHEM, ioBroker, etc. dann kannst du auch ruhig die Desktop Version nutzen. Die Einschränkung gilt beim RPi3 nur weil es den mit maximal 1GB RAM gibt. SEPIA braucht mindestens 500MB RAM für die Elasticsearch Datenbank und noch mal wenigstens 250MB für den Rest, da wird es dann mit installiertem Desktop etwas knapp und mit zusätzlicher Software vermutlich sehr instabil ;-)

Hi WarLLe,
ja der FHEM Support ist noch in der Test-Phase im Dev Branch allerdings läuft die aktuelle Version schon ganz ordentlich bei mir. Ein bekanntes Problemchen sind z.B. noch Temperaturen für Thermostate, ansonsten wäre Feedback von "echten" Systemen sehr nützlich!
Der Fehler im Build war meine Schuld ::) Hatte vergessen die Test-Daten zu aktualisieren nach dem letzten Commit ??? Danke für den Hinweis! Jetzt läuft es in meinem Test-Build wieder komplett durch. Versuch es doch bitte noch mal  ;D

Hi,

nun hat alles geklappt und ich habe SEPIA auf einer VM eingerichtet. Leider klappt die Verbindung mit FHEM nicht richtig.
-> Load Hub Info sagt connection established
-> Register Sepia läuft auf den Fehler unten

Was genau muss in der Config bei den folgenden beiden Attributen eingetragen werden?

"smarthome_hub_auth_type=",
"smarthome_hub_auth_data=",


Vermutlich liegt es dann an dieser Stelle bei mir daran. Folgenden Output erhalte ich vom Interface:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}


Folgendes steht im LOG:
2019-12-07 23:36:02 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"code":401,"HTTP_REST_SUCCESS":false}

LG WarLLe

sepia

Hi noch mal :-)

ZitatWas genau muss in der Config bei den folgenden beiden Attributen eingetragen werden?

Bei mir ist es z.B.:


smarthome_hub_host=http://localhost:8083/fhem
smarthome_hub_name=fhem


Die Fehlermeldung sagt "code":401, das heißt "nicht autorisiert" und kann mehrere Gründe haben.
Gibt es vielleicht eine weitere Fehlermeldung wie z.B.: "FHEM - getCsrfToken FAILED"?
Ist der Zugang zu FHEM vielleicht noch anderweitig abgesichert?
Ich teste immer mit der neusten Version und Standardkonfiguration von FHEM. Welche Version nutzt du? Gibt es irgendwelche speziellen Einstellungen? Vielleicht etwas was das Csrf Token betrifft?

Grüße

WarLLe

Zitat von: sepia am 08 Dezember 2019, 02:09:40
Hi noch mal :-)

Bei mir ist es z.B.:


smarthome_hub_host=http://localhost:8083/fhem
smarthome_hub_name=fhem


Die Fehlermeldung sagt "code":401, das heißt "nicht autorisiert" und kann mehrere Gründe haben.
Gibt es vielleicht eine weitere Fehlermeldung wie z.B.: "FHEM - getCsrfToken FAILED"?
Ist der Zugang zu FHEM vielleicht noch anderweitig abgesichert?
Ich teste immer mit der neusten Version und Standardkonfiguration von FHEM. Welche Version nutzt du? Gibt es irgendwelche speziellen Einstellungen? Vielleicht etwas was das Csrf Token betrifft?

Grüße

Hi,

Also ich habe meine FHEM Instanz mittels basicAuth noch abgesichert. Soweit ich weiß ist dies nicht voreingestellt. Einstellungen dafür sind hier zu finden:

https://wiki.fhem.de/wiki/Allowed

Daher auch die Frage nach den beiden Attributen die für die Authentifizierung zuständig sind ;)

smarthome_hub_auth_type=
smarthome_hub_auth_data=


LG

sepia

#39
ZitatDaher auch die Frage nach den beiden Attributen die für die Authentifizierung zuständig sind ;)

uups da war ich wohl schon zu müde und hab nicht mehr genau gelesen  ??? ^_^
Aber das passt ja wie die Faust aufs Auge, diese Funktion habe ich gestern erst hinzugefügt :D

Ein valider Eintrag wäre z.B.:


smarthome_hub_auth_type=Basic
smarthome_hub_auth_data=dXNlcjp0ZXN0MTIzNDU=


"dXNlcjp0ZXN0MTIzNDU=" entspricht dabei der base64 Kodierung von "user:test12345" also Nutzername "user" und Passwort "test12345". SEPIA macht die für Basic-Auth übliche base64 Kodierung nicht automatisch sondern der Wert muss so in den Settings eingetragen werden (siehe zB https://www.base64encode.org/).

Ich benutze den selben Prozess für Systeme, die z.B. über einen Reverse-Proxy wie Nginx abgesichert wurden, habe das jetzt allerdings für FHEM noch nicht getestet und speziell auch noch nicht mit dem 'allowed' Modul. Versuche es aber gleich auch mal bei mir zu reproduzieren.

[EDIT]Ein erster, schneller Test schlägt bei mir noch fehl. Könnte durchaus sein, dass irgendwo noch der Wurm drin ist :'(

[EDIT2]Ok hab den Fehler gefunden und das Repo upgedated ^^. Falls du es sofort testen willst müsstest du einmal SEPIA neu bauen und dann einfach die "sepia-assist-v2.4.0.jar" ersetzen im "alten" SEPIA Ordner (sepia-assist-server\...)

WarLLe

Zitat von: sepia am 08 Dezember 2019, 11:47:24
uups da war ich wohl schon zu müde und hab nicht mehr genau gelesen  ??? ^_^
Aber das passt ja wie die Faust aufs Auge, diese Funktion habe ich gestern erst hinzugefügt :D

Ein valider Eintrag wäre z.B.:


smarthome_hub_auth_type=Basic
smarthome_hub_auth_data=dXNlcjp0ZXN0MTIzNDU=


"dXNlcjp0ZXN0MTIzNDU=" entspricht dabei der base64 Kodierung von "user:test12345" also Nutzername "user" und Passwort "test12345". SEPIA macht die für Basic-Auth übliche base64 Kodierung nicht automatisch sondern der Wert muss so in den Settings eingetragen werden (siehe zB https://www.base64encode.org/).

Ich benutze den selben Prozess für Systeme, die z.B. über einen Reverse-Proxy wie Nginx abgesichert wurden, habe das jetzt allerdings für FHEM noch nicht getestet und speziell auch noch nicht mit dem 'allowed' Modul. Versuche es aber gleich auch mal bei mir zu reproduzieren.

[EDIT]Ein erster, schneller Test schlägt bei mir noch fehl. Könnte durchaus sein, dass irgendwo noch der Wurm drin ist :'(

[EDIT2]Ok hab den Fehler gefunden und das Repo upgedated ^^. Falls du es sofort testen willst müsstest du einmal SEPIA neu bauen und dann einfach die "sepia-assist-v2.4.0.jar" ersetzen im "alten" SEPIA Ordner (sepia-assist-server\...)

Hi nochmal und danke für die schnelle Antwort :)
Also wenn ich die Authentifizierung rausnehme funktioniert der Connect und ich bekomme auch meine Devices gelistet. Schön dass er auch direkt die Lichter erkennt :).
Leider klappt es mit Authentifizierung in base64 nicht. Zum Testen aber ist es so erstmal in Ordnung. Ich werde jetzt erstmal ein wenig damit rumspielen und dir dann auch gerne falls gewünscht Feedback geben.

Eine Frage vorab: Gibt es die Möglichkeit wie eine Art Smart Speaker auf dem Raspberry auf das Hotword zu warten und Befehle entgegen zu nehmen. Mein aktueller Aufbau ist folgendermaßen:

In einer VM läuft aktuell SEPIA da mein Raspi3 nicht genug RAM mehr zur Verfügung hat auf dem laufen mittlerweile zu viele Sachen. Trotzdem würde ich gerne mittels 2-Mic Respeaker dort (Rapsbbery) Sprachbefehle zur Steuerung von FHEM entgegen nehmen. Ich komme von SNIPS nun zu deiner Lösung da SNIPS ja nächstes Jahr die Schotten dicht macht. Mit SNIPS war eine Multiroom Lösung vorhanden mit der man je nachdem wo der Befehl entgegen genommen wurde die Lichter automatisch diesem Raum zugeordnet steuern konnte und nur im Fall von der Bennenung eines Raumes andere Lichter in anderen Räumen steuern konnte. Ist so etwas auch geplant? Außerdem habe ich die Komponente Mesh-Node-Server noch nicht ganz verstanden. Vielleicht wird es mir aber bei weiteren Recherchen noch klar :).

Bisher kann ich nur sagen vielen Dank für deine bisherigen Mühen und Respekt für das schon geschaffene. Top!

LG

sepia

ZitatAlso wenn ich die Authentifizierung rausnehme funktioniert der Connect und ich bekomme auch meine Devices gelistet. Schön dass er auch direkt die Lichter erkennt :).

Bei manchen Geräten findet er den Device-Type automatisch, mit dem FHEM Demo habe ich aber auch manchmal das Problem, dass Geräte als Lichter angezeigt werden die eigentlich keine Switches sind (meine Hue Bridge zB). Es lohnt sich in jedem Fall das Attribut noch einmal zu setzen für die Geräte die man wirklich nutzen will in SEPIA (z.B. von Light auf Heater und wieder auf Light, dann wird es korrekt im SEPIA Tag vermerkt) und andere im Zweifelsfall auf Type="Hidden" zu stellen damit sie ignoriert werden.

ZitatEine Frage vorab: Gibt es die Möglichkeit wie eine Art Smart Speaker auf dem Raspberry auf das Hotword zu warten und Befehle entgegen zu nehmen.
[...] würde ich gerne mittels 2-Mic Respeaker dort (Rapsbbery) Sprachbefehle zur Steuerung von FHEM entgegen nehmen.

Ja diese Möglichkeit gibt es. SEPIA hat eine Hotword Engine integriert (Porcupine), die sowohl auf Linux (ARM, x86) und Windows als auch im Browser und der App funktioniert. Das kann komplett im Client laufen oder als eine Art Remote-Trigger. Hier ein paar Videos dazu:

Video 1: Raspberry Pi Zero als Hotword Remote Trigger,
Video 2: Hotword und Client in einem Gerät,
Video 3: Ohne Stimme via Microbit ^^

Zur Zeit ist die richtige Konfiguration eines Raspberry Pi der quasi "headless" funktioniert (kein Display aber trotzdem mit vollem Client) noch etwas komplizierter als ich gerne hätte, aber der Prototyp läuft schon ganz gut und eine Anleitung + easy Installation sollte bald kommen :-)

ZitatMit SNIPS war eine Multiroom Lösung vorhanden mit der man je nachdem wo der Befehl entgegen genommen wurde die Lichter automatisch diesem Raum zugeordnet steuern konnte und nur im Fall von der Bennenung eines Raumes andere Lichter in anderen Räumen steuern konnte. Ist so etwas auch geplant?

Ja das ist im Grunde kein Problem da jeder SEPIA Client eine eigene Device ID hat und der Smart Home Service dadurch den richtigen Raum wählen kann falls er per Sprache nicht mitgegeben wurde. Ein User hat das mal über das SDK selber umgesetzt, da diese Frage aber jetzt schon mehrmals aufkam überlege ich mal wie ich das per Default einbauen könnte. Vielleicht füge ich in den Smart Home Settings die Möglichkeit hinzu SEPIA Client DeviceIds einen Raum zuzuordnen, das sollte leicht machbar sein 8)

ZitatAußerdem habe ich die Komponente Mesh-Node-Server noch nicht ganz verstanden. Vielleicht wird es mir aber bei weiteren Recherchen noch klar :).

Die Mesh-Node kann man anfangs erstmal getrost ignorieren denke ich ;). Im Grunde ist es ein mini-Server, den man auf einem anderen Gerät laufen lassen kann und der dort z.B. Runtime-Befehle ausführt oder eigene Plugins. Dabei kommuniziert er direkt mit SEPIA über einen sicheren Kanal und lässt sich z.B. über Teach-UI Befehle steuern. Hier hatte ich mal einen Blog Artikel dazu geschrieben.

ZitatBisher kann ich nur sagen vielen Dank für deine bisherigen Mühen und Respekt für das schon geschaffene. Top!

Danke!  :) :D

TRallala

Hi Florian,

ein/aus/umschalten von einfachen Schaltern funktioniert soweit schon.

Nächste Herausforderung ist die Heizung..

   "smart_device_value": "<temperature>;;15 grad",

das "grad" muss halt noch weg.

Ausserdem die Frage, wozu genau sind die attribute:
sepia-data
sepia-mem-state



Vielen Dank nochmal für deine Arbeit!
Gruß
Markus

sepia

Hi Markus,

ZitatNächste Herausforderung ist die Heizung..

Ja, in der Tat! ::)
Der String "<temperature>;;15 grad" ist ein eher abstrakter Zwischenzustand des Parameters (aus der sog. "extract" Phase, danach kommt noch die "build" Phase und die Konvertierung innerhalb des Smart Home Services) so dass am Ende im FHEM Device glaube ich "set 15" ankommen würde. Da ich an dieser Stelle nicht mal weiß ob das Gerät Celsius, Fahrenheit, Prozent oder Heizstufe (falls es sowas gibt) erwartet dürfte es allgemein scheitern.
Was ist hier eigentlich üblich?

Vor ein paar Tagen hatte ich zu diesem Zweck schon mal im Client eingebaut, dass der User seine Temperatureinheit wählen kann (C oder F) und ein Skript geschrieben was dazwischen konvertiert. Jetzt muss ich aber noch herausfinden welche Werte das Gerät anzeigt ^^.

Bezüglich:
sepia-data
sepia-mem-state


'data' ist ein provisorisches Feld, falls irgendwann zusätzliche Infos gespeichert werden müssen. 'mem-state' ist dafür vorgesehen, den letzten "aktiven" Zustand zu speichern, d.h. wenn ich sage "Licht auf 70%" und dann "Licht aus" sollte im 'mem-state' 70% gespeichert werden und beim nächsten "Licht an" dann dieser Wert verwendet. Bisher wurde das aber nicht umgesetzt.

Es gibt übrigens einen neuen Test-Build :-) (noch ohne Fixes für Temperatur allerdings):
Download v2.4.0_b4

TRallala


Zitatso dass am Ende im FHEM Device glaube ich "set 15" ankommen würde
stimmt auffallend..

Damit ist man wohl an dem Punkt den justme schon beschrieben/beschritten hat:  es gibt keinen allgemein gültigen Syntax für die unterschiedlichsten Systeme, allein mir sind u.a. schon untergekommen

  • desired-temp
  • temperature
  • desiredTemp
  • desired-temperature

also im Prinzip dasselbe Szenario wie z.B. mit Dimmern und Rolläden

... also vielleicht doch eine anbindung an https://github.com/justme-1968/homebridge-fhem ...?

Zitat'mem-state' ist dafür vorgesehen, den letzten "aktiven" Zustand zu speichern
passt zu dem, was man sich (bzw. Ich mir) darunter vorgestellt habe.

ZitatDownload v2.4.0_b4
Danke - Noch wesentliche Änderungen nach Dienstag eingeflossen?