FHEM Forum

FHEM => Frontends => Sprachsteuerung => Thema gestartet von: sepia am 04 Juli 2019, 12:10:12

Titel: SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 04 Juli 2019, 12:10:12
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

[EDIT]

--- Update ---

Mittlerweile ist FHEM voll integriert in SEPIA 8)

--- Originaler Beitrag ---

For einiger Zeit hatte ich bereits eine Smart Home Integration via openHAB (https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls) 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)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: dkreutz 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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia 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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: dkreutz 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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: rudolfkoenig am 05 Juli 2019, 09:16:55
ZitatEine echte REST-API gibt es nicht
Wobei ich gerne wuesste, was eine "echte" REST-API ist.

ZitatDer 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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia 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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: dkreutz am 05 Juli 2019, 20:07:47
Zitat von: rudolfkoenig am 05 Juli 2019, 09:16:55
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 (https://de.wikipedia.org/wiki/Representational_State_Transfer) 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"

Zitat von: sepia 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? :-)
https://commandref.fhem.de/#JsonList2 plus https://commandref.fhem.de/#devspec
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: rudolfkoenig am 05 Juli 2019, 20:13:59
ZitatHä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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw 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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 11 Juli 2019, 13:29:50
Zitat von: rudolfkoenig am 05 Juli 2019, 20:13:59
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 (https://wiki.fhem.de/wiki/CsrfToken-HowTo) scheint bisher in der Dokumentation von jsonlist2 (https://commandref.fhem.de/#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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala 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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia 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 :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 17 Oktober 2019, 15:25:46

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

VG von nebenan (DO)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 07 November 2019, 12:27:27
Sooooo, es hat noch etwas länger gedauert als geplant, da ich das Smart Home Interface etwas erweitern musste und einen neuen Server Endpoint erschaffen habe, aber die FHEM Integration ist nun in der Testphase  ::)
Hier ein kleiner Überblick, das ganze Funktioniert praktisch identisch zur openHAB Integration (falls damit schon Jemand experimentiert hatte). Kommentare willkommen:
Klingt das sinnvoll für euch? :)

Bisher teste ich nur mit Lampen, da ich selber keine anderen Geräte habe :o , aber ich habe gesehen, dass es scheinbar einen DEMO Modus gibt? Kann man den nutzen um Geräte wie Heizungen, Jalousien, etc. zu simulieren? Das wäre wichtig um zu prüfen, ob der Parameter beim "set" Befehl richtig konvertiert wird.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 07 November 2019, 14:41:57
Hi Florian,

Super Sache, erstmal danke für die Mühe!!

Dann zur Demo - dafür gibts eine demo cfg:
perl fhem.pl fhem.cfg.demo
da sind schon jede Menge Geräte konfiguriert.

Würde auch genere gleich testen, aber bei deiner Anleitung komm ich allerdings bei Punkt 1 schon nicht mal los:
In der SEPIA Server Config trägt man zunächst 'fhem' als HUB Namen ein und die Host Adresse, z.B. http://localhost:8083/fhem
<= sollte auch den dev server benutzen  :o

Habe über die Core Settings der Tools Seite folgendens eingetragen:

    "smarthome_hub_host=http://localhost:8083/fhem",
    "smarthome_hub_host=http\://localhost\:8083/fhem",     <= ":"  auskommentieren
    "smarthome_hub_name=FHEM",

danach ein Neustart. Unter "SmartHome" bleibts jedoch bei "openHAB" als Option.  Wo bin ich also falsch abgebogen? dev...

Jetzt hängts allerdings beim registrieren.. Error: missing HUB server or host address
siehe Anhang

<= gelöst:

1. man wähle das System "FHEM" aus
2. Load Hub Info
3. Select System wird geleert, wenn jetzt versucht wird zu registrieren, schlägt dies fehl
3.a. also erneut "FHEM" auswählen
4. Register Sepia   funktioniert.
5. Damit "Get Devices" funktioniert, muss das fhem attr "sepia-name" beim entsprechenden Gerät gesetzt sein (macht nur Sinn, fehlt jedoch in der Beschreibung oben)



Morgen gehts weiter.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 07 November 2019, 16:11:33
Hi Markus,

das ging aber fix ;D Hast du den kompletten SEPIA-Home build aus dem Dev-Branch gemacht? Ich hatte ja noch gar keine offizielle Test-Version veröffentlicht ^^.

Ich denke dass beim Laden der Einstellungen vom Server der Select Button leer bleibt könnte an einem kleinen Bug liegen der die Groß-Kleinschreibung nicht ignoriert. Hast du in der Server Config "FHEM" oder "fhem" stehen? Das Problem sollte aber nur im control HUB bestehen und kann erstmal umgangen werden wie du schon erwähnt hast.

ZitatDamit "Get Devices" funktioniert, muss das fhem attr "sepia-name" beim entsprechenden Gerät gesetzt sein

'sepia-name' hatte ich bisher gar nicht benutzt, sprich noch nicht gesetzt. Gelesen wird es aber falls es existiert. Der Fallback kommt aus FHEMs "Internals" -> "name". Ich bin davon ausgegangen, dass dieser Wert immer existiert was scheinbar nicht zwangsläufig der Fall ist. Einer von beiden MUSS existieren sonst wird das Gerät ignoriert. Falls 'sepia-type' nicht existiert kommt der Wert aus "Internals" -> "type" ins Spiel. Automatisch werden zur Zeit nur Lampen und Heizungen erkannt (oder zumindest wird es versucht ^^).

Übrigens nicht wundern wenn SEPIA in der App nur Lampen akzeptiert, ich habe bisher noch einen Type-Check drin und wollte mit dem Demo jetzt mal andere Geräte ausprobieren :)

Danke schon mal fürs Testen! 8)

[EDIT] Nachtrag:

Der Demo läuft und sieht sehr nützlich aus ^^. Ich musste allerdings den "Internals" key für den Namen von "name" zu "NAME" ändern bzw. ich checke nun beides damit die Liste der Devices nicht leer bleibt ;)
Ist zu erwarten, dass bei den keys Groß/Kleinschreibung generell variieren kann?

[EDIT2] Nachtrag2:

Mich beschleicht langsam das Gefühl der "name" Tag (Kleinbuchstaben) kam speziell von meinen Lampen :o Ich werde da mal etwas nachbessern und auch den 'sepia-name' Tag explizit ins Control HUB Interface einbauen ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 November 2019, 11:03:35
Ich habe einige Verbesserungen an der Test-Version vorgenommen, allerdings kam Gestern ein kleines Problemchen auf:

Die Lampen, mit denen ich bisher getestet habe (Philips Hue) konnten via "set pct 70" auf 70% Helligkeit gesetzt werden. Im FHEM Demo gibt es nun eine Lampe (ReadingLight) die den Parameter "pct" nicht unterstützt. Daraufhin habe ich es mit "set dim 70" und "set dim70%" versucht ... was aber auch nicht geht, da scheinbar nur diskrete Werte wie "dim68%" möglich sind :o. Nun wäre es ein ziemlicher Overkill jedesmal den nächstgelegenen dim Wert rauszusuchen. Gibt es dafür irgendwie eine bessere Lösung?  ::)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 08 November 2019, 12:04:25
habe FHEM eingetragen - aber das ist ja nun wirklich kein show-stopper.

Thema HUE/ set pct
Ich denke das liegt hauptsächlich an dem DemoGerät type FS20. Bei den meisten "neueren" dimmer typen sollte ein "set Licht pct x"  möglich sein, denke ich.

um das testen weiter zu bringen, lege dir einfach ein HUE Device an.
define HueLight HUEDevice 1

Um das ganze allerdings möglichst abstrakt zu halten, könnte/sollte man alle "set" kommandos eines Gerätes abgreifen. (kann dir nur leider nicht sagen wie  :-\ )

Ausserdem wird ein Import ALLER Geräte auch zum Overkill werden. Ich will gar nicht wissen wie hoch die Anzahl der Geräte  der Spitzenreiter hier so ist , sei es nur Licht und Heizung.
M.M.n. kann der Import ruhig nur auf Geräte erfolgen die ein "attr  sepia-name"  gesetzt haben.


Thema name/NAME
Kann es sein, dass deine Geräte den name unter Attributes haben? Alle meine Geräte haben unter INTERNALS immer und nur NAME.


Ich hoffe es gesellen sich hier noch ein, zwei weitere Meinungen hinzu...
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 November 2019, 12:43:08
ZitatUm das ganze allerdings möglichst abstrakt zu halten, könnte/sollte man alle "set" kommandos eines Gerätes abgreifen. (kann dir nur leider nicht sagen wie  :-\ )

Es gibt scheinbar 2 Möglichkeiten dafür. Auf oberster Ebene das Feld "PossibleSets" und dann noch "Attributes"->"webCmd". Beide zeigen allerdings unterschiedliche Daten an, für die Demo Lampe z.B.:

"PossibleSets":"dim0%:noArg dim100%:noArg dim06% dim100% dim12% dim18% dim25% dim31% dim37% dim43% dim50% dim56% dim62% dim68% dim75% dim81% dim87% dim93% dimdown dimup dimupdown off off-for-timer on on-100-for-timer-prev on-for-timer on-old-for-timer on-old-for-timer-prev ramp-off-time ramp-on-time reset sendstate timer toggle dim:slider,0,6.25,100 off-till blink off-till-overnight on-till intervals on-till-overnight"
und:
"webCmd": "on:off:dim:dim 50"

Als ich "dim:slider,0,6.25,100" gesehen habe dachte ich man könnte das vielleicht nutzen um auf ~70% zu "sliden", den Befehl kriege ich aber gar nicht zum Laufen ("set ReadingLight dim:slider,0,6.25,100" war mein Versuch).

ZitatAusserdem wird ein Import ALLER Geräte auch zum Overkill werden. Ich will gar nicht wissen wie hoch die Anzahl der Geräte  der Spitzenreiter hier so ist , sei es nur Licht und Heizung.
M.M.n. kann der Import ruhig nur auf Geräte erfolgen die ein "attr  sepia-name"  gesetzt haben.

Ich merke schon beim Demo dass es etwas unübersichtlich wird ;D , allerdings möchte ich auch vermeiden, dass der User irgendwelche Attribute im FHEM Interface per Hand setzen muss. Vielleicht fällt mir noch ein guter Kompromiss ein oder ich mache 'sepia-name' tatsächlich zur Pflicht ^^. Gestern hatte ich schon den neuen Wert 'hidden' für 'sepia-type' eingeführt, der das Gerät zunächst ausblendet und bei Befehlen ignoriert, mal gucken.

ZitatKann es sein, dass deine Geräte den name unter Attributes haben? Alle meine Geräte haben unter INTERNALS immer und nur NAME.

Der ist komischerweise tatsächlich unter "Internals". K.A. warum :-[
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sledge am 08 November 2019, 13:04:35
Hi,

meines Wissens ist da jetzt einiges an gefährlichem Halbwissen unterwegs.

Um zB alle möglichen set-Befehle zu erhalten, ist laut Doku

set <DEVICE> ?

der richtige Weg, sofern es korrekt implementiert wurde.

Und um zb Lampen zu dimmen, gibt es je nach Lampe unterschiedliche Methoden.

Die Yeelight zB reagiert auf "bright", HomeMatic gerne auf "pct" usw. Das hängt davon ab, wie es im entsprechenden Modul implementiert wurde.

Das von dir angeführte "webCmd": "on:off:dim:dim 50" wiederum bedeutet nichts anderes, als folgende Webcommands in der Weboberfläche darzustellen:

* On
* Off
* dim
* dim 50 - also direktes Dimmen auf  50%

Wie also dimmt man die Lampe korrekt?

set <DEVICE> dim 70 das sollte es sein.

Bitte ansonsten einfach mal die Einsteigerdoku lesen, da wird all das gut beschrieben.

HTH Tom

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 08 November 2019, 13:13:04
ZitatEs gibt scheinbar 2 Möglichkeiten dafür. Auf oberster Ebene das Feld "PossibleSets" und dann noch "Attributes"->"webCmd". Beide zeigen allerdings unterschiedliche Daten an, für die Demo Lampe z.B.:
Böse Falle - du musst die PossibleSets nehmen.  webCmd wird bei den meisten in Poduktivumgebungen Schaltern nicht gesetzt sein - es dient nur zur Darstellung von Sets in der Weboberfläche (daher der Name).
Wie mein Vorredner schon schreinb:  Vergiss dies direkt wieder.

Zum Import: Evtl. ist es eine Möglichkeit im voraus zu filtern, was bzw. welcher (fhem)Typ Importiert werden soll?

Habe ich noch nie verstanden, warum man Internals mit selben namen auch nochmal als attribut anlegt, nur dann in Kleinschreibung - hat mich auch schon mal verwirrt.

Zitatset <DEVICE> dim 70
das sollte es sein.
<= wird nicht funktionieren, da der dimmer vom Typ FS20 nur in 6 Schritten gedimmt werden kann.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sledge am 08 November 2019, 13:23:31
Zitat von: TRallala am 08 November 2019, 13:13:04

  <= wird nicht funktionieren, da der dimmer vom Typ FS20 nur in 6 Schritten gedimmt werden kann.
Ist dann aber eher ein Spezialfall als die Regel - IMHO.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 08 November 2019, 13:36:55

...denk ich auch; hindert sepia aber gerade dran mit der Demo Version vernünftig zu testen.


zurück zum Test; @Florian:

habe zwei Geräte in Sepia importiert. beide im selben Raum. Wenn ich "den Raum" schalte, wird nur das erste Gerät geschaltet.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 November 2019, 14:53:15
Hi Tom,

danke für die zusätzlichen Infos.

set <DEVICE> ?

Scheint über das "REST" interface nicht zu funktionieren. Da kommt nur "Unknown argument ?" zurück. Aus dem Rest der Diskussion würde ich aber schließen, dass "PossibleSets" die entsprechenden Infos enthält. Da dim XY bei neueren Geräten wohl meistens klappt würde ich zunächst wie folgt vorgehen:

@Markus:

ZitatZum Import: Evtl. ist es eine Möglichkeit im voraus zu filtern, was bzw. welcher (fhem)Typ Importiert werden soll?

Ja das wäre eine Möglichkeit. Vielleicht statt "Load Devices" 4 Buttons: "Load all devices" - "Load lights" - "Load heaters" - "Load sensors" ? Oder einfach direkt ein Selector mit allen unterstützen Types :)

Zitathabe zwei Geräte in Sepia importiert. beide im selben Raum. Wenn ich "den Raum" schalte, wird nur das erste Gerät geschaltet.

Ja das ist momentan noch zu erwarten. Der Einfachheit halber wähle ich bei mehreren Treffern momentan einfach das erste im Array ::) Da in der neuen Version auch die Unterscheidung via Zahlen möglich ist (Lampe 1, Lampe 2, etc.) könnte ich das jetzt eigentlich umbauen ^^. Die Geräte nach Namen zu unterscheiden habe ich übrigens bisher nicht eingebaut weil das sowohl von der Spracherkennung als auch dem Natural-Language-Understanding etwas tricky ist und deutlich mehr Aufwand erfordert. Über die Teach-UI von SEPIA könnte man sich aber selber Befehle eintragen die dann z.B. "Licht im Wohnzimmer" mappen auf "Licht 1 im Wohnzimmer. Licht 3 im Wohnzimmer" o.ä.  8)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 10 November 2019, 23:29:04
Hallo zusammen,

ich habe mal eine neue Testversion gebaut und hier hochgeladen: LINK (https://b07z.net/downloads/SEPIA-Home_v2.4.0_b01_FHEM.zip)
Die Version ist vorkonfiguriert für FHEM auf localhost und hat einen Test-User mit Smart Home Rechten: uid1007, test12345 (der Admin hat das selbe Passwort ;-) ).
Wer etwas umstellen will kann einfach noch mal das Setup ausführen oder in den Docs (https://github.com/SEPIA-Framework/sepia-docs/wiki) gucken (die Smart Home Erklärung ist noch für openHAB aber überschneidet sich teilweise mit FHEM). Wer SEPIA noch nicht kennt: zum Starten wird lediglich JAVA benötigt.

Im Wesentlichen habe ich alle Punkte von Oben umgesetzt und eine ganze Reihe neuer Gerätetypen hinzugefügt. Was mir allerdings beim letzten Test mit meinen "echten" Lampen aufgefallen ist, ist dass "set dim xy" nicht klappt bei den Philips Hue :-[ , da muss also dann doch später noch der "PossibleSets" Check rein.

Diese Woche komme ich wahrscheinlich nicht dazu an SEPIA zu arbeiten, ihr könnt also ganz in Ruhe testen ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: justme1968 am 11 November 2019, 19:33:57
auch von mir noch mal kurz der hinweis: tu dir den gefallen und kodiere nichts fest. keine device typen, keine set kommandos, ...

am besten ist es alles zur laufzeit auszulesen. statt set ? und list kann ich dir jsonlist2 empfehlen. da ist alles einfach zu parsen und vollständig.

das eigentliche problem ist aber die semantik der jeweiligen kommandos und readings automatisch zu erkennen. das geht nämlich nicht. du kannst bestenfalls die häufigsten kommandos wie on und off oder readings wie temperature automatisch verstehen. spätestens bei dummys oder mqqt kommst du hier ohne unterstützung durch den anwender aber nicht weiter. leider sind weder readings noch kommandos in fhem standardisiert. neben den unterschieden bei den devices kann sich jeder anwender bei den konfigurierbaren devices wie z.b. mqtt völlig frei austoben.

schau dir mal an wie das homebridgeMapping attribut funktioniert. damit kann man so ziemlich jede konfiguration abbilden ohne ein einziges byte quelltext ändern zu müssen. ja ich weiss es ist für viele nicht ganz einfach zu verstehen, es wird aber erfolgreich für die drei verbreitetsten sprachassitenen (siri, alexa und google home) verwenden. für siri und alexa waren z.b. in den letzen x monaten keine änderungen am jeweiligen connector nötig um neue devices in fhem zu unterstützen. nur wenn auf api seite neue dinge unterstützt werden sollen muss hier etwas getan werden.

ein weiterer vorteil wäre die kompatibilität zu den schon existierenden assistenten und damit ein einfacheres hin und her wechseln oder ausprobieren.


vielleicht hilft dir genericDeviceType bei der umsetzung des schalten nach geräte art (licht, heizung, ...)


die hue helligkeit geht über pct. nicht dim. so wie bei HomeMatic und damit vermutlich der größten anzahl an geräten.



ich glaube mittel und langfristig machst du dir einiges einfacher wenn du dir mal anschaust was für es für die anderen sprachassitenten schon an erfahrungen gab.

ansonsten weiter viel spass und viel erfolg :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 17 November 2019, 20:33:10
Hi justme :-)

Danke für die zusätzlichen Infos und Hinweise :)

Zitatstatt set ? und list kann ich dir jsonlist2 empfehlen. da ist alles einfach zu parsen und vollständig

Zur Zeit benutze ich "?cmd=jsonlist2 NAME ..." zum Auslesen eines Gerätes und "?cmd=set NAME STATE" zum Setzen eines neuen States.

Zitatschau dir mal an wie das homebridgeMapping attribut funktioniert

Ich habe das mal gegoogled und folgende Infos gefunden: Homebridge_User_Configs (https://wiki.fhem.de/wiki/Homebridge_User_Configs). Aus der Anleitung, die darin verlinkt ist (und der neuere Anleitung die in der alten Anleitung verlinkt ist ^^) ergibt sich folgendes Bild für mich:

Stimm das so ungefähr?
Falls das so passt dann frage ich mich ob es im FHEM Plugin des Homebridge Servers nicht genau das gleiche Problem gibt, was hier gerade besteht nämlich, dass man für jedes Gerät genau definieren muss welche set Befehle zuständig sind für z.B. Helligkeit, Temperatur usw.?
Abgesehen davon wäre HomeKit Support für SEPIA natürlich auch spannend, gibt es irgendwo eine Beschreibung des Protokolls? Läuft das über ein REST Interface oder vielleicht eine Socket Verbindung?

Zitatvielleicht hilft dir genericDeviceType bei der umsetzung des schalten nach geräte art

Diese Infos könnte man definitiv versuchen auszulesen um einmalig den Gerätetypen besser zu bestimmen. Im Grunde ist das das gleiche was der User im SEPIA Control-HUB setzen kann nur heißt das dort "sepia-type" statt "genericDeviceType".

Zitatdu kannst bestenfalls die häufigsten kommandos wie on und off oder readings wie temperature automatisch verstehen [...] leider sind weder readings noch kommandos in fhem standardisiert

Ich glaube der Scope für SEPIA ist zunächst mal die typischen Standardgeräte abzubilden und dazu noch die Möglichkeit im Zweifelsfall einen individuellen Befehl über SEPIAs Teach-UI direkt in der App zu erstellen (d.h. der User kann in der App einen bestimmten 'set' Befehl mit einem Satz verbinden, das geht in 2min, ist dann natürlich aber nicht mehr unabhängig vom HUB, aka FHEM etc.).

Zitatich glaube mittel und langfristig machst du dir einiges einfacher wenn du dir mal anschaust was für es für die anderen sprachassitenten schon an erfahrungen gab

Gibt es da eine Übersicht irgendwo? dkreutz hatte mal eine Python Library verlinkt (https://github.com/domschl/python-fhem) die er für den Mycroft FHEM Skill nutzt. Da konnte ich mir ein bisschen was abgucken weil es von der Schnittstelle passt. Ansonsten habe ich bisher nicht viel gefunden was über die HTTP Befehle läuft.

Zitatansonsten weiter viel spass und viel erfolg :)

Danke :D
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: justme1968 am 17 November 2019, 21:00:49
der name homebridgeMapping ist historisch weil ich es mir damals für homebridge-fhem ausgedacht habe. es ist aber weder homebridge spezifisch, noch wird es nur dort genutzt. alle drei wichtigen sprachassistenten (siri, alexa und google) bzw. deren fhem integration versehen es inzwischen mehr oder weniger gleich. es ist auch nicht an eine bestimme sprache oder einen bestimmten dienst gebunden.

es geht um eine recht allgemeine und (ohne code änderungen) erweiterbare beschreibung eines fhem device um readings und kommandos bestimmten semantischen bedeutungen zuzuordnen.

d.h. du baust in deinem code ein das das konzept Temperature verstanden wird und eventuell noch einen default das es für ein reading mit namen temperature automatisch funktioniert. der anwender kann dann aber völlig frei spezifizieren das bei seinem gerade relevanten gerät das reading anders heisst. z.b. Temperature oder temperatuer2 oder innen oder was auch immer.

das gleiche gilt für die kommandos die ausgeführt werden sollen. ein einfaches set <name> <value> reicht bald nicht mehr. sondern es ist z.b. ein set <name> <cmd> <value> nötig. oder der wertebereich auf beiden seiten ist verschieden und in beiden richtungen aufeinander abgebildet werden. auch das automatische erkennen des richtigen kommandos (ist es jetzt dim oder pct oder bri oder was ganz anderes) ist sogar bei der einfachen helligkeit nicht immer möglich weil es devices gibt die zwei oder drei davon können aber mit leicht unterschiedlicher bedeutung. von komplizierteren dingen wie der farbe von lampen und unterschiedlichen farbmodellen ganz zu schweigen.

wie das ganze prinzipiell aufgebaut ist findest du hier: https://github.com/justme-1968/homebridge-fhem


die drei implementierungen für siri, alexa und google sind zwar intern ähnlich weil sie nacheinander entstanden sind und so voneinander abgeschaut haben. sie sind aber prinzipiell komplett unabhängig und bilden nicht aufeinander ab. was bei homekit auch nicht möglich wäre. du kannst weder eigene sprache dort hinein füttern (im prinzip jedenfalls) und auch nicht an erkannte sätze kommen.

auch die feste zuordnung eines satzes zu einem set reicht spätestens dann nicht mehr wenn verschiedene geräte in verschiednen räumen jeweils mit dem gleichen satz gesteuert werden sollen.

die einzige gemeinsamkeit ist das sie auf die gleiche art konfigurierbar sind und man so recht einfach von einem assistenten zum andern wechseln oder mehr als einen einsetzen kann ohne viel an der konfogiration zu machen.

mit dem alexaMapping (leider wieder ein name der assitenten spezifisch ist) habe ich auch den umgekehrten weg angefangen. d.h. der anwender kann in fhem allgemein beschreiben welche gesprochene anfrage was bewirken soll.


ZitatDiese Infos könnte man definitiv versuchen auszulesen um einmalig den Gerätetypen besser zu bestimmen. Im Grunde ist das das gleiche was der User im SEPIA Control-HUB setzen kann nur heißt das dort "sepia-type" statt "genericDeviceType".
der unterschied wäre das alles in fhem konfiguriert wird und für alle assitenten gilt.


ZitatIch glaube der Scope für SEPIA ist zunächst mal die typischen Standardgeräte abzubilden
eben weil ich glaube das genau das der falsche ansatz wollte ich hier etwas dazu schreiben. wenn du am anfang mit fest codierten geräten anfängst kommst du entweder in teufels küche wenn du nach und nach alles mögliche einbauen musst oder es bleibt bei einer hand voll erkannter devices und dein modul wird nur von wenigen eingesetzt werden. die fhem welt ist sehr divers. wenn du gleich am anfang darauf vorbereitet bist machst du es dir wirklich einfacher.


du findest alexa-fhem und homebridge-fhem auf gitub und kannst dir anschauen wie die verbindung zu fhem aufgebaut wird und wie die events ausgewertet werden.

aber mir ging es garnicht so sehr um konkreten code sonder mehr um das konzept nichts fest in den code einzubauen. das funktioniert sehr schnell nicht mehr. und es wäre schade noch ein fhem projekt/frontend zu haben das nach kurzer zeit nicht mehr weiter entwickelt wird.

wenn das für deinen fall nicht weiter relevant ist: vergiss einfach was ich gesagt habe.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 18 November 2019, 13:29:56
Hi Andre,

ich versuche immer noch zu verstehen, wie Homebridge bzw. das homebridgeMapping und SEPIA zusammenkommen können. Vielleicht kannst du mir bei folgenden Fragen noch mal etwas nachhelfen :-)

Zitates geht um eine recht allgemeine und (ohne code änderungen) erweiterbare beschreibung eines fhem device um readings und kommandos bestimmten semantischen bedeutungen zuzuordnen.
[...]
ein einfaches set <name> <value> reicht bald nicht mehr. sondern es ist z.b. ein set <name> <cmd> <value> nötig. oder der wertebereich auf beiden seiten ist verschieden und in beiden richtungen aufeinander abgebildet werden. auch das automatische erkennen des richtigen kommandos (ist es jetzt dim oder pct oder bri oder was ganz anderes) ist sogar bei der einfachen helligkeit nicht immer möglich weil es devices gibt die zwei oder drei davon können aber mit leicht unterschiedlicher bedeutung. von komplizierteren dingen wie der farbe von lampen und unterschiedlichen farbmodellen ganz zu schweigen.

Das beschreibt ja ziemlich gut das Ausgangsproblemchen, aber ich fasse noch mal kurz zusammen. Das NLU Modul von SEPIA konvertiert Sätze in abstrakte "Absichten" (intent) des Users, z.B. "Lampe 1 im Wohnzimmer auf 70% setzen bitte" -> Service:smart_home, Device:light, Index:1, Room:livingroom, Action:set, Value:70%. Damit der Smart Home Service in SEPIA diesen "intent" ausführen kann greift er auf ein Smart Home Modul zu, das auf einem generalisierten Interface basiert (getState, setState, etc.). Für FHEM muss dieses Modul z.B. nun verstehen wie es "action:set, value:70%" für das Gerät "light,1,livingroom" ausführt und scheitert dabei zunächst, denn es weiß nicht welches der korrekte "set"-Befehl ist (dim, pct, bri, ...?).
Dieses Problem, unter dem alle Sprachassistenten und generalisierte UIs (z.B. HomeKit App) leiden, versucht nun das homebridgeMapping anzugreifen, indem es die "set"-Befehle weiter generalisiert bzw. remapped auf die folgenden Optionen, die für jedes Gerät in einer Konfigurationsdatei zugeordnet werden:

Hab ich das soweit richtig verstanden?
Falls ja wäre die nächste Frage: Wie kann ich das neue Mapping über das HTTP Interface von FHEM ansprechen?

Zitatauch die feste zuordnung eines satzes zu einem set reicht spätestens dann nicht mehr wenn verschiedene geräte in verschiednen räumen jeweils mit dem gleichen satz gesteuert werden sollen

In SEPIA gibt es hier 2 Szenarios.

Szenario 1: Der User hat einen SEPIA Server und nutzt das Handy als SEPIA Client. Da das Handy üblicherweise erstmal nicht weiß in welchem Raum es sich befindet (wobei ich nicht ausschließe dass man dieses Feature einbauen könnte über zB BLE Beacons o.ä.) würde der User keinen Befehl definieren, der nicht eindeutig ist. Z.B. der Befehl "Licht" würde immer mit der Frage zurück kommen "welches Licht?". Einen eigenen Satz zu definieren ist hier nur sinnvoll wenn man a) mit "Licht" auch wirklich ein bestimmtes meint oder b) man ein spezielles Gerät hat mit individuellen States wie z.B. "Reinigungsroboter auf Modus super-sauber" was vom generalisierten Interface nicht abgedeckt wird.

Szenario 2: Der User hat mehrere SEPIA "smart displays" (Server + Client in einem Kasten). In diesem Fall kann der Befehl "Licht" abhängig vom Raum sein. Der SEPIA Service kann den Raum anhand der device ID des Gerätes finden.

Zitateben weil ich glaube das genau das der falsche ansatz wollte ich hier etwas dazu schreiben. wenn du am anfang mit fest codierten geräten anfängst kommst du entweder in teufels küche wenn du nach und nach alles mögliche einbauen musst oder es bleibt bei einer hand voll erkannter devices und dein modul wird nur von wenigen eingesetzt werden.

Ich bin da definitiv deiner Meinung und wenn es bereits ein Hilfsmittel gibt, dass die oben beschriebene Generalisierung (das Mapping) vornimmt, dann gucke ich mir das gerne an :) Allgemein vielleicht noch mal der Hinweis, dass SEPIA in der Komplexität der Befehle natürlich eh limitiert ist, da das Erkennen natürlicher Sprache schon kompliziert genug ist :-[ dennoch wäre es natürlich klasse wenn der User auch nicht standardisierte Aktionen ausführen kann indem er selber einen Satz definiert (in der SEPIA App) und (ggf.) einem homebridgeMapping Befehl zuordnet, der dann in FHEM angepasst werden kann falls sich das Gerät ändert (vorausgesetzt ich habe das jetzt richtig verstanden)  8).
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 21 November 2019, 13:23:35
Hallo,
hier eine etwas "OFF-TOPIC" frage bzgl. der FHEM Integration von SEPIA.

Ist es möglich, den gesamten Sprachkontent der Spracheingabe an FHEM weiterzuleiten?

Hintergrund ist, dass ich im Augenblick TASKER (für Testzwecke) in Verbindung mit Talk2Fhem nutze, dies funktioniert so gut, dass ich nun auf der Suche nach Möglichkeiten für fest installierte Peripheriegeräten mit Hotword-Erkennung bin (ALEX bzw. Google kommen nicht in Frage).
Hier wäre SEPIA ggf. eine Alternative zu Snips.ai.

Lg,
Stefan


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 21 November 2019, 14:36:06
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?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 21 November 2019, 16:02:47
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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 24 November 2019, 11:30:54
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 (https://github.com/SEPIA-Framework/sepia-docs/issues/9) 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 :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 07 Dezember 2019, 13:47:40
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!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: WarLLe am 07 Dezember 2019, 16:53:03
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.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 07 Dezember 2019, 23:41:58
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: WarLLe am 08 Dezember 2019, 00:37:37
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 Dezember 2019, 02:09:40
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: WarLLe am 08 Dezember 2019, 09:18:29
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 Dezember 2019, 11:47:24
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\...)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: WarLLe am 08 Dezember 2019, 12:51:49
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 Dezember 2019, 14:16:11
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 (https://twitter.com/sepia_fw/status/1060147639499608065),
Video 2: Hotword und Client in einem Gerät (https://twitter.com/sepia_fw/status/1144255285638455298),
Video 3: Ohne Stimme via Microbit ^^ (https://twitter.com/sepia_fw/status/1111263680640008192)

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 (https://medium.com/sepia-framework/control-your-windows-system-remotely-via-voice-a1cc40b794) 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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 12 Dezember 2019, 15:19:21
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
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Dezember 2019, 11:01:27
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 (https://b07z.net/downloads/SEPIA-Home_v2.4.0_b04.zip)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 13 Dezember 2019, 14:12:43

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

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 (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?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Dezember 2019, 21:31:17
ZitatDamit ist man wohl an dem Punkt den justme schon beschrieben/beschritten hat:  es gibt keinen allgemein gültigen Syntax für die unterschiedlichsten Systeme [...] also vielleicht doch eine anbindung an https://github.com/justme-1968/homebridge-fhem ...?

Ja, soweit ich das verstanden/in Erinnerung habe nutzt Homebridge die HomeKit Tags also für Release v1 könnte man da noch mal ansetzen ... oder den User einfach auswählen lassen im SEPIA Control HUB ^_^

ZitatDanke - Noch wesentliche Änderungen nach Dienstag eingeflossen?

Nichts kritisches, "Childs room", "Other" und "Not assigned" als neue Räume, besseres Timing für auto-reload im Control HUB und ein MQTT Client Prototyp, der aber noch nicht zugänglich ist für User (außer man würde selbst das SDK updaten  ;D)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 27 Dezember 2019, 15:00:06
Frohe Weihnachten wünsche ich euch :)

Es gibt eine neue Testversion für die FHEM Integration in SEPIA: DOWNLOAD (https://b07z.net/downloads/SEPIA-Home_v2.4.0_b08.zip)
Diese Version ist der Release-Kandidat für v2.4.0 und wird wahrscheinlich so veröffentlicht, falls keine groben Fehler mehr auftreten ;D

Neues in dieser Version (unter anderem):
Es wäre super wenn Jemand von euch, der ein Thermostat steuert über FHEM das mal ausprobieren könnte 8).
Morgen würde ich die Version dann gerne veröffentlichen.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 27 Dezember 2019, 20:09:11
Frohe Weihnachten gehabt zu haben..

Aufpassen: Wenn ihr sepia erneut an fhem registriert (um die neuen attribute zu erhalten)
könnte es sein, dass einige werte aus dem global userattr nicht übernommen, also quasi gelöscht werden!!

Alle Werte, die in der Reihenfolge nach dem letzten sepia-* Eintrag stehen sind weg.

Bei einer neuen Registrierung scheinen die sepia werte nur hinten angehängt zu werden - in dem Fall kein Problem also.


Das schalten meiner Thermostate ging leider auch nicht:

1. Habe meine eigene "desiredTemperature" syntax in der Liste oben vergessen  :o
2. zugelassene Werte (bei MAX) sind nur 10.0,10.5, etc.
3. Sollte das schalten ohne jegliches anlernen funktionieren? Sprich raumzuordnung und Typ Heater einstellen und es funktioniert? < Das geht nämlich leider auch nicht.  ohne teaching, raum=>device gehts bei mir leider nicht.
4. sepia-set-cmds scheine ich nicht verstanden zu haben, bekomme es leider auch damit nicht ans rennen.

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 28 Dezember 2019, 00:22:56
Hi Markus,

danke fürs Testen!

ZitatAlle Werte, die in der Reihenfolge nach dem letzten sepia-* Eintrag stehen sind weg.

Oh ha, da hab ich wohl die RegExp zu gierig gemacht :-[ Ich prüfe das noch mal!

ZitatSollte das schalten ohne jegliches anlernen funktionieren? Sprich raumzuordnung und Typ Heater einstellen und es funktioniert? < Das geht nämlich leider auch nicht.  ohne teaching, raum=>device gehts bei mir leider nicht.

Raumzuordnung und Typ Heater einstellen sollte eigentlich reichen, ja. Eventuell noch unter "state type" "Number (Temperature °C)" wählen. Mit "teaching" meinst du einen eigenen Befehl über die Teach-UI in der App? Was genau musstest du da einstellen? Gibt es eine Fehlermeldung?

Zitatsepia-set-cmds scheine ich nicht verstanden zu haben, bekomme es leider auch damit nicht ans rennen

Die Idee hier ist dass man die set Kommandos für an, aus und set [number] selber definieren kann, z.B.:
Eine Lampe hat typischerweise die Befehle "set on" (Lampe einschalten), "set off" (Lampe aus) und "set pct 68" (Lampe auf 68%), daraus resultiert das Object im Screenshot
{"enable": "on", "disable": "off", "number": "pct <val>"}
"<val>" steht dabei für die Nummer, die der User gesagt hat.
Wenn deine Heizung den Befehl "set desiredTemperature 10.5" versteht sollte sowas funktionieren:
{"enable": "on", "disable": "off", "number": "desiredTemperature <val>"}
Angenommen dass auch Thermostate die Befehle "on" und "off" verstehen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 28 Dezember 2019, 12:34:05
ZitatOh ha, da hab ich wohl die RegExp zu gierig gemacht :-[ Ich prüfe das noch mal!
die werte werden (später) alphabetisch sortiert, nachdem sie unsortiert angefügt wurden.

ZitatRaumzuordnung und Typ Heater einstellen sollte eigentlich reichen, ja. Eventuell noch unter "state type" "Number (Temperature °C)" wählen.
<<  so funktionierts dann doch.

{"enable": "on", "disable": "off", "number": "desiredTemperature <val>"}
gut - so hab ich das auch verstanden, hatte nur leider <value> stat <val> benutzt

dennoch
{"enable": "desiredTemperature comfort", "disable": "desiredTemperature eco", "number": "desiredTemperature <val>"}  funktioniert nur bei einer temperatur Angabe

"stelle die Heizung im Raum auf 20 grad"  funktioniert
"stelle die Heizung im Raum aus"  wird nicht übersetzt und bringt
Zitat'setDeviceState': Unknown argument off


Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 28 Dezember 2019, 13:16:35
Zitatdie werte werden (später) alphabetisch sortiert, nachdem sie unsortiert angefügt wurden.

eigentlich sollte der reguläre Ausdruck alles entfernen was "sepia-..." lautet, allerdings hab ich den falsch definiert, so dass er alles vom ersten "sepia-" bis zum Ende entfernt hat :o. Habs jetzt gefixt so dass er immer "sepia-" bis zur ersten Leerstelle entfernt :).

Zitat<<  so funktionierts dann doch.

:) also lag es tatsächlich am "state type"?

Zitat{"enable": "desiredTemperature comfort", "disable": "desiredTemperature eco", "number": "desiredTemperature <val>"}

Das sieht eigentlich genau richtig aus ??? Ich prüfe das mal nach.

Kann ich im FHEM Demo eigentlich irgendwie ein Thermostat dummy erstellen?

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 28 Dezember 2019, 15:13:29
ZitatDas sieht eigentlich genau richtig aus ??? Ich prüfe das mal nach.

Ok, hab den Fehler gefunden, ein dummer Bug der dafür sorgte dass es nur bei "number" und "enable" klappte ::)
Hier ist eine neu assist-server jar-Datei, die auch den Fix für die FHEM Attribute enthält: DOWNLOAD (https://b07z.net/downloads/sepia-assist-v2.4.0.jar)
Einfach die alte im Ordner '\sepia-assist-server' überschreiben, Server neu starte und fertig.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 28 Dezember 2019, 17:10:31
Zitat:) also lag es tatsächlich am "state type"?
sieht ganz so aus.

ZitatKann ich im FHEM Demo eigentlich irgendwie ein Thermostat dummy erstellen?
der dummy kann und wird alles sein, was du willst.
define HzDummy dummy steht im Flur, da dort bei mir keine Heizung ist, passend zum testen.
der State den er annimmt ist 1:1 das was aus sepia kommt.  z.B.
"state   desiredTemperature auto 23"

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 31 Dezember 2019, 02:51:27
Die neu SEPIA Version v2.4.0 mit FHEM Support ist jetzt offiziell: LINK (https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases) ;D
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 04 Januar 2020, 23:54:33
Hallo Florian,

ich bin begeistert, wie schnell ich Sepia zum Laufen bekommen habe.


Mir ist ein kleiner Bug in v2.4.0 aufgefallen:

Wenn das Attribut "webname" des FHEMWEB Devices auf das ich mit Sepia zugreifen will, existiert und nicht fhem lautet, dann kann Sepia nicht zugreifen.
smarthome_hub_host in den Einstellungen ist natürlich entsprechend angepasst.
Ich nutze einen unterschiedlichen webname weil ich 2 FHEM Instanzen über einen Apache laufen lasse.

Grüße
Klaus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 05 Januar 2020, 15:39:05
Hi Klaus,

danke fürs Testen :D

Ich sehe gerade "webname" ist ein Attribut von "WEB" und bestimmt den HTTP path "http://[IP]:[PORT]/[webname] , habe ich das richtig verstanden?

Ich teste das später noch mal aber rein theoretisch ist der "webname" lediglich Teil der HUB URL und sonst nirgendwo hardcoded :-[
Deine Einträge in den Settings sehen so aus (z.B.)?

smarthome_hub_host=http://localhost:8083/[webname]
smarthome_hub_name=fhem


Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: ekur am 06 Januar 2020, 17:49:02
Hallo Florian,

erstmal meinen Dank dass Du dieses Projekt hier aufsetzt, eine Spracherkennung ohne eine fremde Cloud ist genau das richtige. Testen würde ich auch gerne, aber ich habe schon eine Frage zur Installation.

Ich habe nirgends gefunden welche Basis Du für die Sache unter Linux benötigt (oder habe es übersehen oder auch vor Blindheit nicht gefunden), ich wollte das ganze in einer VM testen, hier fange ich aber immer mit einer MInimalinstallation an und habe dort Java (openjdk-11-jre-headless) und anschliessend Elasticsearch installiert.
Bei Deinem Installationsskript bleibt er jetzt im Schritt 4 (Elasticsearch starten hängen mit
Waiting for Elasticsearch on port 20724[/s]
OK. Port in Elasticsearch angepasst --> Ready for Action
Nächster Fehler:
Enter a number plz (0 to exit): 1

Setup for 'custom' server (Xtensions/assist.properties)
2020-01-06 18:49:28 LOG - loading settings from Xtensions/assist.custom.properties... done.

Preparing Elasticsearch:
2020-01-06 18:49:58 ERROR - deleteAny - ElasticSearch - error in '_all': {"code":503,"HTTP_REST_SUCCESS":false}

Eine Idee?

Ist das der Standartport von Elastic oder muss hier eine spezielle Konfiguration erfolgen?
Was benötigt Dein Framework noch an Voraussetzungen von Softwareseite?

Nochmal ein Edit: Ich habe Elasticsearch deinstalliert, ich hatte vorher nicht gesehen dass es mit im Verzeichnis liegt und von dem Script gestartet wird. Nach Deinstallation habe ich versucht die Aufrufe direkt zu machen um Fehler zu sehen und dabei festgestellt dass er mit Java Fehler im "run.sh" Script von Elasticsearch abschliesst, Elasticsearch nicht startet und dann im "wait.sh" Scrip hängen bleibt. Meldungen kommen eine ganze Menge, unter anderem Zugriffsberechtigungsprobleme auf Java. Das muss ich mir noch genauer ansehen, wollte den Beitrag aber editieren um niemand hier umsonst antworten zu lassen.

Viele Grüße

Elmar
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Januar 2020, 19:53:21
Hi Elmar,

die Anforderungen sind eigentlich minimal. Die Installation von Java reicht in den meisten Fällen aus, ich empfehle: 'openjdk-11-jdk-headless' (man beachte: JDK nicht JRE). Ich teste auch gerade eine Version, bei der Java direkt im SEPIA Verzeichnis abgelegt wird um Versionskonflikte mit anderen Installationen zu vermeiden. Falls du das gerne ausprobieren möchtest sag bescheid ;-)

Ansonsten hilft vielleicht noch das hier: https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/Dockerfile
Im Dockerfile wird eine Installation auf Basis von Debian Stretch-Slim durchgeführt allerdings mit allen Tools die nötig sind um SEPIA aus GitHub heraus selber zu bauen also vermutlich viel zu viel Overhead im Vergleich zum einfachen Download der Release Version.

ZitatMeldungen kommen eine ganze Menge, unter anderem Zugriffsberechtigungsprobleme auf Java

Das Problem scheint mir nicht von SEPIA zu kommen. Welche Linux Version nutzt du?

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: JensS am 06 Januar 2020, 21:08:08
ZitatIch teste auch gerade eine Version, bei der Java direkt im SEPIA Verzeichnis abgelegt wird um Versionskonflikte mit anderen Installationen zu vermeiden. Falls du das gerne ausprobieren möchtest sag bescheid ;-)
.. ja, gern.  :)

Gruß Jens
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: ekur am 06 Januar 2020, 21:55:34
Hallo Florian,


Zwischenstand:
Ich habe jetzt noch eine neu VM aufgesetzt, Ubuntu Server 18.04.03 mit einem normalen Setup, danach folgendes ausgeführt

1 sudo apt install openjdk-11-jdk-headless
2 wget https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases/download/v2.4.0a/SEPIA-Home.zip
3 unzip SEPIA-Home.zip -d ~/SEPIA
4 Ins Verzeichnis wechseln

Danach hat er beim ersten Start von setup.sh mit sudo (Elasticsearch nicht gefunden für 5 Minuten) und ohne sudo (Rechteprobleme) rumgezickt, beim nächsten Start mit sudo hat er Elasticsearch sofort gefunden und die Installation ist dann auch durch gelaufen.

Vielleicht braucht Elasticsearch beim ersten Start länger?

Gestartet hat er jetzt auch, Web-Client ist erreichbar. Ich werde mal weiter testen.

Viele Grüße

Elmar Kurth
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Januar 2020, 22:07:26
Zitat.. ja, gern.  :)

DOWNLOAD (https://b07z.net/downloads/sepia-local-java-support.zip) [EDIT: Link gefixt]

Einfach die Zip-Datei über den aktuellen SEPIA Release entpacken, so dass die entsprechenden Scripte überschrieben werden und der neue 'java' Ordner in '[SEPIA]/java' landet.
Die Idee ist wie folgt:
Das wars im Grunde schon :-)

ZitatDanach hat er beim ersten Start von setup.sh mit sudo (Elasticsearch nicht gefunden für 5 Minuten) und ohne sudo (Rechteprobleme) rumgezickt, beim nächsten Start mit sudo hat er Elasticsearch sofort gefunden und die Installation ist dann auch durch gelaufen.

Vielleicht braucht Elasticsearch beim ersten Start länger?

Gestartet hat er jetzt auch, Web-Client ist erreichbar. Ich werde mal weiter testen.

Erstmal gut, dass es geklappt hat :-) Normalerweise habe ich mit Elasticsearch keine Probleme, selbst auf einem alten Raspberry Pi3 startet das Ding in wenigen Sekunden (~30s vielleicht). Komisch irgendwie. Ich gebe zu, die meiste Zeit teste ich mit frischen Raspbian und Debian (Slim) Installationen, wo ich das Setup nie mit sudo starten musste ::)
Ich werde mir mal bei Gelegenheit eine Ubuntu Version laden und versuchen den Fehler zu reproduzieren.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 06 Januar 2020, 23:52:15
Zitat von: sepia am 05 Januar 2020, 15:39:05

Ich sehe gerade "webname" ist ein Attribut von "WEB" und bestimmt den HTTP path "http://[IP]:[PORT]/[webname] , habe ich das richtig verstanden?

genau

Ich habe das Problem eingrenzen können. Es liegt nicht am webname.
Die Konfiguration beider FHEMWEB unterschied sich in einem kleinen Detail.

Sobald das Attribut csrfToken auf "none" gesetzt wird funktioniert das GET DEVICES in SEPIA nicht mehr.
{
  "result": "fail",
  "error": "500 internal error",
  "info": "2020-01-06 22:54:04 WARNING - URLBuilder.java / getString() - Failed to build URL: [Ljava.lang.String;@12d844d"
}

Ich weiß nicht, ob das ein Sicherheitsfeature oder ein Bug ist  8)

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: ekur am 07 Januar 2020, 19:36:11
Hallo,

leider doch noch Probleme.

Bei einem Start des scriptes mit "sudo", also Adminrechten bleibt das Script hier hängen:

Waiting for Elasticsearch on port 20724 ...
...............................................................................


Bei einem Start ohne Adminrechte gibt es folgenden Ablauf

Running Elasticsearch 5.3.3

OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Waiting for Elasticsearch on port 20724 ...
.2020-01-07 19:20:50,058 main ERROR RollingFileManager (/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster.log) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster.log (Keine Berechtigung) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster.log (Keine Berechtigung)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:474)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:445)
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,069 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingFileAppender, element RollingFile. java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@15043a2f] unable to create manager for [/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@4a83a74a[pattern=/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster-%d{yyyy-MM-dd}.log, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)]), strategy=DefaultRolloverStrategy(min=1, max=7), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n]]
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,074 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile. java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,084 main ERROR RollingFileManager (/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_deprecation.log) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_deprecation.log (Keine Berechtigung) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_deprecation.log (Keine Berechtigung)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:474)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:445)
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,089 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingFileAppender, element RollingFile. java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@15043a2f] unable to create manager for [/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_deprecation.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@645aa696[pattern=/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_deprecation-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[SizeBasedTriggeringPolicy(size=1073741824)]), strategy=DefaultRolloverStrategy(min=1, max=4), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n]]
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,095 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile. java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,103 main ERROR RollingFileManager (/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_search_slowlog.log) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_search_slowlog.log (Keine Berechtigung) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_search_slowlog.log (Keine Berechtigung)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:474)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:445)
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,110 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingFileAppender, element RollingFile. java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@15043a2f] unable to create manager for [/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_search_slowlog.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@1a75e76a[pattern=/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_search_slowlog-%d{yyyy-MM-dd}.log, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)]), strategy=DefaultRolloverStrategy(min=1, max=7), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c] %marker%.-10000m%n]]
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,112 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile. java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,118 main ERROR RollingFileManager (/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_indexing_slowlog.log) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_indexing_slowlog.log (Keine Berechtigung) java.io.FileNotFoundException: /home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_indexing_slowlog.log (Keine Berechtigung)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:158)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:474)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:445)
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,124 main ERROR Unable to inject fields into builder class for plugin type class org.apache.logging.log4j.core.appender.RollingFileAppender, element RollingFile. java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@15043a2f] unable to create manager for [/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_indexing_slowlog.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@353352b6[pattern=/home/boss/SEPIA/elasticsearch/bin/../../es-logs/sepiaFW-es-cluster_index_indexing_slowlog-%d{yyyy-MM-dd}.log, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)]), strategy=DefaultRolloverStrategy(min=1, max=7), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c] %marker%.-10000m%n]]
at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:128)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:135)
at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:58)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,126 main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile. java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:224)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:942)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:882)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:874)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:498)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:227)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:239)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:530)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:258)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:117)
at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:84)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:58)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122)
at org.elasticsearch.cli.Command.main(Command.java:88)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84)

2020-01-07 19:20:50,127 main ERROR Null object returned for RollingFile in Appenders.
2020-01-07 19:20:50,127 main ERROR Null object returned for RollingFile in Appenders.
2020-01-07 19:20:50,128 main ERROR Null object returned for RollingFile in Appenders.
2020-01-07 19:20:50,129 main ERROR Null object returned for RollingFile in Appenders.
2020-01-07 19:20:50,129 main ERROR Unable to locate appender "rolling" for logger config "root"
2020-01-07 19:20:50,129 main ERROR Unable to locate appender "index_indexing_slowlog_rolling" for logger config "index.indexing.slowlog.index"
2020-01-07 19:20:50,130 main ERROR Unable to locate appender "index_search_slowlog_rolling" for logger config "index.search.slowlog"
2020-01-07 19:20:50,130 main ERROR Unable to locate appender "deprecation_rolling" for logger config "org.elasticsearch.deprecation"
..
Elasticsearch is ready for action.

Starting SEPIA servers ...

Running SEPIA Assist (sepia-assist-v2.4.0.jar)
Running SEPIA WebSocket Chat (sepia-chat-v1.2.2.jar)
Running SEPIA Teach (sepia-teach-v2.1.0.jar)

---- Wait a second (or 5) ----


---- Testing cluster ----


-----Assist API-----

SUCCESS
OK

-----Teach API-----

SUCCESS
OK

-----Chat API - WebSocket Server-----

SUCCESS
OK

-----Database: Elasticsearch-----

{
  "cluster_name" : "sepiaFW-es-cluster",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 56,
  "active_shards" : 56,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 55,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.45045045045045
}

DONE. Please check output for errors!

If all looks good you should be able to reach your SEPIA server via: ubun1804.local
Example: ubun1804.local:20721/tools/index.html


Aber ich kann keine Werte in den cores eintragen, es kommt die Fehlermeldung
{
  "msg": "Request was not sent! Plz check connection to server.",
  "info": {
    "readyState": 0,
    "status": 0,
    "statusText": "error"
  }
}


Die Spracheingabe kann ich aber testen, der Assist antwortet auch.

Ich bin nicht sicher woran es liegt.

Viele Grüße

Elmar
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 07 Januar 2020, 21:25:48
ZitatSobald das Attribut csrfToken auf "none" gesetzt wird funktioniert das GET DEVICES in SEPIA nicht mehr.

Ah! Ich habe befürchtet, dass das irgendwann passiert  :o
Die Fehlermeldung deutet auf eine Null-Pointer Exception hin :-[ , ich gucke mir das mal an ;)

Zitatleider doch noch Probleme.

Bei einem Start des scriptes mit "sudo", also Adminrechten bleibt das Script hier hängen ...

Ich hatte heute Gelegenheit das mal zu testen auf einem Ubuntu 18.04 LTS 64bit System (Hyper-V in Windows).
Zunächst als Admin war es kein Problem, auch keine Verzögerungen bei der Elasticsearch ???
Dann habe ich einen neuen User erstellt ohne Admin Rechte und habe zunächst den Fehler gemacht SEPIA nicht im neuen Home Verzeichnis sauber zu erstellen. Beim Versuch es zu starten kamen dann lauter Fehler ähnlich zu denen, die du beschrieben hast (Zugriff verweigert etc.).
Nachdem ich SEPIA im neuen Home Verzeichnis komplett neu erstellt habe ging es dann alles ohne 'sudo'.
Hast du vielleicht Probleme durch Zugriffsrechte oder das Verzeichnis am falschen Ort? Versuch es mal mit einer ganz frischen Version im Verzeichnis '~/SEPIA/'.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: JensS am 07 Januar 2020, 22:18:13
Auch mit Java-Download habe ich elasticsearch auf zwei buster (rpi3+, x64) nicht zum laufen bekommen.

Morgen schmeisse ich nochmals alles runter...
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 07 Januar 2020, 22:59:16
Zitat von: JensS am 07 Januar 2020, 22:18:13
Auch mit Java-Download habe ich elasticsearch auf zwei buster (rpi3+, x64) nicht zum laufen bekommen.

Morgen schmeisse ich nochmals alles runter...

x64 bedeutet das du kein Raspbian drauf hast, oder?
Vielleicht ist bei 64bit der Speicher zu gering.
Ich hatte Probleme, sobald ein paar Dienste mehr auf dem Pi3 liefen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 07 Januar 2020, 23:00:26
Ein paar Fragen sind wieder aufgelaufen  ;)

Zugriff über Internet:

Assistent:



Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 Januar 2020, 00:53:26
ZitatIch habe das Problem eingrenzen können. Es liegt nicht am webname.
Die Konfiguration beider FHEMWEB unterschied sich in einem kleinen Detail.

Sobald das Attribut csrfToken auf "none" gesetzt wird funktioniert das GET DEVICES in SEPIA nicht mehr.

Könntest du mal diesen Fix testen: sepia-assist-v2.4.0.jar (https://b07z.net/downloads/sepia-assist-v2.4.0.jar) (einfach die Datei im Ordner 'SEPIA/sepia-assist-server' überschreiben)? ... bei mir hat es scheinbar geklappt :) .

ZitatAuch mit Java-Download habe ich elasticsearch auf zwei buster (rpi3+, x64) nicht zum laufen bekommen.

Morgen schmeisse ich nochmals alles runter...

So, habe gerade noch mal eine ganz frische Raspbian Buster Lite Installation getestet. Hier ist alles was nötig war:
Dann:

sudo apt-get update
sudo apt-get install openjdk-11-jdk-headless
mkdir -p ~/SEPIA/installer
cd ~/SEPIA/installer
wget https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases/latest/download/SEPIA-Home.zip
unzip SEPIA-Home.zip -d ~/SEPIA
cd ~/SEPIA
#dann: sh setup.sh -> step: 4 -> step: 1 -> DONE -> ./run-sepia.sh


Das wars :) Danach kann ich schon den SEPIA Control HUB öffnen, einen neuen User erstellen und damit dann die App testen.

ZitatEin paar Fragen sind wieder aufgelaufen  ;)
[...]gibt es schon eine Reverse Proxy Konfiguration für den Apache Webserver?
[...]Falls nicht, welche Ports müssen umgeleitet werden, um den Client auch außerhalb des Heimnetzes zu nutzen?
In dem NGINX Beispiel wird ja alles umgeleitet, reicht nicht der Port 20721?

Eine Beispiel-Konfiguration für den Apache Webserver gibt es noch nicht (Commits willkommen ^^), aber es gibt einen integrierten SEPIA reverse proxy (~/SEPIA/sepia-reverse-proxy/) der prinzipiell schon richtig konfiguriert ist und alles auf Port 20726 umleitet. Ich benutze den selber allerdings auch nicht im Dauereinsatz.
Port 20721 reicht leider nicht, da der SEPIA Client (die App) auf alle 3 Server zugreift: 20721 (Assist), 20722 (Teach), 20723 (Chat), deshalb erstellt der Proxy 3 Pfade:

/sepia/assist -> http://localhost:20721
/sepia/teach -> http://localhost:20722
/sepia/chat -> http://localhost:20723


... und startet sich selber auf Port 20726. Das ist nicht zwingend so notwendig, hat aber den Vorteil dass der Client alle Pfade automatisch richtig setzt wenn er eine URL als host bekommt, die auf '.../sepia' oder '...:20726/sepia' endet (bei '...:20721' setzt er ebenfalls automatisch die 20722 und 20723. Ich gebe zu das ist nicht super transparent  ::) ).

ZitatWerden die Loginversuche irgendwo gelogged? Dann könnte ich ein Fail2Ban Ruleset erstellen.

Zur Zeit nicht (ich sollte das mal als Option hinzufügen), zumindest nicht für alle Accounts. Es gibt aber eine Einstellung in den "Core Settings" namens 'protected_accounts_list', die genutzt werden kann um bestimmte Accounts speziell zu schützen. Das wird hier etwas genauer beschrieben (https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server#prelude-protecting-against-brute-force-login-attempts-and-ddos-attacks). Schlägt der Login-Versuch dann mehrmals fehl wird der Account temporär geblockt und das auch in dem Log des Assist-Servers vermerkt (~/SEPIA/sepia-assist-server/log.out).

ZitatAssistent:
Mit der Zuordnung der Geräte habe ich noch Probleme. Beispiel:
Im Wohnzimmer habe ich 2 Lampen (sepia Namen sind Fenster und Tisch).[...]
Kann ich diese auch getrennt steuern?

Ja das geht, ich habe das auch ganz kurz im brand neuen Blog Artikel über SEPIA + FHEM/openHAB (https://medium.com/sepia-framework/talk-to-your-smart-home-via-sepia-open-assistant-a29b59777f3) ;D erwähnt (in den Beispielen unten). Man benutzt dazu einen Trick, denn leider ist es überraschend schwer dem NLU Modul beizubringen beliebige Namen zu verstehen, z.B. dein Satz "Wie ist der status von Fenster im Wohnzimmer?" würde üblicherweise auf ein Gerät des Typs Fenster abgebildet und nicht auf eine Lampe am Fenster, ... ABER: Man kann die Geräte nummerieren! Wenn du als (SEPIA) Namen folgendes wählst: 'Fenster (1)' und 'Tisch (2)' kannst du sagen "Lampe 1 im Wohnzimmer auf ..." und "Lampe 2 im Wohnzimmer auf ..." (die Nummern können dabei in Klammern sein oder nicht, das hat lediglich Auswirkungen auf die Antwort).
DANACH könnte man theoretisch noch hingehen und sich über das Teach Interface (TeachUI) einen neuen Satz definieren, entweder in dem man direkt 'Control smart home device' wählt (hoffentlich irgendwie zu verstehen über die Beispiele hinter dem (?)-button) oder via 'Execute commands' einfach den Satz "Fenster Licht" auf den Satz "Lampe 1 im Wohnzimmer" mapped  8)

Zitat
Wäre es möglich, sofern die sepia-* Attribute nicht existieren, room als sepia-room und alias als sepia-name zu nehmen falls diese existieren?
lassen sich weitere Räume hinzufügen?

Hier habe ich dich noch nicht ganz verstanden glaube ich. Meinst du dass SEPIA automatisch die FHEM Attribute "room" und "alias" auf "sepia-name" und "sepia-room" überträgt? Das würde schon gehen, bei "alias" wäre es sogar trivial, bei "room" müsste ich dazu alle möglichen FHEM Namen kennen und diese dann auf die ~14 SEPIA Room Types übertragen (also lediglich etwas Fleißarbeit vermutlich ^^).

Weitere Räume lassen sich leider zur Zeit nicht einfach hinzufügen, denn dazu müsste auch das NLU Modul angepasst werden (was man theoretisch wohl automatisieren könnte, aber das erfordert einen kleinen Umbau; bis dahin nehme ich gerne Wünsche entgegen ^^). Was man wiederum aber machen kann ist den Raum Typ "Other" in Kombination mit einer Index Nummer zu nutzen, z.B.: Ein Gerät mit dem Raum Typen "Other" + Index=200 kann man ansprechen über "Licht in Raum 200" und diesen Satz könnte man wiederum über das Teach Interface auf "Licht auf der Terrasse" mappen ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 08 Januar 2020, 18:02:19
Zitat von: sepia am 08 Januar 2020, 00:53:26
Könntest du mal diesen Fix testen: sepia-assist-v2.4.0.jar (https://b07z.net/downloads/sepia-assist-v2.4.0.jar) (einfach die Datei im Ordner 'SEPIA/sepia-assist-server' überschreiben)? ... bei mir hat es scheinbar geklappt :) .

Werde ich testen und Rückmeldung geben.

Zitat von: sepia am 08 Januar 2020, 00:53:26
Eine Beispiel-Konfiguration für den Apache Webserver gibt es noch nicht (Commits willkommen ^^), aber es gibt einen integrierten SEPIA reverse proxy (~/SEPIA/sepia-reverse-proxy/) der prinzipiell schon richtig konfiguriert ist und alles auf Port 20726 umleitet. Ich benutze den selber allerdings auch nicht im Dauereinsatz.
Port 20721 reicht leider nicht, da der SEPIA Client (die App) auf alle 3 Server zugreift: 20721 (Assist), 20722 (Teach), 20723 (Chat), deshalb erstellt der Proxy 3 Pfade:

/sepia/assist -> http://localhost:20721
/sepia/teach -> http://localhost:20722
/sepia/chat -> http://localhost:20723


... und startet sich selber auf Port 20726. Das ist nicht zwingend so notwendig, hat aber den Vorteil dass der Client alle Pfade automatisch richtig setzt wenn er eine URL als host bekommt, die auf '.../sepia' oder '...:20726/sepia' endet (bei '...:20721' setzt er ebenfalls automatisch die 20722 und 20723. Ich gebe zu das ist nicht super transparent  ::) ).

Schade, dachte ich kann faul sein  8)

Der interne Proxy nützt mir nur etwas, wenn ich den Port nach außen freigebe, richtig?

Das ist nichts für meine Zwecke. Ich habe nur einen Port für den Apache offen.
Darüber würde ich Sepia gern nutzen.

Der erste Test apache-sepia.conf:

Define LOCATION sepia
Define HOST localhost

ProxyPass /${LOCATION}/assist/ http://${HOST}:20721/
ProxyPass /${LOCATION}/teach/ http://${HOST}:20722/
ProxyPass /${LOCATION}/chat/ http://${HOST}:20723/


Die 3 Ports leite ich auf die entsprechenden Pfade um.

Auf die Admin Oberfläche komme ich Problemlos:
https://mydyn.de/sepia/assist/tools/index.htm

Der Info Button von Assist, Teach und Chat Server liefert ein success zurück.

Websockets wird nur für http://localhost:20723/messages/ benötigt?
Was geht nicht wenn Websockets nicht läuft?

Die Assistent Oberfläche wird auch angezeigt unter:
https://mydyn/sepia/assist/app/index.html

unter Hostname habe ich https://mydyn/sepia/assist eingetragen.

Hier hänge ich derzeit. Der Login funktioniert nicht.
Hier das Log aus dem Firefox:

SepiaFW - 2020.01.08_17:35:02 - LOG - Config: language=de sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - ASR: Supported interfaces: webSpeechKit=false (cordova=false), webSocketAsr=true. sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - ASR: Using 'socket' engine. sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: broadcasted host=https://mydyn/sepia/assist/ sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: assistAPI=http://https://mydyn/sepia/assist/:20721/ sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: broadcasted deviceId=b1 sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: clientInfo=browser_v0.20.0
XHR POST http://https//mydyn/sepia/assist/:20721/authentication


er baut seltsamerweise noch den Port und ein "http://" in den Link ein.


Zitat von: sepia am 08 Januar 2020, 00:53:26
Hier habe ich dich noch nicht ganz verstanden glaube ich. Meinst du dass SEPIA automatisch die FHEM Attribute "room" und "alias" auf "sepia-name" und "sepia-room" überträgt? Das würde schon gehen, bei "alias" wäre es sogar trivial, bei "room" müsste ich dazu alle möglichen FHEM Namen kennen und diese dann auf die ~14 SEPIA Room Types übertragen (also lediglich etwas Fleißarbeit vermutlich ^^).

Weitere Räume lassen sich leider zur Zeit nicht einfach hinzufügen, denn dazu müsste auch das NLU Modul angepasst werden (was man theoretisch wohl automatisieren könnte, aber das erfordert einen kleinen Umbau; bis dahin nehme ich gerne Wünsche entgegen ^^). Was man wiederum aber machen kann ist den Raum Typ "Other" in Kombination mit einer Index Nummer zu nutzen, z.B.: Ein Gerät mit dem Raum Typen "Other" + Index=200 kann man ansprechen über "Licht in Raum 200" und diesen Satz könnte man wiederum über das Teach Interface auf "Licht auf der Terrasse" mappen ;-)
alias auf sepia-name meinte ich
Also wenn alias vorhanden ist, dann diese anstelle des Namens verwenden.
Ich lasse die Devicenamen meistens so wie sie angelegt werden (Z-Wave und Homematic z.B. über autocreate) und gebe ihnen einen alias.
Besonders bei Zwischensteckern macht das Sinn da diese ab und zu den Verwendungszweck wechseln.

Das mit dem Raum habe ich verstanden. Bis es automatisch funktioniert hätte ich gern einen Wintergarten als Raum 8)


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 08 Januar 2020, 23:03:09
Zitat von: sepia am 08 Januar 2020, 00:53:26
Könntest du mal diesen Fix testen: sepia-assist-v2.4.0.jar (https://b07z.net/downloads/sepia-assist-v2.4.0.jar) (einfach die Datei im Ordner 'SEPIA/sepia-assist-server' überschreiben)? ... bei mir hat es scheinbar geklappt :) .

funktioniert perfekt
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 08 Januar 2020, 23:13:47
Zitat von: klausw am 08 Januar 2020, 18:02:19
Hier hänge ich derzeit. Der Login funktioniert nicht.
Hier das Log aus dem Firefox:

SepiaFW - 2020.01.08_17:35:02 - LOG - Config: language=de sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - ASR: Supported interfaces: webSpeechKit=false (cordova=false), webSocketAsr=true. sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - ASR: Using 'socket' engine. sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: broadcasted host=https://mydyn/sepia/assist/ sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: assistAPI=http://https://mydyn/sepia/assist/:20721/ sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: broadcasted deviceId=b1 sepiaFW.app.js:571:12
SepiaFW - 2020.01.08_17:35:04 - LOG - Config: clientInfo=browser_v0.20.0
XHR POST http://https//mydyn/sepia/assist/:20721/authentication


er baut seltsamerweise noch den Port und ein "http://" in den Link ein.

~/SEPIA/run-reverse-proxy.sh
macht bei mir das gleiche:
SepiaFW - 2020.01.08_23:08:51 - LOG - Config: assistAPI=http://http://192.168.16.28:20726/sepia/assist/:20721/
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 08 Januar 2020, 23:58:03
Hi Klaus,

ZitatDer interne Proxy nützt mir nur etwas, wenn ich den Port nach außen freigebe, richtig?

Das ist nichts für meine Zwecke. Ich habe nur einen Port für den Apache offen.
Darüber würde ich Sepia gern nutzen.

Im internen Netzwerk ist es im Grunde egal, so lange alle SEPIA Server auf einer Maschine laufen, denn der Client sucht immer unter [host]:20721,20722,20723. Wenn man die Server verteilen würde müsste man dem Client den Proxy Port geben mit "/sepia" als Pfad. Will man extern auf den Server zugreifen ist der Proxy quasi Pflicht, weil man nur so ein passendes SSL Zertifikat bekommt (SSL für Domain -> Domain auf Proxy (Port 443) -> Proxy auf die 3 SEPIA Server).

ZitatWebsockets wird nur für http://localhost:20723/messages/ benötigt?
Was geht nicht wenn Websockets nicht läuft?

Ach ja das hatte ich vergessen, für WebSocket muss man im Proxy dieses spezielle "HTTP connection upgrade" definieren. Wenn WebSocket nicht läuft kann die APP keine Verbindung zum Server aufbauen, da alle Kommunikation zwischen dem User und SEPIA (und zwischen den Usern) über diese Verbindung geht (das ermöglicht z.B. auch dass SEPIA Nachrichten in den Chat Channel pushen kann). Im Control HUB fällt das nicht auf, da hier nur die HTTP "REST" Schnittstellen benutzt werden.

Zitatunter Hostname habe ich https://mydyn/sepia/assist eingetragen.

Hier hänge ich derzeit. Der Login funktioniert nicht.
[...]
er baut seltsamerweise noch den Port und ein "http://" in den Link ein.

Das "/assist" muss weg, also "https://mydyn/sepia". Der Client ist da leider etwas zickig ^^. Mir ist kürzlich auch aufgefallen, dass bei bestimmten Hostnamen die "Autokorrektur" nicht richtig funktioniert. Das werde ich mal verbessern für die nächste Version :o

Zitatalias auf sepia-name meinte ich
Also wenn alias vorhanden ist, dann diese anstelle des Namens verwenden.
[...]
Bis es automatisch funktioniert hätte ich gern einen Wintergarten als Raum 8)

Ist beides vermerkt ;-)

Zitatfunktioniert perfekt

:D

Zitat~/SEPIA/run-reverse-proxy.sh
macht bei mir das gleiche:
Code:
SepiaFW - 2020.01.08_23:08:51 - LOG - Config: assistAPI=http://http://192.168.16.28:20726/sepia/assist/:20721/

Gleiches Problem wie oben, der Host im Client muss "https://mydyn/sepia" oder "mydyn/sepia" lauten, dann klappt es (hoffentlich  ::) )
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 09 Januar 2020, 00:24:39
Hallo Florian,

Zitat von: sepia am 08 Januar 2020, 23:58:03
Das "/assist" muss weg, also "https://mydyn/sepia". Der Client ist da leider etwas zickig ^^. Mir ist kürzlich auch aufgefallen, dass bei bestimmten Hostnamen die "Autokorrektur" nicht richtig funktioniert. Das werde ich mal verbessern für die nächste Version :o
gut zu wissen, das funktioniert jetzt schon einmal  ;D

Zitat von: sepia am 08 Januar 2020, 23:58:03
Ach ja das hatte ich vergessen, für WebSocket muss man im Proxy dieses spezielle "HTTP connection upgrade" definieren. Wenn WebSocket nicht läuft kann die APP keine Verbindung zum Server aufbauen, da alle Kommunikation zwischen dem User und SEPIA (und zwischen den Usern) über diese Verbindung geht (das ermöglicht z.B. auch dass SEPIA Nachrichten in den Chat Channel pushen kann). Im Control HUB fällt das nicht auf, da hier nur die HTTP "REST" Schnittstellen benutzt werden.

speziell klingt schon wieder kompliziert. Da muss ich mal schauen. Der erste Versuch war schonmal nix  :o
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 09 Januar 2020, 01:08:29
/etc/apache2/sites-available/sepia.conf

Define LOCATION sepia/assist/app
Define LOCATION sepia
Define HOST localhost

ProxyPass /${LOCATION}/assist/ http://${HOST}:20721/
ProxyPass /${LOCATION}/teach/ http://${HOST}:20722/

<Location /${LOCATION}/chat/>
  ProxyPass http://${HOST}:20723/

  RewriteEngine On
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
  RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
  RewriteRule /messages/(.*) ws://${HOST}:20723/messages/$1 [P]
</Location>


war leichter als gedacht
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Januar 2020, 01:10:53
Ich wollte gerade schreiben: Vielleicht hilft dieser Link (https://www.happyassassin.net/2018/11/23/reverse-proxying-websockets-with-apache-a-generic-approach-that-works-even-with-firefox/).
Aber es sieht so aus als hätte es schon geklappt? ;D
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 09 Januar 2020, 01:16:59
ja, die Websocket Verbindung funktioniert.


Den hostname muss ich immer noch händisch von localhost auf die richtige Adresse umstellen.
Aber das war noch ein bug, oder?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Januar 2020, 01:24:42
Zitatja, die Websocket Verbindung funktioniert.

Den hostname muss ich immer noch händisch von localhost auf die richtige Adresse umstellen.
Aber das war noch ein bug, oder?

Sehr cool 8) Ich werde dazu morgen mal einen Eintrag in den SEPIA Docs erstellen :-)

Wenn der Client über die neue Adresse/Domain aufgerufen wird ist der Hostname vermutlich erstmal "localhost". Das könnte man als Bug bezeichnen oder zumindest als fehlendes Feature :-[ ::).
Es gibt aber auch einen URL Parameter, den man setzen kann :) "...?host=mydomain.de%2Fsepia" (URL encoded).

So ein bisschen ist das Problem auch konzeptionell, denn der Web Server, der den Client hosted muss nicht zwangsläufig der SEPIA Server sein (siehe https://sepia-framework.github.io/app/index.html) ... ich denke noch mal drüber nach ^^
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: ekur am 09 Januar 2020, 21:49:12
Hallo Florian,

Nach den Zeilen
ZitatNachdem ich SEPIA im neuen Home Verzeichnis komplett neu erstellt habe ging es dann alles ohne 'sudo'.
Hast du vielleicht Probleme durch Zugriffsrechte oder das Verzeichnis am falschen Ort? Versuch es mal mit einer ganz frischen Version im Verzeichnis '~/SEPIA/'.

habe ich heute nochmals die zip aus dem git neu geladen und dann entpackt. Die anschliessende Einrichtung ohne sudo sowie das Starten liefen jetzt ohne Fehlermeldung ab. Soweit so gut. Woran der Start sich beim letzten Mal gestört hat ist mir nicht ganz klar. Vielleicht hat der Versuch dazwischen das mit Adminrechen zu starten etwas durcheinander gebracht.

Ich kann mich auch mit dem Admin in die WebConsole und auf dem mobiltelefon einloggen, die Spracherkenung funktioniert.
Nur beim Control Hub komme ich nicht weiter.
Ich bekomme egal bei welcher Eingabe oder welcher Einstellung immer nur die Antwort
{
  "msg": "Request was not sent! Plz check connection to server.",
  "info": {
    "readyState": 0,
    "status": 0,
    "statusText": "error"
  }
}


Auch wenn ich z.B. Bei Teach Server auf "Info" klicke kommt diese Meldung.
Muss ich erst einen anderen User anlegen? Oder in einem speziellen Feld den Server umbenennen?

Viele Grüße

Elmar
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Januar 2020, 23:36:52
ZitatVielleicht hat der Versuch dazwischen das mit Adminrechen zu starten etwas durcheinander gebracht.

Das wäre auch meine Vermutung.

ZitatAuch wenn ich z.B. Bei Teach Server auf "Info" klicke kommt diese Meldung.
Muss ich erst einen anderen User anlegen? Oder in einem speziellen Feld den Server umbenennen?

Hm komisch. Wenn du mit dem Admin eingeloggt bist sollte alles gehen. Wenn es am User liegen würde kommt normalerweise die Meldung "not authorized" (o.ä.).
Gehen denn auch Assist und Chat Server "Info" nicht oder nur "Teach"?
Im Client funktioniert der Chat mit SEPIA? Also kommen auch Antworten nach der Texteingabe?
Wenn der Login klappt müsste zumindest der Assist Server funktionieren, da der Login über dessen API läuft.

Steht irgendwas in den Logs (log.out) von Teach und Chat Server?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 10 Januar 2020, 10:57:33
Ich würde Sepia gern unter einem separaten Nutzer ohne login und sudo Rechte laufen lassen.
sysctl -w vm.max_map_count=262144 ist beim starten der einzige Befehl der sudo benötigt?

Zitat von: sepia am 09 Januar 2020, 01:24:42
So ein bisschen ist das Problem auch konzeptionell, denn der Web Server, der den Client hosted muss nicht zwangsläufig der SEPIA Server sein (siehe https://sepia-framework.github.io/app/index.html) ... ich denke noch mal drüber nach ^^

Ok, verstehe.
localhost ist aber in diesem Fall auch nicht zielführend.
Wenn Client und SEPIA Server auf unterschiedlichen Systemen laufen ist die Wahrscheinlichkeit, dass der Sepia Server auf dem localhost zu finden ist auch recht gering, oder?
Ich würde vermuten, die Trefferquote ist höher wenn die Adresse des Clienten übernommen wird.
Oder konfigurierbar  8)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 10 Januar 2020, 11:16:02
Hi,

nochmal zum festhalten bezgl. der Rechtegeschichte beim setup:

Florian's Anleitung s.u. funktioniert unter der Voraussetzung, dass das ganze exakt wie angegeben ausführt und zwar als Benutzer, NICHT als root oder mit sudo.
Für einige sicherlich selbstverständlich, wollt es aber trotzdem nochmal "irgendwo dokumentieren", da es auch nicht zu 100% aus der doku hervorgeht.

Problem ist: elasticsearch startet (unter debian o.ä.)  als root einfach nicht:
root@test:~/SEPIA/elasticsearch/bin# ./elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
[2020-01-10T10:45:18,618][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException:[b] can not run elasticsearch as root[/b]


Das Skript (wait.sh) wartet jedoch auf unendlich darauf, dass der Service startet...


ZitatSo, habe gerade noch mal eine ganz frische Raspbian Buster Lite Installation getestet. Hier ist alles was nötig war:

    SD Card geflashed + SSH + Wifi eingerichtet (boot files) und eingesetzt in RPi 3b+
    Via SSH eingeloggt

Dann:
Code: [Auswählen]

sudo apt-get update
sudo apt-get install openjdk-11-jdk-headless
mkdir -p ~/SEPIA/installer
cd ~/SEPIA/installer
wget https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases/latest/download/SEPIA-Home.zip
unzip SEPIA-Home.zip -d ~/SEPIA
cd ~/SEPIA
#dann: sh setup.sh -> step: 4 -> step: 1 -> DONE -> ./run-sepia.sh


Das wars :) Danach kann ich schon den SEPIA Control HUB öffnen, einen neuen User erstellen und damit dann die App testen.


Verbesserungsvorschlag: beim ausführen der setup.sh den Benutzerkontext gegenchecken, z.B. mit

if [[ $EUID -eq 0 ]]; then echo "run as non-root"; else echo "continue" ;fi
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 10 Januar 2020, 11:57:18
ZitatIch würde Sepia gern unter einem separaten Nutzer ohne login und sudo Rechte laufen lassen.
sysctl -w vm.max_map_count=262144
ist beim starten der einzige Befehl der sudo benötigt?

Ja genau. Das ist ein eine Einstellung für Elasticsearch (https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html). Im Grunde könntest du die einfach unabhängig von SEPIA in den Autostart packen oder in '/etc/sysctl.conf'.

ZitatWenn Client und SEPIA Server auf unterschiedlichen Systemen laufen ist die Wahrscheinlichkeit, dass der Sepia Server auf dem localhost zu finden ist auch recht gering, oder?
Ich würde vermuten, die Trefferquote ist höher wenn die Adresse des Clienten übernommen wird.

Den gleichen Gedankengang hatte ich dann auch ;D Vermutlich bin ich etwas voreingenommen, weil ständig irgendwas zum Testen auf localhost läuft :P aber werde es wohl anpassen.

Läuft die Apache Konfiguration soweit gut? Dann würde ich dein Beispiel übernehmen und einen Eintrag im SEPIA Wiki machen.

ZitatProblem ist: elasticsearch startet (unter debian o.ä.)  als root einfach nicht:
[...]
Das Skript (wait.sh) wartet jedoch auf unendlich darauf, dass der Service startet...

Da gibt es sicherlich Optimierungspotenzial ::)
Vielleicht könnte ich beim Start des Setups oder von Elasticsearch testen ob der User root ist und dann abbrechen mit dem Hinweis.

... uups zu ende lesen hilft  ;D ;D
Werde deine Zeile einbauen  :)


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 10 Januar 2020, 12:42:11
Zitat von: sepia am 10 Januar 2020, 11:57:18
Läuft die Apache Konfiguration soweit gut? Dann würde ich dein Beispiel übernehmen und einen Eintrag im SEPIA Wiki machen.

Ja, macht was es soll soweit ich das überblicken kann.
Wenn der Apache mit SSL läuft dann werden diese auch für Sepia genutzt

die Datei muss nach
/etc/apache2/sites-available/sepia.conf

dann

sudo a2ensite sepia.conf
sudo systemctl reload apache2


Zitat von: sepia am 10 Januar 2020, 11:57:18
Den gleichen Gedankengang hatte ich dann auch ;D Vermutlich bin ich etwas voreingenommen, weil ständig irgendwas zum Testen auf localhost läuft :P aber werde es wohl anpassen.
[\quote]

Vermutlich sind es nicht viele (also eher einer) das es über localhost nutzen  8)

Zitat von: sepia am 10 Januar 2020, 11:57:18
Ja genau. Das ist ein eine Einstellung für Elasticsearch (https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html). Im Grunde könntest du die einfach unabhängig von SEPIA in den Autostart packen oder in '/etc/sysctl.conf'.

Ok
Dann schaue ich mal wie ich das über einen separaten User starte.
Werde auch mal schauen wie ich es sinnvoll über systemd starten kann.


Zu NLU uns Sätzen wie:
Schalte das Licht auf dem Regal im Wohnzimmer ein
Ist das Licht auf dem Regal im Wohnzimmer eingeschaltet

Wohnzimmer wird ja sicher direkt als Raum erkannt.
Schalte (oder stelle auf x%) suggeriert einen Aktor
...geschaltet ist eine Fragestellung
Licht könnte man als Type erkennen.
Wenn ich jetzt nach Regal in meinen Devices suche sollte es doch passen.

Also ich Finde raus:
Wo
Type
Name
Abfrage oder Befehl

Ließe sich das so implementieren?

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 10 Januar 2020, 14:22:38
ZitatJa, macht was es soll soweit ich das überblicken kann.
Wenn der Apache mit SSL läuft dann werden diese auch für Sepia genutzt

die Datei muss nach
/etc/apache2/sites-available/sepia.conf

dann

sudo a2ensite sepia.conf
sudo systemctl reload apache2

8) :)

ZitatWerde auch mal schauen wie ich es sinnvoll über systemd starten kann.

Habs bisher immer über einen cronjob gemacht aber das wäre wahrscheinlich die elegantere Lösung :D

ZitatZu NLU uns Sätzen wie:
Schalte das Licht auf dem Regal im Wohnzimmer ein
Ist das Licht auf dem Regal im Wohnzimmer eingeschaltet

Wohnzimmer wird ja sicher direkt als Raum erkannt.
Schalte (oder stelle auf x%) suggeriert einen Aktor
...geschaltet ist eine Fragestellung
Licht könnte man als Type erkennen.
Wenn ich jetzt nach Regal in meinen Devices suche sollte es doch passen.

Also ich Finde raus:
Wo
Type
Name
Abfrage oder Befehl

Ließe sich das so implementieren?

Hmmmm, ich denke schon :D
Ich hatte die Tage mal überlegt den DeviceType auszubauen damit man "alle Lichter" und "Licht" unterscheiden kann. Dabei könnte man eigentlich auch direkt noch deinen Vorschlag umsetzen. Am Ende hätte man sowas wie:

"Lichter aus" -> {"type":"light", "count":"all", "location_detail":""}
"Licht auf dem Regal aus" -> {"type":"light", "count":"", "location_detail":"Regal"}

... und dann müsste man irgendeinen Fuzzy-Match Versuch machen mit dem FHEM Device Namen.

[EDIT] Etwas holpriger aber vielleicht auch nützlich könnte sowas sein:

"Licht mit Namen Regal aus" -> {"type":"light", "count":"", "location_detail":"", "name":"Regal"}


Ich pack das mal auf die To-Do Liste  :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: ekur am 10 Januar 2020, 16:38:37
ZitatGehen denn auch Assist und Chat Server "Info" nicht oder nur "Teach"?
Im Client funktioniert der Chat mit SEPIA? Also kommen auch Antworten nach der Texteingabe?
Wenn der Login klappt müsste zumindest der Assist Server funktionieren, da der Login über dessen API läuft.

Steht irgendwas in den Logs (log.out) von Teach und Chat Server?

Ich kann mich mit dem Admin einloggen (Web Access am PC oder Mobiltelefon), der Assist beantwortet auch Fragen, also der Chat funktioniert.

Im Control Hub unter Server Connections den Button Info oder Statistik beim Assistenten gedrück, Antwort:
{
  "msg": "Request was not sent! Plz check connection to server.",
  "info": {
    "readyState": 0,
    "status": 0,
    "statusText": "error"
  }
}

Sowie bei allen anderen Sachen auch.

Wo finde ich die logs?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 10 Januar 2020, 17:43:28
ZitatIch kann mich mit dem Admin einloggen (Web Access am PC oder Mobiltelefon), der Assist beantwortet auch Fragen, also der Chat funktioniert.

Im Control Hub unter Server Connections den Button Info oder Statistik beim Assistenten gedrück, Antwort: [...]

Das ist maximal verwirrend, denn wenn du dich im Control HUB einloggen kannst besteht ja offensichtlich die Verbindung zum Assist-Server :o :-[

Die Logs sind im SEPIA Ordner unter:

/sepia-assist-server/log.out
/sepia-teach-server/log.out
/sepia-websocket-server-java/log.out

bzw. die alten Logs jeweils im Unterordner /logs/

Ein Blick in die Konsole des Browsers (F12) könnte vielleicht auch noch Aufschluss darüber geben was passiert  :-\

Öffnest du den Control-HUB durch den Client oder separat im Browser über den ".../tools/index.html" Pfad?

-----

[EDIT] @klausw

In deinem Apache Code ist glaube ich die erste Zeile falsch bzw. überflüssig oder?


Define LOCATION sepia/assist/app
Define LOCATION sepia
Define HOST localhost
...

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 10 Januar 2020, 18:21:27
Die erste Zeile kann weg. Ist nur für mich.
Ich baue meine Linkseite dynamisch auf und lese dazu die confs aus.

Gesendet von meinem HTC U11 mit Tapatalk

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Januar 2020, 18:48:38
Hallo zusammen,

auch ich lese eigentlich eher Offline im Forum mit. @sepia super Projekt. Vielen Dank.
Und verfolge mit Begeisterung das Projekt. Als User von Snips und der Übernahme von Sonos bin ich auch hier gelandet und verfolge hier seit einigerzeit.

Ich habe auch die Apache Intengration als Reverse Proxy verfolgt.
Ich habe hier noch eine kleine Ergänzung vielleicht die noch mit ins Wiki könnte.
Beim Proxy müssen folgende Module aktiviert werden.
a2enmod proxy proxy_http proxy_wstunnel

Mir fehlte der wstunnel. Dann springt der Android Client immer auf Online/Offline und verbindet nicht.
Nach dem aktivieren der Module und neustart des Apache geht er dann direkt komplett Online.

Bei der Raumbezeichnung zu FHEM hab ich noch einen kleinen Fehler gefunden oder Handlingproblem.
Wenn man z.B. zwei Lampen in zwei Räumen hat also sepia-type light / sepia-room study - livingroom wird nur ein Raum eingelesen.
Wenn man sie in Fhem dann Decke Arbeitszimmer Decke Wohnzimmer nennt werden sie im SEPIA Hub wieder einzelnd angelegt.

Gleich noch eine Frage. meine heater funktioneren auch. Wie macht ihr das mit der Bezeichnung weglassen des raumes oder so geht nicht wegen doppelt. siehe Abschnitt davor.
Also gibt er immer zurück "Heizung Wohnzimmer" in "Wohnzimmer" aber abfragen und stellen läuft einwandfrei. (bei meheren pro Raum habe ich sie mit (1) (2) (3) durchbeschriftet).

Vielen Dank @sepia für das Super Projekt und natürlich auch an die fleissigen FHEM User.

Allen noch einen schönen Sonntag. Basti

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Januar 2020, 19:41:02
Hi Basti

ZitatIch habe hier noch eine kleine Ergänzung vielleicht die noch mit ins Wiki könnte.
Beim Proxy müssen folgende Module aktiviert werden.

a2enmod proxy proxy_http proxy_wstunnel

Mir fehlte der wstunnel. Dann springt der Android Client immer auf Online/Offline und verbindet nicht.
Nach dem aktivieren der Module und neustart des Apache geht er dann direkt komplett Online.

Super, danke für den Hinweis! :) Gibt man das einfach so im Terminal ein oder kommt das in eine Config Datei?
Der neue Wiki Eintrag ist übrigens hier: https://github.com/SEPIA-Framework/sepia-docs/wiki/Reverse-Proxy-Setup

ZitatBei der Raumbezeichnung zu FHEM hab ich noch einen kleinen Fehler gefunden oder Handlingproblem.
Wenn man z.B. zwei Lampen in zwei Räumen hat also sepia-type light / sepia-room study - livingroom wird nur ein Raum eingelesen.
Wenn man sie in Fhem dann Decke Arbeitszimmer Decke Wohnzimmer nennt werden sie im SEPIA Hub wieder einzelnd angelegt.

Haben die beiden Lampen vorher den gleichen Namen gehabt (Internals->Name)? Dann kann es tatsächlich passieren, dass eine Lampe ignoriert wird :-[
Ich bin bisher davon ausgegangen, dass das nicht vorkommt aber das gilt vermutlich nur für das übergeordnete "Name" Objekt O_O. Das lässt sich aber schnell fixen :-)

ZitatWie macht ihr das mit der Bezeichnung weglassen des raumes oder so geht nicht wegen doppelt. siehe Abschnitt davor.
Also gibt er immer zurück "Heizung Wohnzimmer" in "Wohnzimmer" aber abfragen und stellen läuft einwandfrei.

Wenn SEPIA sagt "Heizung Wohnzimmer in Wohnzimmer" dann weil der Name des Gerätes auch "Heizung Wohnzimmer" ist. Um das zu vermeiden könntest du mal versuchen Wohnzimmer in Klammern zu packen, also als Name "Heizung (Wohnzimmer)" oder "Heizung (Wohnzimmer) (2)". Das "müsste" eigentlich gehen ^^ ... ich fürchte da habe ich einen kleinen Logikfehler drin. Das kommt ganz oben auf die To-Do Liste ;-)

ZitatVielen Dank @sepia für das Super Projekt und natürlich auch an die fleissigen FHEM User.

Danke fürs Testen 8)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 13 Januar 2020, 20:42:00
Nabend,

mal als zwischenstatus: 
Beim einrichten der Rolläden fiel mir noch auf: warum werden diese als  set type "Number (plain)"  angelegt? leuchtet mir nicht ein.
Die meisten dürften mit "open" / "0/100", "close/d" / "100/0", und oder prozent/level/position bedient werden - also am ehesen noch "Binary ON/OFF" ?

Weitere Fragen die aufkamen:

- Welche Möglichkeiten bietet sepia-set-cmds neben den im Beispiel angegebenen? Bzw. welche zustände/befehle können erkannt werden
- Dient der sepia-type noch für weiteres ausser als filter beim aufrufen bzw. zur gruppierung?
   --> Wozu dienen type "device" und "other"?

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Januar 2020, 21:02:21
Hallo Florian,

ich hab schon neu kleine Liste mit wünschen angefangen beim testen :-)

Zitat
Super, danke für den Hinweis! :) Gibt man das einfach so im Terminal ein oder kommt das in eine Config Datei?
Der neue Wiki Eintrag ist übrigens hier: https://github.com/SEPIA-Framework/sepia-docs/wiki/Reverse-Proxy-Setup
das trägt man in die Konsole ein und aktiviert die entsprechenden Module die aufgerufen werden. Und die Doku hatte ich auch gesehen, deswegen dachte ich wäre eine Ergänzung gut. Reicht ja, wenn man drüber stolpert und sich der erste die Zähne erstmal dran ausbeisst. :-)

Fehlermeldung im Apache log dazu würde in etwas so aussehen (bin ich aber zu spät drauf gekommen), wenn eins dieser Module nicht sauber installiert sind:
AH01144: No protocol handler was valid for the URL /sepia/chat/messages/ (scheme 'ws'). If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.


ZitatHaben die beiden Lampen vorher den gleichen Namen gehabt (Internals->Name)? Dann kann es tatsächlich passieren, dass eine Lampe ignoriert wird :-[
Ich bin bisher davon ausgegangen, dass das nicht vorkommt aber das gilt vermutlich nur für das übergeordnete "Name" Objekt O_O. Das lässt sich aber schnell fixen :-)
Meinst damit den internen Namen im FHEM, dann sind diese unterschiedlich mindestens in der Kürzel Bezeichnung des Raumes. Wenn in FHEM das Feld sepia-name wieder zurück ändere lädt er wieder beide Devices Sauber im den Hub.

ZitatWenn SEPIA sagt "Heizung Wohnzimmer in Wohnzimmer" dann weil der Name des Gerätes auch "Heizung Wohnzimmer" ist. Um das zu vermeiden könntest du mal versuchen Wohnzimmer in Klammern zu packen, also als Name "Heizung (Wohnzimmer)" oder "Heizung (Wohnzimmer) (2)". Das "müsste" eigentlich gehen ^^ ... ich fürchte da habe ich einen kleinen Logikfehler drin. Das kommt ganz oben auf die To-Do Liste ;-)
Ja das mit den Klammern zumindest bei den Zahlen hab ich schon gemerkt, das du sie wegfilterst bei der Antwort. Doppelte Klammern bleiben die letzten erhalten in deinem Beispiel dann Heizung (2).
Ich hab bei mir im Wohnzimmer tatsächlich zwei Heizkörper. Da tue ich mich noch etwas schwer mit. (Gleiches bei Rollo Lampen etc.)
Man hat halt wiederkehrende Dinge wie Deckenlampe pro Raum, Rolladen pro Raum, Heizung pro Raum.

ZitatDanke fürs Testen 8)
Wenn wir durch testen helfen können immer gerne.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: klausw am 14 Januar 2020, 10:30:44
Zitat von: whistler am 12 Januar 2020, 18:48:38
Ich habe auch die Apache Intengration als Reverse Proxy verfolgt.
Ich habe hier noch eine kleine Ergänzung vielleicht die noch mit ins Wiki könnte.
Beim Proxy müssen folgende Module aktiviert werden.
a2enmod proxy proxy_http proxy_wstunnel

Mir fehlte der wstunnel. Dann springt der Android Client immer auf Online/Offline und verbindet nicht.
Nach dem aktivieren der Module und neustart des Apache geht er dann direkt komplett Online.

Oh stimmt.
Diese Module müssen auch aktiviert werden (waren sie bei mir schon wegen anderer Dienste)

Das wird im Terminal eingegeben
Der letzte Block in der Wiki sollte so aussehen:

sudo a2enmod proxy proxy_http
sudo a2enmod proxy_wstunnel
sudo a2ensite sepia.conf
sudo systemctl reload apache2


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Januar 2020, 22:42:59
ZitatBeim einrichten der Rolläden fiel mir noch auf: warum werden diese als  set type "Number (plain)"  angelegt? leuchtet mir nicht ein.
Die meisten dürften mit "open" / "0/100", "close/d" / "100/0", und oder prozent/level/position bedient werden - also am ehesen noch "Binary ON/OFF" ?

Hi Markus,
Der Typ Rollade (roller_shutter) wird (noch) nicht automatisch erkannt. Vermutlich kommt der state type "number (plain)" daher, dass der anfängliche Status des Gerätes eine Zahl ist (0 oder 100 ?). "On" und "off" sollte in jedem Fall zu der Aktion "up"/"down" führen und generell gehe ich davon aus das der User auch gerne mal "Rollos auf 50%" sagt. Für die nächste Version gucke ich mal, dass hier Prozent automatisch gesetzt wird :-)

Zitat- Welche Möglichkeiten bietet sepia-set-cmds neben den im Beispiel angegebenen? Bzw. welche zustände/befehle können erkannt werden

sepia-set-cmds bietet bisher nur die Möglichkeit die "enable", "disable" und "set" Befehle zu definieren. Was auf der jeweils rechten Seite steht ist dabei völlig flexibel und kann alles sein was FHEM versteht. Im "set" Feld kann nur die Variable "val" bzw "value" benutzt werden zur Zeit, die die DeviceState Nummer repräsentiert, also "setze Gerät auf 50" -> val=50. Hast du hier zusätzliche Ideen, was du gerne machen würdest?

Zitat- Dient der sepia-type noch für weiteres ausser als filter beim aufrufen bzw. zur gruppierung?
   --> Wozu dienen type "device" und "other"?

sepia-type bestimmt auch wie manche set Befehle umgesetzt werden, z.B. für Rollos bewirkt ein "Rollo öffnen", dass "up" benutzt wird statt "on" usw..
Der Typ "Device" kann in Sätzen wie folgt benutzt werden "Setze Gerät 1 im Wohnzimmer auf XY". "Other" kann nicht durch Sprache erreicht werden, nur durch z.B. Befehle die via Teach-Interface erstellt werden, ist also so eine Art "unassigned" aber ignoriert das Gerät nicht vollständig wie "hidden".

ZitatMeinst damit den internen Namen im FHEM, dann sind diese unterschiedlich mindestens in der Kürzel Bezeichnung des Raumes. Wenn in FHEM das Feld sepia-name wieder zurück ändere lädt er wieder beide Devices Sauber im den Hub.[...]
Doppelte Klammern bleiben die letzten erhalten in deinem Beispiel dann Heizung (2).
[...]Man hat halt wiederkehrende Dinge wie Deckenlampe pro Raum, Rolladen pro Raum, Heizung pro Raum.

Soweit ich das sehe gibt es potentiell 3 "Namen". Die REST Api spuckt einen "name" auf oberster Eben aus, der vermutlich einzigartig ist, dann noch "Internals"->"name" und "Attributes"->"alias" (wenn ich das jetzt alles richtig in Erinnerung habe), die eher beliebig sind. Ich werde das noch mal gerade biegen für die nächste Version ^^.

ZitatReicht ja, wenn man drüber stolpert und sich der erste die Zähne erstmal dran ausbeisst. :-)
ZitatDas wird im Terminal eingegeben
Der letzte Block in der Wiki sollte so aussehen:

Erledigt, danke  :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 15 Januar 2020, 10:29:08
Hi Florian,

vielen Dank für die ganzen Erklärungen!

Zitat
Zitat

    - Dient der sepia-type noch für weiteres ausser als filter beim aufrufen bzw. zur gruppierung?
       --> Wozu dienen type "device" und "other"?

sepia-type bestimmt auch wie manche set Befehle umgesetzt werden, z.B. für Rollos bewirkt ein "Rollo öffnen", dass "up" benutzt wird statt "on" usw..
Der Typ "Device" kann in Sätzen wie folgt benutzt werden "Setze Gerät 1 im Wohnzimmer auf XY".

<- bekomme ich leider nicht zum laufen. sobald ich "Device/Gerät" anspreche liefert mir sepia nichts zurück, bzw. kann nichts damit anfangen.


Zitat
Zitat

    - Welche Möglichkeiten bietet sepia-set-cmds neben den im Beispiel angegebenen? Bzw. welche zustände/befehle können erkannt werden

sepia-set-cmds bietet bisher nur die Möglichkeit die "enable", "disable" und "set" Befehle zu definieren. Was auf der jeweils rechten Seite steht ist dabei völlig flexibel und kann alles sein was FHEM versteht. Im "set" Feld kann nur die Variable "val" bzw "value" benutzt werden zur Zeit, die die DeviceState Nummer repräsentiert, also "setze Gerät auf 50" -> val=50. Hast du hier zusätzliche Ideen, was du gerne machen würdest?

Das Ganze hängt mit der vorhergehenden Frage zusammen.

Im Endeffekt würde ich gerne "raw-text" an ein Gerät übergeben um z.B. Wohnzimmer an fhem zu senden ohne dass Sepia dies als Raum oder halt irgendetwas anderes übersetzt.

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 15 Januar 2020, 23:31:30
Zitat<- bekomme ich leider nicht zum laufen. sobald ich "Device/Gerät" anspreche liefert mir sepia nichts zurück, bzw. kann nichts damit anfangen.

Hmm, ich prüfe das noch mal Morgen, bin gerade auch nicht 100% sicher wie die Prioritäten gesetzt sind dabei ::)

ZitatIm Endeffekt würde ich gerne "raw-text" an ein Gerät übergeben um z.B. Wohnzimmer an fhem zu senden ohne dass Sepia dies als Raum oder halt irgendetwas anderes übersetzt.

Kannst du dazu mal ein Beispiel geben? SEPIA versucht ja immer einen "set"-Befehl zu konstruieren oder einen "state" zu lesen. Wenn du sagt "Wohnzimmer an fhem" senden, wäre das dann sowas: "set [device] Wohnzimmer"?
[EDIT]
Ich könnte mir vorstellen, dass sowas z.B. für einen Staubsauger-Roboter Sinn macht :-D ... theoretisch könnte man das mit dem Teach-Interface machen, also man definiert den Satz "Sende Robo ins Wohnzimmer" und dann bei 'smart_device' '{"value":"device", "found":"Robo", "index":303}' und bei 'smart_device_value' '{"value":"Wohnzimmer", "type":"custom"}' ... dann sollte in FHEM "set [device 303] wohnzimmer" ankommen ... müsste ich aber auch noch mal testen ob das so durchläuft.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 16 Januar 2020, 08:23:17
Zitat
Zitat

    <- bekomme ich leider nicht zum laufen. sobald ich "Device/Gerät" anspreche liefert mir sepia nichts zurück, bzw. kann nichts damit anfangen.


Hmm, ich prüfe das noch mal Morgen, bin gerade auch nicht 100% sicher wie die Prioritäten gesetzt sind dabei

über die teach UI angelernt funktioniert es. Sollte m.M.n. aber auch so laufen, oder ?

ZitatIch könnte mir vorstellen, dass sowas z.B. für einen Staubsauger-Roboter Sinn macht :-D ... theoretisch könnte man das mit dem Teach-Interface machen, also man definiert den Satz "Sende Robo ins Wohnzimmer" und dann bei 'smart_device' '{"value":"device", "found":"Robo", "index":303}' und bei 'smart_device_value' '{"value":"Wohnzimmer", "type":"custom"}' ... dann sollte in FHEM "set [device 303] wohnzimmer" ankommen ... müsste ich aber auch noch mal testen ob das so durchläuft.

Staubsauger Beispiel ist gut - genau das wäre das Ziel.
Momentan scheitert es daran, dass Sepia immer nach einem (integer) Wert fragt den er/sie/es schalten soll.
Falls
Zitat'smart_device_value' '{"value":"Wohnzimmer", "type":"custom"}'
schon realisierbar sein soll, scheitere ich an der syntax.


Eine nächste (große!) Erweiterung wäre, wenn man nicht nur  <set device [room] state> bedienen könnte, sondern auch readings setzen kann <setreading device [room] reading value>. 8)

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 16 Januar 2020, 16:03:48
Zitatüber die teach UI angelernt funktioniert es. Sollte m.M.n. aber auch so laufen, oder ?

Habs gerade noch mal getestet, tatsächlich kann man Type "device" eigentlich nicht per Sprache triggern. Der Begriff ist leider so generisch, dass es etwas tricky ist das komplett allgemein zu machen, ABER ich glaube der User würde "Gerät" eh nie ohne Zusatzinformation benutzen oder? Dann könnte ich folgendes relativ zuverlässig erkennen "Gerät 1/2/3..." oder "Gerät mit Namen XY".

ZitatStaubsauger Beispiel ist gut - genau das wäre das Ziel.
Momentan scheitert es daran, dass Sepia immer nach einem (integer) Wert fragt den er/sie/es schalten soll.

Ja, der Smart Home Service ist dafür eigentlich nicht optimiert. Je länger ich darüber nachdenke desto mehr glaube ich, dass das eigentlich ein perfektes Beispiel wäre für einen kleinen custom Service über das SDK. Sagen wir es gibt ein Gerät namens "Robo" im Haushalt und Befehle für "Robo" wären "Schicke Robo ins Wohnzimmer" oder "Robo auf Modus eco" etc. könnte man das vermutlich gut abgrenzen und einen Konflikt mit dem Smart Home Service vermeiden.
Wenn Interesse besteht könnte ich dazu mal ein Beispiel machen. SDK Services sind in Java programmiert, der Code ist aber gut zu lesen mmn ::) :D
Kriegen wir zum Testen einen FHEM Dummy erstellt?

ZitatFalls

'smart_device_value' '{"value":"Wohnzimmer", "type":"custom"}'

schon realisierbar sein soll, scheitere ich an der syntax.

Sieht eigentlich korrekt aus. Eventuell muss es kombiniert werden mit 'sepia-set-cmds'. Ich habe im Anhang mal 2 Bilder gemacht, wie es bei mir funktioniert. Allerdings sind mir auch beim Testen noch 2 kleinere Bugs aufgefallen, die ich mittlerweile behoben habe. Könnte also sein, dass du auf die neue Version warten müsstest :-[

ZitatEine nächste (große!) Erweiterung wäre, wenn man nicht nur  <set device [room] state> bedienen könnte, sondern auch readings setzen kann <setreading device [room] reading value>. 8)

Kannst du mir noch mal den Unterschied genauer erklären anhand eines Beispiel Gerätes? Soweit ich weiß ist "state" immer genau ein Wert und "reading" ein Objekt mit mehreren Werten, richtig? Ist das z.B. gedacht für Sensoren, die Temperatur und Luftfeuchtigkeit aufzeichnen?
Vielleicht kann man das irgendwie in die 'set-cmds' oder den 'stateType' einbauen :-)

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 24 Januar 2020, 18:23:17
Zitat von: sepia am 16 Januar 2020, 16:03:48
ZitatJa, der Smart Home Service ist dafür eigentlich nicht optimiert. Je länger ich darüber nachdenke desto mehr glaube ich, dass das eigentlich ein perfektes Beispiel wäre für einen kleinen custom Service über das SDK. Sagen wir es gibt ein Gerät namens "Robo" im Haushalt und Befehle für "Robo" wären "Schicke Robo ins Wohnzimmer" oder "Robo auf Modus eco" etc. könnte man das vermutlich gut abgrenzen und einen Konflikt mit dem Smart Home Service vermeiden.
Wenn Interesse besteht könnte ich dazu mal ein Beispiel machen. SDK Services sind in Java programmiert, der Code ist aber gut zu lesen mmn ::) :D
Kriegen wir zum Testen einen FHEM Dummy erstellt?

Das klingt sehr gut. Sicher interessant.

Ich hab anhand des Bespiels mal den Teach Befehl ausgeführt. Zum Testen hab ich einen Dummy angelegt.
Aktuell gibt es scheinbar noch Probleme wenn per stateformat der Status umformatiert wird, manchmal schaltet er trotzdem und manchmal gibt er aus, das er den Status nicht erkennt und nicht schalten kann (z.B. Musikplayer SB_PLAYER / anderes Thema, kann ich seperat nochmal zu schreiben) (Zumindest wenn man im HUB den Powerbutton drückt)

[EDIT]
Ablauf: Schicke den Robo ins Wohnzimmer: Rückfrage 1: Wo ist das Gerät? "Wohnzimmer" / Rückfrage 2: Auf welchen Wert 100
Ich hatte es so verstanden, wenn auch nicht 100% das dein Bespiel, zumindest was fertiges an den Fhem schickt, mal unabhängig davon was im FHem dann passiert.
(Vielleicht hängt das mit deinen gefundenen Bugs zusammen die noch nicht eingecheckt sind) Hast du geplant diese ggf. ins DEV einzuchecken?
Er schickt dann ein vermutlich ein "set Robo 100" an Fhem zumindest ist das der neue state vom Gerät.
(Ist das der noch nicht eingecheckte Bugfix?)

für das stateformat: das sieht bei mir so aus, und sorgt dafür das er den Robo nicht schalten würde, weil er damit nichts anfangen kann.
attr Robo_Control stateFormat Location: state Zähler: garbage_cycle

[EDIT]
Wenn ich das richtig verstehe müsste man aktuell für jeden Raum einen Teachbefehl machen und nicht dynamisch über einen Befehl abfertigen oder?
Schicke Robo in die "Küche"
Schicke Robo ins "Wohnzimmer"
Ich hätte dabei noch folgenden Anwendungsfall
Schicke Robo zum "Esstisch", das wäre doch der Klassiker nach dem Sonntagsfrühstück
(Jetzt ist vermutlich das SDK doch die bessere wahl oder?)

PS: Vielleicht denkbar das man zusätzlich noch ein abweichendes reading für den on/off status definieren kann.
(oder geht das vielleicht sogar schon)

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 24 Januar 2020, 20:01:02
Zitat von: sepia am 16 Januar 2020, 16:03:48
{"value":"device", "found":"Robo", "index":303}
das hat bei mir nicht geklappt dafür dein device;;Robo
(wobei er hier scheinbar den sepia namen und FHEM namen nimmt, gefühlt bei den vielen Kombinationen vom ausprobieren)

Zitat von: sepia am 16 Januar 2020, 16:03:48
Sieht eigentlich korrekt aus. Eventuell muss es kombiniert werden mit 'sepia-set-cmds'. Ich habe im Anhang mal 2 Bilder gemacht, wie es bei mir funktioniert. Allerdings sind mir auch beim Testen noch 2 kleinere Bugs aufgefallen, die ich mittlerweile behoben habe. Könnte also sein, dass du auf die neue Version warten müsstest :-[

Ich hab mal meine Einstellungen angehängt die dann ein "set Robo_Control wohnzimmer" an den Fhem schicken.

Leider wird hier sowohl bei plain als auch dem json auf dem Weg das Wort in lowercase gewandelt.
Und wie im Screenshot zu sehen wird der custom befehl zwar in Fhem gespeichert aber nicht wieder geladen.

PS: Florian, weisst du schon wann es die neue Version mit den zwei Bugfixen gibt, die evtl. hier rein spielen.

Vielen Dank und ein schönes Wochenende.

Gruß
Basti

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 25 Januar 2020, 00:20:20
Hi Basti,

ich habe so ein bisschen den Überblick verloren was aktuell genau geht bei dir und was nicht, aber ich versuche mal auf ein paar Sachen einzugehen :)
Vielleicht kannst du mir auch noch sagen, wie ich den Dummy reproduzieren kann? ^^

ZitatWenn ich das richtig verstehe müsste man aktuell für jeden Raum einen Teachbefehl machen und nicht dynamisch über einen Befehl abfertigen oder?
Schicke Robo in die "Küche"
Schicke Robo ins "Wohnzimmer"
Ich hätte dabei noch folgenden Anwendungsfall
Schicke Robo zum "Esstisch", das wäre doch der Klassiker nach dem Sonntagsfrühstück
(Jetzt ist vermutlich das SDK doch die bessere wahl oder?)

Hehe der letzte Fall gefällt mir :-)
Man kann Befehle über das Teach-Interface zwar auch etwas dynamischer definieren mit "execute commands", aber zur Zeit nur, wenn man damit einen Befehl ansprechen kann der schon existiert, z.B. der eigene Satz wäre "Prüfe <var1>" und der bekannte Satz "Zeig mir den Status von Sensor 1 im <var1>". Dann wäre das flexibel für alle Räume ("Prüfe Wohnzimmer" z.B.). Im Smarthome Service ist "Room" immer ein Standort, deswegen klappt das damit nicht, aber hätte "Robo" einen eigenen Service wird es flexibel. Der Service für "Robo" könnte vermutlich sehr einfach sein, vielleicht kann ich am Wochenende mal ein Beispiel basteln.

ZitatAktuell gibt es scheinbar noch Probleme wenn per stateformat der Status umformatiert wird, manchmal schaltet er trotzdem und manchmal gibt er aus, das er den Status nicht erkennt und nicht schalten kann (z.B. Musikplayer SB_PLAYER / anderes Thema, kann ich seperat nochmal zu schreiben) (Zumindest wenn man im HUB den Powerbutton drückt)

Der "toggle" Knopf im Control HUB kann tatsächlich nur begrenzt entscheiden was eigentlich passieren soll beim drücken. Er berücksichtigt zwar die "set-cmds" States beim setzen, aber habe gerade noch mal nachgeguckt, er versteht beim lesen nur "on, off, open, closed" und reine Zahlen. Da könnte man eigentlich noch mal nachbessern, wenn "set-cmds" eh schon definiert ist ^^.

ZitatLeider wird hier sowohl bei plain als auch dem json auf dem Weg das Wort in lowercase gewandelt

Welches Wort war das genau?
Oh ich sehe im Screenshot gerade das Semikolon muss ein Komma sein im JSON: "{"set":"<val>", "enable":"on", "disable":"off"}
Im Screenshot des Teach-Interfaces fällt mir noch auf, dass die Angabe zum "Room" hier vermutlich falsch ist, denn das ist der Raum in dem Robo_Control gesucht wird, nicht der Zielort.

Zitat(Vielleicht hängt das mit deinen gefundenen Bugs zusammen die noch nicht eingecheckt sind) Hast du geplant diese ggf. ins DEV einzuchecken?
[...]
weisst du schon wann es die neue Version mit den zwei Bugfixen gibt, die evtl. hier rein spielen.

Die Bugs in der aktuellen Version haben sicher noch Einfluss auf deine Tests. Die zwei Fixes, die ich letzte Woche erwähnte sind bereits im dev-branch. Zur Zeit arbeite ich noch an Verbesserungen um endlich einen guten "headless" Raspberry Pi Client anbieten zu können. Ziel ist es damit noch vor Februar fertig zu werden, aber vielleicht erzeuge ich schon mal eine Version zum testen der FHEM Änderungen die Tage.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 25 Januar 2020, 03:11:16
Hallo Florian,

danke für deine Rückmeldung. Ich hab dir jetzt nochmal einen Ablauf geschrieben (Inkl. Bonus für dich am Ende)  :)

Ich hab mit dem Dummy angefangen und dann die verschiedenen Varianten mit Screenshots dokumentiert.

Es liegt scheinbar am plain mit dem kleinschreiben. Das wort ist egal. Test Wohnzimmer war es bei mir.

Ja der Zielort für das Device :-) der ist an dem Falle identisch, etwas ungeschickt vielleicht. Da kommt mein Beispiel am Ende zur Unterscheidung ja ganz gut.

So wie du Zeit hast. Ich hatte schon einen Workaround gebaut und nachgelagert in notify, was den Robo triggert, den ersten Buchstaben wieder gross geschrieben :-)

Den Headless Client, das wäre was ich hatte schon angefangen mit Chromium, aber da gehts schon los mit dem Mikro zugriff VNC Zugriff etc auf den PI.
Commandozeile wäre ja schon schicker.

Man kann das Teach UI nicht zufällig auch per Skript überfallen, natürlich kann ich die Stelle jetzt suchen gehen, wo es gespeichert wird.
Aber vielleicht muss ich das ja gar nicht. Ich würde also Teach "per Editor" nehmen oder SDK. Vermutlich nicht so gern gesehen ist ja beim Fhem auch so. :-) (Zurecht manchmal) :-)

Der Dummy war bei mir so im Einsatz, daher ging das recht fix. Nicht über die Punkte im Item wandern, er ist vorhin schon mal ein durchs Wohnzimmer gefahren weil ich nicht aufgepasst habe. :-)

Vielen Dank und ein schönes Wochenende und gute Nacht. :-)

PS: Hab gerade nochmal kurz ins Code-UI geschaut, aber dafür ist es nun zu spät.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 25 Januar 2020, 16:53:56
Hallo Florian,

es hörte sich ein bisschen so als ob du gerne Praxisbeispiele brauchst, was ja auch Sinn macht. :-)
Ich probiere mich gerade an der Kaffeemaschine bei Namen mit Klammerwerten scheitere ich gerade auf die eine sowie andere Schreibweise beim device. Er meldet kein passendes Gerät gefunden.

Daher würde gerne nochmal auf die json Formatierung eingehen.

Zitat von: sepia am 15 Januar 2020, 23:31:30
Ich könnte mir vorstellen, dass sowas z.B. für einen Staubsauger-Roboter Sinn macht :-D ... theoretisch könnte man das mit dem Teach-Interface machen, also man definiert den Satz "Sende Robo ins Wohnzimmer" und dann bei 'smart_device' '{"value":"device", "found":"Robo", "index":303}' und bei 'smart_device_value' '{"value":"Wohnzimmer", "type":"custom"}' ... dann sollte in FHEM "set [device 303] wohnzimmer" ankommen ... müsste ich aber auch noch mal testen ob das so durchläuft.

Fhem Daten:
name AZ_Senseo
sepia-name Kaffeemaschine (Arbeitszimmer)
sepia-room study
sepia-room-index 303
sepia-set-cmds {"number":"brew <val>cup","enable":"ON","disable":"OFF"}
sepia-type coffee_maker


[Edit]
Das mit dem smart_device im teach hatte beim Robo nicht geklappt, aber mit dem <device>;; nimmt er den Namen auch nicht. evtl. wegen der Leerzeichen?
Im Chat direkt funktioniert aber: Kaffeemaschine (Arbeitszimmer) an / Kaffeemaschine (Arbeitszimmer) aus

[Edit2]
Ich habs gefunden, es gibt scheinbar noch einen kleinen Fehler. Sobald ich den Raum auf <livingroom> einstelle im Teach gibt es eine Antwort. Da mein Debugging vom Robo gestern noch an war.
Hatte ich mich beim testen schon gewundert warum ich Meldungen kriege. Soll heissen er schickt dann die Commandos ebenfalls an den Robo. kann ich auch sehen im state kommt auch der angepasste Befehl für die Kaffemaschine dann an. Ich bin gestern über den Manager im Teachmodul gegangen und habe so den Robo mit den Räumen "geklont". Das gleiche mit der Kaffeemaschine.
Aber selbst wenn ich einen neuen Eintrag anlege, will diese unabhängig das <device<;;AZ_Senseo eingetragen ist, auch nach einem Reload und STRG+F5 im Browser den Robo füttern.

Er soll am Ende ein set AZ_Senseo ON / OFF / brew 1cup / brew 2cup an Fhem schicken.

Hab so direkt im Wiki nichts gefunden dazu, lese sonst gerne dort auch nochmal nach.

Vielen Dank.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 25 Januar 2020, 22:28:19
Hallo Florian,

gute Nachricht ich habs doch selber hinbekommen und es funktioniert.

Zitat von: whistler am 25 Januar 2020, 16:53:56
Fhem Daten:
name AZ_Senseo
sepia-name Kaffeemaschine (Arbeitszimmer)
sepia-room study
sepia-set-cmds {"number":"brew <val>cup","enable":"ON","disable":"OFF"}
sepia-type coffee_maker

Im Teach Modul dann:
<coffee_maker>;;Kaffeemaschine (Arbeitszimmer)
<study>
<set>
{"value":"brew 2cup","type":"custom"}


Wenn der Typ <device> im <livingroom> passt nimmt er scheinbar den ersten den er finden kann.
Diesen führt er dann unabhängig vom Namen der dahinter steht aus.

Man muss als auch in den eckigen klammern korrekt den Typ angeben, was ja Sinn macht.

Irgendwas zum loggen oder so wäre schön, damit man schneller seinen Fehler finden kann.


Ich hatte zwischendurch auch testweise die Dev eingespielt, dabei und danach (auch mit dem normalen Build stand):
- Gabs dann Fehler im Docker bei der Elastic mit Connection Refuse und Java VM Speicherfehler
- Der HUB konnte zwar mit LOAD HUB INFO erreicht werden und auch SEPIA REGISTER ging (neues attr im fhem zum save), aber beim Geräte holen gabs nen Fehler in Rot

Vielleicht kennst du das verhalten in der einen oder anderen Form. Ansich hab ich am Ende nichts anders gemacht


Eine Anmerkung / Idee in den Zusammenhang noch was die Attr Felder angeht:
sepia-set-cmds sepia-name sepia-type sepia-room sepia-room-index sepia-data sepia-mem-state sepia-state-type sepia-set-cmds
->
sepia-name sepia-room:livingroom,diningroom,kitchen,bedroom,bath,study,office,childsroom,garage,basement,garden,shack,hallway,other,unassigned sepia-type:light,heater,tv,music_player,fridge,oven,coffee_maker,roller_shutter,power_outlet,sensor,device,other,hidden sepia-room-index sepia-data sepia-mem-state sepia-state-type sepia-set-cmds

die Auflistung hatte ich mir aus deinen sourcen mal zusammen kopiert und muss sie bei mir natürlich jedes mal überschreiben.
Dann kann man im fhem bei den Attributen bequem per Auswahlliste die Räume etc. setzen.

Vielleicht wäre das aber allgemein praktisch.

- sepia-set-cmds war bei mir nach dem letzten SEPIA REGISTER doppelt drin. Vielleicht vom ganzen Testen.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 26 Januar 2020, 13:01:51
Hi Basti,

danke für die ganzen Tests und neuen Infos :D
Mal gucken was ich ad-hoc beantworten kann ^^

ZitatEs liegt scheinbar am plain mit dem kleinschreiben. Das wort ist egal. Test Wohnzimmer war es bei mir.

Ist das aktuell noch ein Problem? Wenn die Befehle aus dem "set-cmds" Objekt kommen, sollten die eigentlich nicht verändert werden. Bei standard States wie ON, OFF etc. macht das SEPIA FHEM Interface automatisch eine "toLowerCase" Konversion weil FHEM scheinbar "on" versteht aber "ON" nicht (zumindest war das damals in meinen Tests so).

ZitatDen Headless Client, das wäre was ich hatte schon angefangen mit Chromium, aber da gehts schon los mit dem Mikro zugriff VNC Zugriff etc auf den PI.
Commandozeile wäre ja schon schicker.

Die aktuelle "headless" Version nutzt immer noch den Chromium, da es momentan zu lange dauern würde einen komplett neuen Python/Node.js/etc. Client zu bauen und dieser auch nicht alle Feature anbieten könnte. Allerdings habe ich es so gelöst, dass man über den SEPIA Control HUB eine Art "terminal" bekommt mit dem man Befehle an den Client schicken kann und States als Events bekommt. Ich denke das wird ganz nett, wenn es fertig ist  ;D

ZitatMan kann das Teach UI nicht zufällig auch per Skript überfallen, natürlich kann ich die Stelle jetzt suchen gehen, wo es gespeichert wird.
Aber vielleicht muss ich das ja gar nicht. Ich würde also Teach "per Editor" nehmen oder SDK. Vermutlich nicht so gern gesehen ist ja beim Fhem auch so. :-) (Zurecht manchmal) :-)

Zur Zeit nicht ^^. Im Grunde nutzt der Client ja nur die APIs des Teach-Servers und man könnte sicherlich etwas bauen, was Befehle aus einer Text-Datei importiert oder einer Kommandozeile, aber das wäre auf der Prio-Liste eher unten angesiedelt zur Zeit ^^. Wobei ... es gibt da vielleicht doch was. Der Assist-Server liest beim Start Befehle ein aus den Dateien in "SEPIA/sepia-assist-server/Xtensions/Assistant/commands/*" z.B. "teachIt_de.txt" für Deutsch. Das Format ist etwas eigen ::) aber im kompatibel mit dem was das Teach-UI erstellt. Z.B. is dort der Befehl für "Uhrzeit" definiert als (User Text;; p1=...;; p2=...;; ...):

Wieviel Uhr ist es;;  command=chat;;  reply=Es ist <local_time_hhmm> Uhr;;

Zitater ist vorhin schon mal ein durchs Wohnzimmer gefahren weil ich nicht aufgepasst habe. :-)

::) ;D :D

Zitates hörte sich ein bisschen so als ob du gerne Praxisbeispiele brauchst

Immer gerne :-D Das hilft vor allem auch um eventuelle Workarounds zu finden ;-)

ZitatIch habs gefunden, es gibt scheinbar noch einen kleinen Fehler. Sobald ich den Raum auf <livingroom> einstelle im Teach gibt es eine Antwort. Da mein Debugging vom Robo gestern noch an war. Hatte ich mich beim testen schon gewundert warum ich Meldungen kriege. Soll heissen er schickt dann die Commandos ebenfalls an den Robo. kann ich auch sehen im state kommt auch der angepasste Befehl für die Kaffemaschine dann an. Ich bin gestern über den Manager im Teachmodul gegangen und habe so den Robo mit den Räumen "geklont". Das gleiche mit der Kaffeemaschine.
[...]
Wenn der Typ <device> im <livingroom> passt nimmt er scheinbar den ersten den er finden kann.
Diesen führt er dann unabhängig vom Namen der dahinter steht aus.

Hab ich das richtig verstanden, er hat den Robo getriggert obwohl er eigentlich die Kaffeemaschine triggern sollte weil beide vom Typ "device" waren bzw. in dem Teach-UI als "device" versucht wurden anzusprechen?
Generell ist die Logik so:

Punkt 3 war bei dir der Fall? In dem Kontext wäre das definitiv ein Bug :-\ Es könnte auch Punkt 1 gewesen sein, d.h. "Device" wurde aktiviert weil es das einzige war im System (Kaffeemaschine war ja coffee_maker).

ZitatMan muss als auch in den eckigen klammern korrekt den Typ angeben, was ja Sinn macht.

Ja, das ist in jedem Fall nötig, sprich ein Gerät kann nur gefunden Werden wenn der Typ übereinstimmt, der Name ist dann egal.

ZitatIrgendwas zum loggen oder so wäre schön, damit man schneller seinen Fehler finden kann.

Ein Log Eintrag der z.B. den FHEM "set" Befehl zusammen mit dem SEPIA Device Objekt anzeigt (und ggf. dem User Input)? Vielleicht könnte ich ein Smart Home Log-Level in die Config einbauen.

ZitatIch hatte zwischendurch auch testweise die Dev eingespielt, dabei und danach (auch mit dem normalen Build stand):
- Gabs dann Fehler im Docker bei der Elastic mit Connection Refuse und Java VM Speicherfehler
- Der HUB konnte zwar mit LOAD HUB INFO erreicht werden und auch SEPIA REGISTER ging (neues attr im fhem zum save), aber beim Geräte holen gabs nen Fehler in Rot
Vielleicht kennst du das verhalten in der einen oder anderen Form. Ansich hab ich am Ende nichts anders gemacht

Hmm komisch, an der Elastic wurde eigentlich nichts geändert, aber in den GitHub Issues scheint es einen User mit ähnlichem Fehler zu geben. Für die nächste Version mache ich einen neuen Docker Container und teste das alles mal durch mit Smart Home.

Zitatsepia-name sepia-room:livingroom,diningroom,kitchen,bedroom,bath,study,office,childsroom,garage,basement,garden,shack,hallway,other,unassigned sepia-type:light,heater,tv,music_player,fridge,oven,coffee_maker,roller_shutter,power_outlet,sensor,device,other,hidden sepia-room-index sepia-data sepia-mem-state sepia-state-type sepia-set-cmds

die Auflistung hatte ich mir aus deinen sourcen mal zusammen kopiert und muss sie bei mir natürlich jedes mal überschreiben.
Dann kann man im fhem bei den Attributen bequem per Auswahlliste die Räume etc. setzen.

Ah! Gute Idee  ;D
[EDIT] Was passiert, wenn man später neue hinzufügt, muss ich das dann auch in FHEM neu schreiben? Oder kann ich über das HTTP Interface auch Werte schreiben, die nicht in der Auswahl sind?

Grüße!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 26 Januar 2020, 16:48:53
Hi Florian,

dann versuche ich mal zu antworten. :)



Zitat von: sepia am 26 Januar 2020, 13:01:51
Ist das aktuell noch ein Problem? Wenn die Befehle aus dem "set-cmds" Objekt kommen, sollten die eigentlich nicht verändert werden.

Ich kann es nicht mehr reproduzieren, gerade beim testen wurde es sowohl mit <plain>;;Test korrekt geschrieben als auch {"value":"Test","type":"custom"}

Zitat von: sepia am 26 Januar 2020, 13:01:51
Bei standard States wie ON, OFF etc. macht das SEPIA FHEM Interface automatisch eine "toLowerCase" Konversion weil FHEM scheinbar "on" versteht aber "ON" nicht (zumindest war das damals in meinen Tests so).

Zum Thema gross Kleinschreibung bei ON OFF / on off kann ich zumindest sagen, das z.B. Tasmota und MQTT Devices gerne ON OFF als set nutzt, das kann man dann zwar per Eventmap umbiegen, aber ich weiss gerade nicht ob es so gut ist, das du ON OFF immer on lower umwandelst. beliebt wäre in dem Zusammenhang noch toggle.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Die aktuelle "headless" Version nutzt immer noch den Chromium, da es momentan zu lange dauern würde einen komplett neuen Python/Node.js/etc. Client zu bauen und dieser auch nicht alle Feature anbieten könnte. Allerdings habe ich es so gelöst, dass man über den SEPIA Control HUB eine Art "terminal" bekommt mit dem man Befehle an den Client schicken kann und States als Events bekommt. Ich denke das wird ganz nett, wenn es fertig ist  ;D

Das klingt gut, ist ja fast wie an Weihnachten, wenn man auf die Geschenke wartet als Kind. :)
Vielleicht könnte man die states / events auch an fhem weitergeben, um dort darauf reagieren zu können. Ein paar Ideen dazu:
- hotworderkennung pro device (in dem Fall als der client android / browser headless)
- was erkannt wurde
- Gerät Online / Offline
- Vielleicht bietet das Snips Addon: https://github.com/Thyraz/Snips-Fhem (https://github.com/Thyraz/Snips-Fhem) bzw.  ja noch ein paar Ideen, die man einbauen könnte.
Ich kann das sonst bei Gelenheit nochmal detailierter formulieren.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Zur Zeit nicht ^^. Im Grunde nutzt der Client ja nur die APIs des Teach-Servers und man könnte sicherlich etwas bauen, was Befehle aus einer Text-Datei importiert oder einer Kommandozeile, aber das wäre auf der Prio-Liste eher unten angesiedelt zur Zeit ^^. Wobei ... es gibt da vielleicht doch was. Der Assist-Server liest beim Start Befehle ein aus den Dateien in "SEPIA/sepia-assist-server/Xtensions/Assistant/commands/*" z.B. "teachIt_de.txt" für Deutsch. Das Format ist etwas eigen ::) aber im kompatibel mit dem was das Teach-UI erstellt. Z.B. is dort der Befehl für "Uhrzeit" definiert als (User Text;; p1=...;; p2=...;; ...):

Wieviel Uhr ist es;;  command=chat;;  reply=Es ist <local_time_hhmm> Uhr;;

Hab ich gefunden :-) Naja vielleicht nur Gewöhnungssache :-) Dabei hätte ich noch einen Featurewunsch:
Wieviel Uhr ist es | Wie spät ist es | Was sagt die Uhr;;  command=chat;;  reply=Es ist <local_time_hhmm> Uhr;;

Schau mal hier ein, hier wurde entsprechend ein wenig was in dem Hinblick für Snips gebaut: https://forum.fhem.de/index.php/topic,89548.930.html (https://forum.fhem.de/index.php/topic,89548.930.html)

[Edit]
Hast du einen Beispielaufruf fürs Teachmodul über die API zum aus und einlesen?

Ich hab gerade verschiedene Ideen, aber erstmal warte ich auf eine generelle Rückmeldung zu der Idee.


Zitat von: sepia am 26 Januar 2020, 13:01:51
Hab ich das richtig verstanden, er hat den Robo getriggert obwohl er eigentlich die Kaffeemaschine triggern sollte weil beide vom Typ "device" waren bzw. in dem Teach-UI als "device" versucht wurden anzusprechen?
Generell ist die Logik so:

  • Wenn der User sagt "Gerät an" und es gibt nur 1 im ganzen System, dann wird das genommen
  • Wenn der User sagt "Gerät an" und es gibt mehrere in verschiedenen Zimmern, dann wird nach dem Zimmer gefragt
  • Wenn der User sagt "Gerät an" und es gibt mehrere in dem selben Zimmer, dann ... bin ich gerade nicht sicher :-[ . Es könnte sein, dass dann das erste gewählt wird. Ein Vergleich des Namens findet nicht statt.

Punkt 3 war bei dir der Fall? In dem Kontext wäre das definitiv ein Bug :-\ Es könnte auch Punkt 1 gewesen sein, d.h. "Device" wurde aktiviert weil es das einzige war im System (Kaffeemaschine war ja coffee_maker).

Ja, das ist in jedem Fall nötig, sprich ein Gerät kann nur gefunden Werden wenn der Typ übereinstimmt, der Name ist dann egal.

Es war auf jedenfall Tricky und es gibt folgende Geräte:
device garden Pumpe
device livlingroom Robo_Control
coffee_maker study Kaffeemaschine (Arbeitszimmer)
coffee_maker kitchen Kaffeemaschine (Küche)

device livingroom -> matched -> Robo (OK)
device study -> machted -> Sorry kein passendes Gerät gefunden (OK)
coffee_maker livingroom -> matched -> kein passendes Gerät gefunden (OK)

Also es gibt mindestens noch ein zweites device aber im garten nämlich die Pumpe. Heisst Punkt 1 kann eigentlich nicht zutreffen. Aber hat er trotzdem genommen.
bzw. 1 Gerät im livingroom da wäre der match mit raumangabe.

Dann verwirrt natürlich der "Eintrag hinter <device>;; wenn er nicht greift, bzw. noch nicht greift :-)
Wenn die Bezeichnung ignoriert wird, dann hat er ja alles richtig gemacht, und nebenbei für etwas Verwirrung gesorgt.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Ein Log Eintrag der z.B. den FHEM "set" Befehl zusammen mit dem SEPIA Device Objekt anzeigt (und ggf. dem User Input)? Vielleicht könnte ich ein Smart Home Log-Level in die Config einbauen.

Zumindest hätte ich dann vermutlich recht schnell gesehen was er macht :-) Vielleicht würde auch schon das Log im ersten Schritt reichen,
wo er dann am Ende bei Welcher Wert? bzw. Welches Gerät? oder kein passendes Gerät gefunden auskommt. Entsprechend der Chatausgabe.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Hmm komisch, an der Elastic wurde eigentlich nichts geändert, aber in den GitHub Issues scheint es einen User mit ähnlichem Fehler zu geben. Für die nächste Version mache ich einen neuen Docker Container und teste das alles mal durch mit Smart Home.

Also vorgehen ist (läuft per Skript durch, daher passiert immer das gleiche):

Ich war froh als er wieder lief :-) Die Java Version müsste auch mal aktualisiert werden.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Ah! Gute Idee  ;D
[EDIT] Was passiert, wenn man später neue hinzufügt, muss ich das dann auch in FHEM neu schreiben? Oder kann ich über das HTTP Interface auch Werte schreiben, die nicht in der Auswahl sind?

Ja ich hatte befürchtet das so eine Frage kommt, denn die kann ich leider gerade so nicht beantworten. Vermutlich aber so wie du gerade auch die Attribute einfügst oder löscht.


Viele Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 27 Januar 2020, 13:53:16
Zitat
Zitat von: sepia am Gestern um 13:01:51

    Ah! Gute Idee  ;D
    [EDIT] Was passiert, wenn man später neue hinzufügt, muss ich das dann auch in FHEM neu schreiben? Oder kann ich über das HTTP Interface auch Werte schreiben, die nicht in der Auswahl sind?


Ja ich hatte befürchtet das so eine Frage kommt, denn die kann ich leider gerade so nicht beantworten. Vermutlich aber so wie du gerade auch die Attribute einfügst oder löscht.

fhem nimmt/setzt auch werte die nicht in der Liste stehen - ist zumindest bei userattr so.
um userattr in global nicht unnötig lang werden zu lassen, schlage ich allerdings vor die vorgabe gar nicht erst zu machen.. man muss zu 99% sowieso übers control hub eingreifen, dann kann man auch schnell den raum/typ (neu) setzen


mein Robo braucht als Befehl "zone Raumname". Komme ohne Service also momentan nicht drum herum für jeden Raum einen Befehl anzulernen.
schaut atm so aus:

When I say ...     "schicke Robo ins wohnzimmer"
Smart device:    <device>;;Staubsauger
Room:               empty

Action:    <set>
Value:     {"value":"zone Wohnzimmer", "type":"custom"}
Answer:  <1> fährt ins Wohnzimmer

in fhem:
sepia-name  Staubsauger
sepia-room  hallway
sepia-state-type text_raw
sepia-type  device


Funktioniert gut soweit - ist momentan allerdings auch mein einziges "device".
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 27 Januar 2020, 22:33:21
Kurzer Zwischenstand.

Zitat von: sepia am 26 Januar 2020, 13:01:51
Ist das aktuell noch ein Problem? Wenn die Befehle aus dem "set-cmds" Objekt kommen, sollten die eigentlich nicht verändert werden. Bei standard States wie ON, OFF etc. macht das SEPIA FHEM Interface automatisch eine "toLowerCase" Konversion weil FHEM scheinbar "on" versteht aber "ON" nicht (zumindest war das damals in meinen Tests so).

ich konnte es nun reproduzieren mit der to lower case schreibweise. Und wenn die custom config gefüllt ist:
{"set":"<val>","enable":"on","disable":"off"}

schreibt er alles klein, schreibt man es wieder rein, schreibt er gross.

[Edit]
In der Antwort wird bei <3> (trotz gefüllter custom config) alles klein ausgegeben in der Antwort.

Viele Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 28 Januar 2020, 20:14:48
Hallo zusammen,

ich hab zum Thema Befehle einfacher an FHEM zu schicken und mit zu loggen mal etwas gebaut. Aber da gibt es noch ein kleines Problem. Aber zuerst zur Idee.

Wir erstellen eine Art SepiaGateway bestehend aus dummy / notify / log (evtl. auch ein doif):

dummy:
defmod SepiaGateway dummy
attr SepiaGateway room Steuerung->SEPIA
attr SepiaGateway sepia-room other
attr SepiaGateway sepia-set-cmds {"set":"<val>"}
attr SepiaGateway sepia-state-type text_raw
attr SepiaGateway sepia-type other


notify:
defmod notify_SepiaGateway notify SepiaGateway:* {\
my $ExecCommand = $EVENT;;\
    Log 1,"Sepia Gateway Exceute: $ExecCommand" ;;\
fhem("$ExecCommand");;\
}
attr notify_SepiaGateway group Steuerung
attr notify_SepiaGateway room Steuerung->SEPIA


logging:

defmod SepiaGateway_log FileLog ./log/SepiaGateway-%Y.log SepiaGateway
attr SepiaGateway_log group Logging
attr SepiaGateway_log icon time_note
attr SepiaGateway_log logtype text
attr SepiaGateway_log room Steuerung->SEPIA,System->Logging


Der Log,1 Eintrag bzw. das FileLog ist natürlich optional.

Im TEACH Modul sieht es dann wie folgt aus:

When I say ...     "Schicke Robo ins Wohnzimmer"
Smart device:    <other>;;Robo
Room:               <other>

Action:    <set>
Value:     {"value":"set Robo_Control Wohnzimmer", "type":"custom"}
Answer:  <1> fährt ins Wohnzimmer


Damit lässt sich dann auch der setreading Befehle der ja schon mal gewünscht war auch realisieren.

Zitat von: TRallala am 16 Januar 2020, 08:23:17
Eine nächste (große!) Erweiterung wäre, wenn man nicht nur  <set device [room] state> bedienen könnte, sondern auch readings setzen kann <setreading device [room] reading value>. 8)

Es gibt aber ein kleines Problem. Vielleicht hat jemand eine Idee. Ich sehe vermutlich nur den Wald vor lauter Bäumen nicht.

Das notify löst nur beim Wertwechsel aus im dummy, was ja sicher auch richtig ist, aber das kann man doch bestimmt irgendwie umgehen.
Wenn ich den Befehl der im value vom Teachmodul steht direkt als Befehl im fhem abschicke geht es mehrfach hinterheinander.
Evtl. eine Überprüfung die greift bei der externen Übergabe?

Vielleicht hat dazu jemand eine Idee.
[Edit]
Fügt man folgende Zeile am Ende des Notifys ein, wird der state überschrieben und somit ändert er sich beim nächsten Befehl, aber das geht sicher auch eleganter.
Zumal das natürlich auch einen Logeintrag generiert.

fhem("setreading $NAME state -");


Vielen Dank.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 28 Januar 2020, 22:23:06
Hallo,
jetzt wage ich mich endlich an das Projekt. Habe aber folgendes Problem. Ich kann mich nicht einloggen:

bei dieser Internetseite:
192.168.178.28:20721/tools/index.html

gebe ich bei Benutzername = Admin ein, welches ich in der Installation eingegeben habe.
bei Passwort= Assistant (aus der Installation)

Bei Authentication Server:
http://192.168.178.28:20721

Es heißt aber jedes Mal, dass der Login fehlgeschlagen ist. Was mache ich hier falsch? Über Hilfe freue ich mich sehr!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 29 Januar 2020, 15:37:11
ZitatEs gibt aber ein kleines Problem. Vielleicht hat jemand eine Idee. Ich sehe vermutlich nur den Wald vor lauter Bäumen nicht.

Das notify löst nur beim Wertwechsel aus im dummy, was ja sicher auch richtig ist, aber das kann man doch bestimmt irgendwie umgehen.
Wenn ich den Befehl der im value vom Teachmodul steht direkt als Befehl im fhem abschicke geht es mehrfach hinterheinander.
Evtl. eine Überprüfung die greift bei der externen Übergabe?

Vielleicht hat dazu jemand eine Idee.

Deine Config m.M.n genau so richtig und funktioniert(0hne sie getestet zu haben)
Wenn ich das richtig sehe, liegt das Verhalten bei sepia.
Sepia merkt sich den status und schickt einen Befehl nicht doppelt, bzw. "zwangsweise".


ZitatDamit lässt sich dann auch der setreading Befehle der ja schon mal gewünscht war auch realisieren.
::) hmm, hast du wohl recht.


Zitatgebe ich bei Benutzername = Admin ein, welches ich in der Installation eingegeben habe.
bei Passwort= Assistant (aus der Installation)

Assistant ist (hoffentlich) nicht dein Passwort... falls doch versuch mal als login name "uid1003"
Falls das auch nicht funzt: führe nochmal das Setup aus und lies genau wann welches passwort einzugeben ist.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 29 Januar 2020, 16:31:40
@TRallala
vielen Dank für deine Antwort:
Im setup wird man doch gefragt:
"Admin" --> Da kann ich nun was schreiben, z.B. Smarthome. Danach geht es direkt im Setup weiter und im Setup steht dann als nächstes "Assistant" und man muss wieder etwas eingeben sonst geht es ja nicht weiter im Setup, z.B. MeinPasswort. Ist das nun richtig oder wo genau muss ich ein Passwort eingeben? Ich dachte, dass diese beiden Abfragen entsprechend die login daten (Benutzername und Passwort) sind??? Gibt es auch eine Möglichkeit manuel das Passwort/ Benutzername auszulesen? Irgendwo muss es ja abgelegt sein?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 29 Januar 2020, 17:14:03
ZitatIch dachte, dass diese beiden Abfragen entsprechend die login daten (Benutzername und Passwort) sind???

Stimmt auch, deine beschreibung was du gemacht hast war  nur etwas irritierend.

Gibt es auch eine Möglichkeit manuel das Passwort/ Benutzername auszulesen? Irgendwo muss es ja abgelegt sein?
somehow gehasht in  SEPIA/sepia-assist-server/Xtensions/assist.properties
unter universal_superuser_pwd

hast du admin@sepia.localhost oder uid1003 als login versucht?

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 29 Januar 2020, 19:19:58
@TRallala
vielen Dank, die Datei hat mir sehr weitergeholfen. Ich kam jetzt endlich rein:

Der login-Benutzer ist in meinem Fall: "uid1003" (wie auch in der Datei angegeben)
Das Passwort ist bei mir "Admin"! Also die erste Abfrage im Setup. Ich verstehe aber nicht für was dann "Assistent", d.h. die zweite Abfrage im Setup ist?
Noch etwas. Das PW ist in der Datei verschlüsselt, was ja auch Sinn macht.
Aber wie gesagt es funktioniert jetzt bei mir.
Vielen Dank dir noch einmal!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 29 Januar 2020, 21:24:49
Zitat von: TRallala am 29 Januar 2020, 15:37:11
Deine Config m.M.n genau so richtig und funktioniert(0hne sie getestet zu haben)
Wenn ich das richtig sehe, liegt das Verhalten bei sepia.
Sepia merkt sich den status und schickt einen Befehl nicht doppelt, bzw. "zwangsweise".

@Florian kannst du was zu dem verhalten von Sepia sagen?

Ich hab nochmal ne Frage. Hat von euch schon jemand den Sepia Client im Firefox am laufen mit Nutzung des Mikrofons.
per https Verbindung via Reverse Proxy fragt zumindest der Firefox mal nach dem Zugriff auf das Mikrofon.

Sicherheitszugriff für Mikrofon und Kamera hat sich ja in den letzten Wochen Monaten in Chrome und Firefox geändert.

Nach Zugriffserlaubnis im Firefox und erneutem Klicken auf den Aufnahme Button im Sepia Client erhalte ich dann folgende Meldung


UI: Mikrofon nicht richtig erkannt oder Zugriff verweigert.


In den Einstellungen ist als custom Socket für ASR folgendes eingetragen:

ws://192.168.1.11:9000/stt/socket

Vielleicht ist auch dass das Problem? dann müsste ich das auch noch per SSL über den Proxy schieben?
(Fällt mir gerade beim schreiben hier so ein).

Jemand eine Idee was das sein könnte.

Danke.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 30 Januar 2020, 20:44:29
Hallo Zusammen,

sorry, dass ich gerade etwas hinterherhinke mit den Antworten, arbeite noch fleißig am nächsten Update in der Hoffnung es vielleicht Morgen noch zum release Kandidaten zu schaffen, bevor ich dann ab Samstag eine Woche im Urlaub bin ::) ;D

ZitatDas klingt gut, ist ja fast wie an Weihnachten, wenn man auf die Geschenke wartet als Kind. :)
Vielleicht könnte man die states / events auch an fhem weitergeben, um dort darauf reagieren zu können. Ein paar Ideen dazu:
- hotworderkennung pro device (in dem Fall als der client android / browser headless)
- was erkannt wurde
- Gerät Online / Offline
- Vielleicht bietet das Snips Addon: https://github.com/Thyraz/Snips-Fhem bzw.  ja noch ein paar Ideen, die man einbauen könnte.
Ich kann das sonst bei Gelenheit nochmal detailierter formulieren.

:) State und Event broadcasting ist definitiv ein Thema dabei. Für das Interface zwischen dem Client und dem "remote Terminal" nutze ich einen Node.js Server, den ich vor einer ganzen Weile mal gebaut hatte um Bluetooth Beacon Signale an SEPIA weiterzuleiten: CLEXI (https://www.npmjs.com/package/clexi). Damals dachte ich noch nicht über MQTT nach, aber man könnte eine Erweiterung bauen für CLEXI, die die Events an einen Broker durchreicht. Bisher werden Events für Login, Logout, speaking, listening, loading und idle weitergeleitet ans "Terminal".

ZitatDabei hätte ich noch einen Featurewunsch:
Wieviel Uhr ist es | Wie spät ist es | Was sagt die Uhr;;  command=chat;;  reply=Es ist <local_time_hhmm> Uhr;;
Schau mal hier ein, hier wurde entsprechend ein wenig was in dem Hinblick für Snips gebaut: https://forum.fhem.de/index.php/topic,89548.930.html
[Edit]
Hast du einen Beispielaufruf fürs Teachmodul über die API zum aus und einlesen?

Dieses Feature wäre sicherlich sinnvoll, habe ich mal auf die Liste gesetzt. Für die Antworten geht es übrigens schon ;-) reply=Antwort A||Antwort B||Antwort C;;
Die Antwort wird dann zufällig ausgewählt. Das ganze System mit Antworten ist eigentlich noch viel komplexer, aber später mehr dazu ^^.
Ein erstes, einfaches Beispiel habe ich gerade mal exportiert und eine neue Sektion in den SEPIA Docs erstellt  ;D ->click me<- (https://github.com/SEPIA-Framework/sepia-docs/blob/master/API/teach-server.md)

ZitatDann verwirrt natürlich der "Eintrag hinter <device>;; wenn er nicht greift, bzw. noch nicht greift :-)
Wenn die Bezeichnung ignoriert wird, dann hat er ja alles richtig gemacht, und nebenbei für etwas Verwirrung gesorgt.

Ganz ignoriert wird er nicht ... falls eine Zahl drin steht ::) Die Hoffnung ist natürlich diese Informationen später auch komplett zu verwenden, der Schritt dahin wäre auch gar nicht so weit, zumal für Werte aus dem Teach-Interface ja nicht mal ein robustes Fuzzy-Matching nötig wäre (das braucht man dann wieder wenn das ganze per natürlicher Sprache gesagt wird), aber braucht noch etwas Zeit ;-)

Zitat
mein Robo braucht als Befehl "zone Raumname". Komme ohne Service also momentan nicht drum herum für jeden Raum einen Befehl anzulernen.
schaut atm so aus:

When I say ...     "schicke Robo ins wohnzimmer"
Smart device:    <device>;;Staubsauger
Room:               empty

Action:    <set>
Value:     {"value":"zone Wohnzimmer", "type":"custom"}
Answer:  <1> fährt ins Wohnzimmer

in fhem:
sepia-name  Staubsauger
sepia-room  hallway
sepia-state-type text_raw
sepia-type  device

Funktioniert gut soweit - ist momentan allerdings auch mein einziges "device".

Ah sehr gut, genau so hatte ich mir das vorgestellt  8)
Ich gucke mir aber auf jeden Fall mal die bereits besprochenen Konflikte mit mehreren Devices etc. an.

Zitatich konnte es nun reproduzieren mit der to lower case schreibweise. Und wenn die custom config gefüllt ist:
{"set":"<val>","enable":"on","disable":"off"}
schreibt er alles klein, schreibt man es wieder rein, schreibt er gross.

"<val>" kam in diesem Fall aus einem eigenen Teach-UI Befehl? Ansonsten kann das ja zur Zeit glaub nur eine Zahl sein oder übersehe ich jetzt selber was? ^^

Zitatich hab zum Thema Befehle einfacher an FHEM zu schicken und mit zu loggen mal etwas gebaut. Aber da gibt es noch ein kleines Problem. Aber zuerst zur Idee.

Wir erstellen eine Art SepiaGateway bestehend aus dummy / notify / log (evtl. auch ein doif):
...

Interessante Sache! 8)
Ich kenne mich mit FHEM Skripten noch nicht so gut aus, aber ich interpretiere das so: Man schickt via SEPIA ein "set" Kommando an den Dummy und der Dummy "übersetzt" es intern via "Notify" in einen etwas anderen Befehl + Log? Passt das so?
Und das Problem ist jetzt, dass Notify nur ausgelöst wird, wenn sich der Befehl ändert? Oder schickt SEPIA erst gar nichts ab?
SEPIA hat ein "Feature", das hier eventuell von Bedeutung ist. Wenn der neue "set" state identisch ist mit dem alten führt SEPIA keine Aktion aus. Beim Licht das bereits auf 50% steht sagt SEPIA dann einfach "Das Licht ist bereits auf 50%". Geprüft wird das durch auslesen des state kurz vor dem neuen setzen. Vielleicht könntest du den alten state nach dem notify irgendwie modifizieren, damit er nicht mehr identisch ist? Optimalerweise so, dass SEPIA bei "Was ist der Status von ...?" noch etwas sinnvolles sagen kann ^^.

ZitatDer login-Benutzer ist in meinem Fall: "uid1003" (wie auch in der Datei angegeben)
Das Passwort ist bei mir "Admin"! Also die erste Abfrage im Setup. Ich verstehe aber nicht für was dann "Assistent", d.h. die zweite Abfrage im Setup ist?
Noch etwas. Das PW ist in der Datei verschlüsselt, was ja auch Sinn macht.
Aber wie gesagt es funktioniert jetzt bei mir.
Vielen Dank dir noch einmal!

Es gibt in SEPIA zwei "Core" User, den 'Admin' und 'Assistant'. 'Assistant' is quasi SEPIA. Der Witz ist, dass SEPIA sich im Chat Server genau so einloggt wie der User ;-) Der zweite Witz ist, dass alle Teach-UI Befehle und SDK Services, die der 'Assistant' User "lernt" ALLEN Usern zur Verfügung stehen.
Im Setup wird man deshalb nach 2 Passwörtern gefragt, einmal Admin und einmal Assistant. Login in den Control HUB ist üblicherweise dein eigener User oder Admin. Der Admin hat standardmäßig die ID "uid1003" der Assistant "uid1005".

ZitatIch hab nochmal ne Frage. Hat von euch schon jemand den Sepia Client im Firefox am laufen mit Nutzung des Mikrofons.
per https Verbindung via Reverse Proxy fragt zumindest der Firefox mal nach dem Zugriff auf das Mikrofon.

Firefox unterstützt leider die Spracherkennung via Web Speech API nicht, deshalb muss der Browser auf den SEPIA STT Server zurückgreifen (https://github.com/SEPIA-Framework/sepia-stt-server) :-| Der Client erkennt Firefox und schaltet deshalb beim Start automatisch von "native" ASR auf "socket" und erwartet dann die URL zu dem STT Server. Das Docker Image gibt es bisher leider nur für 64bit x64 Systeme. Einige Verbesserungen dazu stehen ganz oben auf der To-Do Liste ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 01 Februar 2020, 00:05:44
vielen Dank schon mal.
Ich habe noch eine Frage, die ich wahrscheinlich zu Beginn hätte stellen sollen... ::) : Kann ich SEPIA auch ohne FHEM betreiben? Ich habe auf dem Raspi nur PIVCCU3 und iobroker?
Habe in den Einstellungen die IP-Adresse von iobroker und den Namen eingetragen, (der server wird grün, aber es werden keine Devices gefunden). Bei der IP-Adresse von PIVCCU3 gleiches Problem...
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 01 Februar 2020, 02:27:14
Hallo :-)
SEPIA läuft bisher nur mit FHEM und openHAB als Smart Home Zentrale. ioBroker habe ich auf der To-Do Liste, mit PIVCCU3 hatte ich bisher keinen Kontakt.

----

So, ich bin leider nicht mehr ganz fertig geworden mit dem nächsten, offiziellen Release, aber hier mal eine recht stabile Preview: DOWNLOAD v2.4.1 Preview (http://b07z.net/downloads/SEPIA-Home_v2.4.1_b04.zip). Vielleicht hat ja Jemand Lust etwas damit zu experimentieren ^^.

Es sind viele der besprochenen Änderungen und Fixes drin, z.B.:

Außerdem gibt es 2 größere Erweiterungen:

Beides ist primär für eine "headless" Raspberry Pi Installation gedacht. Die Skripte dafür sind hier zu finden: https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/dev/sepia-client-installation/rpi

Wer das Installationsskript testen möchte muss im Schritt 'bash install_sepia_client.sh' noch ein 'dev' anhängen, da noch nichts im GitHub Master ist, sprich 'bash install_sepia_client.sh dev' (ich hoffe das klappt ^^, sonst müsste man die Client Daten manuell rüberkopieren nach ~/clexi/www/sepia/).

Ich habe das ganze bisher auf einem Raspberry Pi Zero und einem RPi 3 getestet, jeweils mit Raspbian Buster und ReSpeaker 2-Mic HAT bzw. einem USB Mikrofon (Amazon Basics Kondensator Mic) + Sound Output via Headphone Jack (Klinke Kabel).

Ab Morgen bin ich eine Woche im Urlaub und kann wahrscheinlich nur bedingt auf Fragen eingehen, werde aber sicher mal reinschauen ^^. Hoffe das Meiste erklärt sich von selbst ...  ??? ;D ... und ihr habt Lust zu testen ;-) Das "Remote Terminal" hat auch einen "help" Befehl =)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 01 Februar 2020, 08:36:10
ok. Danke. Dann werde ich wohl warten müssen... ;)
Viel Vergnügen im Urlaub :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 01 Februar 2020, 12:57:36
Zitat von: sepia am 30 Januar 2020, 20:44:29
Ein erstes, einfaches Beispiel habe ich gerade mal exportiert und eine neue Sektion in den SEPIA Docs erstellt  ;D ->click me<- (https://github.com/SEPIA-Framework/sepia-docs/blob/master/API/teach-server.md)

habe ich mir angeschaut, aber noch nicht 100% durchgestiegen, bzw. wie dann ein Befehl aussehen sollte. wie im Robo Beispiel. :-)
Vielleicht kannst du da die Syntax nochmal etwas genauer aufsplitten. Vielleicht finde ich in der Zwischenzeit noch was im Wiki.
Deine Textdateien die eingelesen werden hab ich auch geschaut. Da hab ich überlegt, ob du dort zu den Sprachfiles nicht noch eine _custom oder ähnlich hinterlegen kannst. da könnte man dann updatefähige eigene Bausteine reinpacken.

Zitat von: sepia am 30 Januar 2020, 20:44:29
Ganz ignoriert wird er nicht ... falls eine Zahl drin steht ::) Die Hoffnung ist natürlich diese Informationen später auch komplett zu verwenden, der Schritt dahin wäre auch gar nicht so weit, zumal für Werte aus dem Teach-Interface ja nicht mal ein robustes Fuzzy-Matching nötig wäre (das braucht man dann wieder wenn das ganze per natürlicher Sprache gesagt wird), aber braucht noch etwas Zeit ;-)

Ah sehr gut, genau so hatte ich mir das vorgestellt  8)
Ich gucke mir aber auf jeden Fall mal die bereits besprochenen Konflikte mit mehreren Devices etc. an.

Wäre gut ja (doppelte Lampen im gleichen Raum (Heizung und Rollos)

Zitat von: sepia am 30 Januar 2020, 20:44:29
"<val>" kam in diesem Fall aus einem eigenen Teach-UI Befehl? Ansonsten kann das ja zur Zeit glaub nur eine Zahl sein oder übersehe ich jetzt selber was? ^^

Ja genau so war es, würde ich dann in der nächsten Version testen.

Zitat von: sepia am 30 Januar 2020, 20:44:29
Interessante Sache! 8)
Ich kenne mich mit FHEM Skripten noch nicht so gut aus, aber ich interpretiere das so: Man schickt via SEPIA ein "set" Kommando an den Dummy und der Dummy "übersetzt" es intern via "Notify" in einen etwas anderen Befehl + Log? Passt das so?
Und das Problem ist jetzt, dass Notify nur ausgelöst wird, wenn sich der Befehl ändert? Oder schickt SEPIA erst gar nichts ab?
SEPIA hat ein "Feature", das hier eventuell von Bedeutung ist. Wenn der neue "set" state identisch ist mit dem alten führt SEPIA keine Aktion aus. Beim Licht das bereits auf 50% steht sagt SEPIA dann einfach "Das Licht ist bereits auf 50%". Geprüft wird das durch auslesen des state kurz vor dem neuen setzen. Vielleicht könntest du den alten state nach dem notify irgendwie modifizieren, damit er nicht mehr identisch ist? Optimalerweise so, dass SEPIA bei "Was ist der Status von ...?" noch etwas sinnvolles sagen kann ^^.

genau der Befehl wird dann komplett an den Dummy geschickt. (gleiches gilt dann für das setreading "Problem"), kurz danach hab ich die Anpassung gemacht (Vermutlich untergegangen) und es zumindest mit einem state - erweitert. Damit wird quasi innerhalb des notify erst der Befehl ausgeführt und dann der state zurück auf - gesetzt. (kann natürlich jeder andere Wert sein.
Ja das mit dem Zurücksetzen des state auf was sinnvolles hab ich auch schon überlegt. ist mir aber direkt nichts eingefallen. Das device wäre ja nur ein gateway proxy teach device. die Mehrfachantworten sind natürlich mal nicht schlecht für den ersten Schritt. Es wird gleichzeitig jeder befehl der über den Dummy geschickt wird, dann auch direkt ins mitangelegte LogDevice geschrieben. und zusätzlich nochmal ins Fhem log. (natürlich kein muss sondern optional)

Zitat von: sepia am 30 Januar 2020, 20:44:29
Firefox unterstützt leider die Spracherkennung via Web Speech API nicht, deshalb muss der Browser auf den SEPIA STT Server zurückgreifen (https://github.com/SEPIA-Framework/sepia-stt-server) :-| Der Client erkennt Firefox und schaltet deshalb beim Start automatisch von "native" ASR auf "socket" und erwartet dann die URL zu dem STT Server. Das Docker Image gibt es bisher leider nur für 64bit x64 Systeme. Einige Verbesserungen dazu stehen ganz oben auf der To-Do Liste ^^.

Das hab ich soweit verstanden, vielleicht habe ich mir hier auch etwas kompliziert ausgedrückt. Ich trage ja den websocket zum stt server ein. Danach versucht er auch auf das Mikrofon zuzugreifen. Es ist auch erlaubt und blinkt. Und dann gibt es aber nochmal den Textzugriff verweigert. Vor dem hinterlegen des STT Server gibt es zusätzlich die Meldung das er einen Server braucht und nicht finden kann.

Ist ggf. dem Firefox die Websocket Verbindung nicht sicher genug?

Vielen Dank und einen schönen Urlaub.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 01 Februar 2020, 13:14:28
Zitat von: sepia am 01 Februar 2020, 02:27:14
So, ich bin leider nicht mehr ganz fertig geworden mit dem nächsten, offiziellen Release, aber hier mal eine recht stabile Preview: DOWNLOAD v2.4.1 Preview (http://b07z.net/downloads/SEPIA-Home_v2.4.1_b04.zip). Vielleicht hat ja Jemand Lust etwas damit zu experimentieren ^^.

Würde gerne einer der Testkandidaten sein. Hat denn jemand sonst sepia im Docker am laufen und kann sagen ob es mit der dev vom github bzw. dem Preview Zip von hier auch Probleme gibt oder Problemlos läuft.

Aktuell ist es wieder so, dass ich im SmartHome hab ein Load Hub Info machen kann, und auch SEPIA Register wo er das global attr im Fhem aktualisiert.
Was aber nicht geht. er fragt keine devices mehr ab. Egal welcher Typ in der Dropdown gewählt wird.

Vielleicht hat jemand einen Tipp / Hinweis / Idee.

Vielen Dank und allen ein schönes Wochenende.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: lucca111 am 07 Februar 2020, 20:39:08
Hallo, ich bin auch Snips vorbelastet und  hab jetzt mal testweise einen Pi3 mit Raspian und Sepia zum laufen gebracht.  Nun habe keine Verbindung zu meinen FHEM Raspberry der in meinen lokalen Netzwerk ist. User und Passwort im Fhem Web hab ich mal auf "user:test12345" gestellt.
In Sepia dann "smarthome_hub_auth_type=Basic" ; "smarthome_hub_auth_data=dXNlcjp0ZXN0MTIzNDU=" wie im Beispiel gesetzt.
Leider werden keine Geräte gefunden. Vielleicht kann jemand helfen?

Gruß Lucca

GUI:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}

LOG:
22020-02-07 19:26:39 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"STRING":"<!DOCTYPE html PUBLIC \"   --->   bla,bla,bla  ---> body><\/html>","HTTP_REST_SUCCESS":true}


EDIT : GELÖST
Wenn man es richtig macht klappt es auch. Wieder mal dumm angestellt.
Beim "smarthome_hub_host" hatte ich "http://192.168.178.40:8083" eingetragen.
Muss aber natürlich noch "/fhem" mit hinten ran "http://192.168.178.40:8083/fhem"
Na mal sehen wie weit ich jetzt so komme.... :)

@Sepia Danke für dein super Arbeit hier.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: lucca111 am 08 Februar 2020, 14:28:24
Nun bin ich soweit das ich mein PS3eye als Mircophone über USB und normale Lautsprecher am 3,5 Klinke verkabelt habe.
Mit arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw kann ich eine Aufnahme machen und mit
aplay --format=S16_LE --rate=16000 out.raw die Aufnahme abpielen. Soweit so gut es funktioniert prima.
Im Sepia Chatfenster habe ich testweise mal ein Radiostream abgespielt, höre aber nichts. Wenn ich aufs Mikro klicke kommt die Meldung   
"UI: Mikrofon nicht richtig erkannt oder Zugriff verweigert."
Bei Snips musste ich den Snips-Audioserver vorher konfigurieren. Gibt es hier auch noch so etwas oder was habe ich übersehen?

gruß Lucca
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Februar 2020, 12:56:04
Hallo Florian,

hoffe du bist gut aus dem Urlaub zurück gekommen.

Zitat von: sepia am 01 Februar 2020, 02:27:14
Wer das Installationsskript testen möchte muss im Schritt 'bash install_sepia_client.sh' noch ein 'dev' anhängen, da noch nichts im GitHub Master ist, sprich 'bash install_sepia_client.sh dev' (ich hoffe das klappt ^^, sonst müsste man die Client Daten manuell rüberkopieren nach ~/clexi/www/sepia/).

Kannst du das Stichwort noch ins Wiki vom dev Eintragen. Das hab ich hier vemutlich gelesen und wahrgenommen, aber dann nicht mehr auf dem Schirm gehabt als ich das Setup durchlaufen bin.
Daher hat er natürlich nicht sauber gearbeitet, und immer fehlende settings.js Fehler geworfen.

https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/dev/sepia-client-installation/rpi (https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/dev/sepia-client-installation/rpi)

Vielleicht kannst du das nochmal ins Wiki schreiben, das man die Info auch direkt dort hat, ohne das man vorher hier den Kommentar gelesen haben muss.

Kann ich den Client im Trockenlauf testen? im Hub gibt es leider aktuell keine Meldungen wenn ich connect oder disconnect klicke.
Vielleicht hängt das auch mit meinem vorherigen Problem Docker vs. Dev Install zusammen.

Ich würde gerne weiter Testen, also wenn du mal 1-2 Tipps hast danke dir.

Zusatzhinweis: was Vermutlich das Hauptproblem ist: auf den Pis läuft bereits ein apache2 (max2play image) auf Port 80 (hab ich bereits auf Port 81 verschoben)
Vermutlich kommen sie sich dennoch in die quere. Dann beim Aufruf von Port 80 trotzdem die apache2 default seite angezeigt wird.

[EDIT] Vermutlich liegt es an der LXDE Umgebung, da hören dann meine Linuxkenntnisse langsam auf, Openbox hängt damit zusammen.
Wenn ich das richtig verstehe, müsste nur das openbox "autostart" auf die LXDE Umgebung angepasst werden.
Ich versuche mich dann mal daran.
Beim Blanko Raspi Lite läuft es durch.

Das Problem mit dem Server bleibt aber stehen.


Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 12 Februar 2020, 15:59:41
Hallo zusammen,
habe nun SEPIA am Laufen, funktioniert soweit auch alles wie es soll.
Nun stellt sich die Frage wie ich am einfachten den erkannten Text ("STT") an meine Talk2Fhem-Instanz senden kann.

Gibt es es eine Systemvariable die den Text zur Verfügung stellt?

Gruß,
Stefan
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Februar 2020, 18:39:10
Zitat von: whistler am 01 Februar 2020, 13:14:28
Würde gerne einer der Testkandidaten sein. Hat denn jemand sonst sepia im Docker am laufen und kann sagen ob es mit der dev vom github bzw. dem Preview Zip von hier auch Probleme gibt oder Problemlos läuft.

Aktuell ist es wieder so, dass ich im SmartHome hab ein Load Hub Info machen kann, und auch SEPIA Register wo er das global attr im Fhem aktualisiert.
Was aber nicht geht. er fragt keine devices mehr ab. Egal welcher Typ in der Dropdown gewählt wird.

Vielleicht hat jemand einen Tipp / Hinweis / Idee.

Vielen Dank und allen ein schönes Wochenende.

[UPDATE]: Ich habe nun mal komplett eine VM, anstatt des Docker Containers erstellt.
Leider gibt es dort immer noch die Zugriffsprobleme vom Hub wie oben schon beschrieben.

ZitatNo items found or no access to smart home system.

Wenn jemand eine Idee hat, immer her damit. Danke.


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 12 Februar 2020, 18:58:37
Also ich habe das ganze auf einem Ubuntus 18.04 Server in einem LXD Container (auch Ubuntu 18.04) laufen....ohne Probleme
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Februar 2020, 02:03:46
Hallo Zusammen :-)

Bin wohlbehalten aus dem Urlaub zurück und bereit den nächsten Release fertigzustellen :-).
Hat jemand noch gröbere Bugs entdeckt in der Zwischenzeit? ^^ (speziell im Zusammenhang mit FHEM).

In letzter Zeit hatte ich öfters von Problemen mit SEPIA im Docker Container oder einer VM gehört. Vielleicht kann ich da die kommenden Tage mal genauer drauf gucken bzw. zumindest einen neuen Docker Container testen und bauen.

Zitat von: whistler am 01 Februar 2020, 12:57:36habe ich mir angeschaut, aber noch nicht 100% durchgestiegen, bzw. wie dann ein Befehl aussehen sollte. wie im Robo Beispiel. :-)
Vielleicht kannst du da die Syntax nochmal etwas genauer aufsplitten. Vielleicht finde ich in der Zwischenzeit noch was im Wiki.
Deine Textdateien die eingelesen werden hab ich auch geschaut. Da hab ich überlegt, ob du dort zu den Sprachfiles nicht noch eine _custom oder ähnlich hinterlegen kannst. da könnte man dann updatefähige eigene Bausteine reinpacken.

Punkt 1 werde ich nachholen ^^. Punkt 2 ist eigentlich eine gute Idee, ich setze das mal auf die To-Do Liste :-)

Zitat von: whistler am 01 Februar 2020, 12:57:36Das hab ich soweit verstanden, vielleicht habe ich mir hier auch etwas kompliziert ausgedrückt. Ich trage ja den websocket zum stt server ein. Danach versucht er auch auf das Mikrofon zuzugreifen. Es ist auch erlaubt und blinkt. Und dann gibt es aber nochmal den Textzugriff verweigert. Vor dem hinterlegen des STT Server gibt es zusätzlich die Meldung das er einen Server braucht und nicht finden kann.

Bei meinen letzten Tests in Firefox lief das eigentlich ganz gut. Was die Browser allerdings nie zulassen ist, wenn du den Client von HTTPS startest und dann auf einen nicht-HTTPS (bzw. wss) Server zugreifen willst. Chrome(ium) hat allerdings zur Not einen Flag für "insecure origins". Ist das vielleicht bei dir der Fall? Welches Betriebssystem war das?

Zitat von: lucca111 am 08 Februar 2020, 14:28:24Nun bin ich soweit das ich mein PS3eye als Mircophone über USB und normale Lautsprecher am 3,5 Klinke verkabelt habe.
[...]
Bei Snips musste ich den Snips-Audioserver vorher konfigurieren. Gibt es hier auch noch so etwas oder was habe ich übersehen?
gruß Lucca

Hi Lucca,
einen Audioserver gibt es nicht bei SEPIA (nur einen TTS endpoint im kommenden Release), aber Audio im RPi ist extrem zickig irgendwie. Wie genau sieht dein Setup gerade aus?  RPi4 + Ps3eye + Klinke Ausgang? Das Ps3eye hat bei mir immer ziemlich Probleme gemacht :-( Hast du eines der neuen Skripts von ->hier<- (https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/dev/sepia-client-installation/rpi) benutzt um einen SEPIA RPi Client aufzusetzen?

Zitat von: whistler am 12 Februar 2020, 12:56:04
Kannst du das Stichwort noch ins Wiki vom dev Eintragen. Das hab ich hier vemutlich gelesen und wahrgenommen, aber dann nicht mehr auf dem Schirm gehabt als ich das Setup durchlaufen bin.

Hab ich schnell mal angefügt. Sobald das ganze im Master ist muss ich den 'wget' Link allerdings eh auch noch mal anpassen und nehme es dann wieder raus ;-)

Zitat von: whistler am 12 Februar 2020, 12:56:04
Zusatzhinweis: was Vermutlich das Hauptproblem ist: auf den Pis läuft bereits ein apache2 (max2play image) auf Port 80 (hab ich bereits auf Port 81 verschoben)
Vermutlich kommen sie sich dennoch in die quere. Dann beim Aufruf von Port 80 trotzdem die apache2 default seite angezeigt wird.

[EDIT] Vermutlich liegt es an der LXDE Umgebung, da hören dann meine Linuxkenntnisse langsam auf ...

Ich würde zur Zeit dringend empfehlen einen SEPIA Client nur auf einem ganz frisch installierten Raspbian Buster Lite zu testen. Konflikte mit anderen Packages sind nicht unwahrscheinlich, vor allem im Audio-System. Apache und Nginx gleichzeitig ist vermutlich auch nicht so gut ^^. Ich hatte vor einiger Zeit auch mal eine Version mit LXDE konfiguriert, das habe ich der Einfachheit halber aber zunächst mal auf die Warteliste gesetzt.

Zitat von: Haecksler am 12 Februar 2020, 15:59:41
Hallo zusammen,
habe nun SEPIA am Laufen, funktioniert soweit auch alles wie es soll.
Nun stellt sich die Frage wie ich am einfachten den erkannten Text ("STT") an meine Talk2Fhem-Instanz senden kann.

Hi Stefan,
mit den neuen RPi Clients, die zur Zeit noch im Dev Branch sind, könnte man theoretisch auch den erkannten Text broadcasten (bisher werden da nur die "states" des Assistenten übertragen um in Zukunft z.B. LEDs am RPi zu triggern). Ansonsten gibt es auch noch einen MQTT Demo im SEPIA Extensions Repo, den du über den SEPIA Control HUB installieren kannst (https://github.com/SEPIA-Framework/sepia-docs/wiki/Creating-your-own-smart-service-%28aka%3A-skill-or-voice-action%29#code-ui-inside-the-control-hub) und der einige Smart Home Befehle erkennen kann wenn der Satz mit "mqtt" anfängt oder endet.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Februar 2020, 13:10:30
Willkommen zurück

Zitat von: sepia am 13 Februar 2020, 02:03:46
Hat jemand noch gröbere Bugs entdeckt in der Zwischenzeit? ^^ (speziell im Zusammenhang mit FHEM).

Bei mir bleiben noch die HUB Fehlermeldungen, wenn ich die Devices auflisten will. (Register HUB klappt aber nach wie vor)
Sowohl im Docker, als auch in der frisch installierten VM. Ich hab beim kopieren der custom propertie Files gesehen, das die "originale" mittlerweile gewachsen sind, ich nehme aber an, das was nicht in der custom zieht wird aus der normalen nachgeladen. (Jeweils der DEV Stand) Im Log kann ich nichts finden, oder ich gucke an der falschen stelle.

Zitat von: sepia am 13 Februar 2020, 02:03:46
In letzter Zeit hatte ich öfters von Problemen mit SEPIA im Docker Container oder einer VM gehört. Vielleicht kann ich da die kommenden Tage mal genauer drauf gucken bzw. zumindest einen neuen Docker Container testen und bauen.

Punkt 1 werde ich nachholen ^^. Punkt 2 ist eigentlich eine gute Idee, ich setze das mal auf die To-Do Liste :-)

Zitat von: sepia am 13 Februar 2020, 02:03:46
Bei meinen letzten Tests in Firefox lief das eigentlich ganz gut. Was die Browser allerdings nie zulassen ist, wenn du den Client von HTTPS startest und dann auf einen nicht-HTTPS (bzw. wss) Server zugreifen willst. Chrome(ium) hat allerdings zur Not einen Flag für "insecure origins". Ist das vielleicht bei dir der Fall? Welches Betriebssystem war das?
Windows 10 64 bit, im Edge geht es, wenn ich dann direkt die URL Nehme und den ASR angebe. Aber der Fragt jedesmal den Zugriff aufs Mikrofon an. Im Firefox will es aktuell gar nicht, Da hab ich die Auswahl nicht für die ASM (Not support) hab ich mit der 0.21 Web App die aktuellste Version.

Zitat von: sepia am 13 Februar 2020, 02:03:46
Ich würde zur Zeit dringend empfehlen einen SEPIA Client nur auf einem ganz frisch installierten Raspbian Buster Lite zu testen. Konflikte mit anderen Packages sind nicht unwahrscheinlich, vor allem im Audio-System. Apache und Nginx gleichzeitig ist vermutlich auch nicht so gut ^^. Ich hatte vor einiger Zeit auch mal eine Version mit LXDE konfiguriert, das habe ich der Einfachheit halber aber zunächst mal auf die Warteliste gesetzt.
Hast du da zufällig die Skripte vom Testen noch und würdest sie als not supported zur Verfügung stellen, ich hab mal testweise einen PI Blank installiert, aber in der Endversion möchte ich natürlich nicht alle Pis neu installieren versteht sich denke ich.
Apache und NGinx kommen sich nur noch in die Quere, weil er versucht zusätzlich in der Config die Defaultsite zu laden. Ich konnte es soweit einschränken das der Nginx als Proxy läuft und wenn ich den Node Server Manuell per ssh aufrufe klappt auch die Anzeige im Browser das er ihn erreicht über den nginx reverse proxy. es Findet natürlich kein Audio statt.

Zitat von: sepia am 13 Februar 2020, 02:03:46
Hi Stefan,
mit den neuen RPi Clients, die zur Zeit noch im Dev Branch sind, könnte man theoretisch auch den erkannten Text broadcasten (bisher werden da nur die "states" des Assistenten übertragen um in Zukunft z.B. LEDs am RPi zu triggern). Ansonsten gibt es auch noch einen MQTT Demo im SEPIA Extensions Repo, den du über den SEPIA Control HUB installieren kannst (https://github.com/SEPIA-Framework/sepia-docs/wiki/Creating-your-own-smart-service-%28aka%3A-skill-or-voice-action%29#code-ui-inside-the-control-hub) und der einige Smart Home Befehle erkennen kann wenn der Satz mit "mqtt" anfängt oder endet.
Die Leds vom respeaker Modul wären auch Schick, sofern du die nicht sowieso auch meintest.


Vielen Dank.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Februar 2020, 16:28:33
Hallo Florian,

nochmal als Ergänzung zu den Tests mit dem headless Client (oder Display Variante).

Zitat von: sepia am 13 Februar 2020, 02:03:46
Ich würde zur Zeit dringend empfehlen einen SEPIA Client nur auf einem ganz frisch installierten Raspbian Buster Lite zu testen. Konflikte mit anderen Packages sind nicht unwahrscheinlich, vor allem im Audio-System. Apache und Nginx gleichzeitig ist vermutlich auch nicht so gut ^^. Ich hatte vor einiger Zeit auch mal eine Version mit LXDE konfiguriert, das habe ich der Einfachheit halber aber zunächst mal auf die Warteliste gesetzt.
Hast du da zufällig die Skripte vom Testen noch und würdest sie als not supported zur Verfügung stellen, ich hab mal testweise einen PI Blank installiert, aber in der Endversion möchte ich natürlich nicht alle Pis neu installieren versteht sich denke ich.
Apache und NGinx kommen sich nur noch in die Quere, weil er versucht zusätzlich in der Config die Defaultsite zu laden. Ich konnte es soweit einschränken das der Nginx als Proxy läuft und wenn ich den Node Server Manuell per ssh aufrufe klappt auch die Anzeige im Browser das er ihn erreicht über den nginx reverse proxy. es Findet natürlich kein Audio statt.

[UPDATE]
Ich hab jetzt dein openbox autostart skript in ein bash skript gepackt und lasse es nun als display starten. Dann kommt auch der chromium mit localhost:8080 hoch. einloggen kann ich mich, wenn ich die Server URL wie bei der App ganz normal eintrage.
Bekomme aber bei dem Versuch vom HUB aus Remote zuzugreifen folgende Meldung:
CLEXI closed. Reason: 1005
CLEXI server says welcome. Info: {"msg":"not authorized","version":"CLEXI Node.js server v0.8.1"}
CLEXI connected
CLEXI connecting ...


Die gleiche Meldung erhalte ich auch beim Zugriff vom raspian lite Test Client, also die Testinstallation raspian lite + headless Client.

Kleine Frage am Rande: Sehe ich das richtig das du im openbox autostart skript aktuell noch fest das headless als 1 mitgibst?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Februar 2020, 18:59:10
Zitat von: whistler am 13 Februar 2020, 13:10:30Bei mir bleiben noch die HUB Fehlermeldungen, wenn ich die Devices auflisten will. (Register HUB klappt aber nach wie vor) Sowohl im Docker, als auch in der frisch installierten VM. Ich hab beim kopieren der custom propertie Files gesehen, das die "originale" mittlerweile gewachsen sind, ich nehme aber an, das was nicht in der custom zieht wird aus der normalen nachgeladen. (Jeweils der DEV Stand) Im Log kann ich nichts finden, oder ich gucke an der falschen stelle.

Hi Basti. Ich fasse noch mal kurz zusammen um sicher zu gehen:
- Du hast jeweils eine SEPIA Home Installation als Docker Container (nachträglich upgedated) und eine als VM.
- Beide Systeme können "GET DEVICES" nicht ausführen, "Register" klappt aber
- Ein drittes (?) System ohne virtuelle Umgebung funktioniert ohne Fehler (?)

Kannst du über den Chat im Client denn die Geräte steuern?

Bzgl. properties files: Welche der 3 Versionen (custom, test und "default") geladen wird hängt vom Start-Parameter ab, der für die jeweilige JAR Datei benutzt wird. In der SEPIA-Home Release-Version wird standardmäßig "--my" angehängt, was dazu führt, dass die xx.custom.properties geladen wird. In der letzten Version sind glaube ich 2 oder 3 Einträge für den neuen TTS Endpoint hinzugekommen, falls die in deiner nicht existieren wird aber einfach intern der Standardwert gesetzt.

Zitat von: whistler am 13 Februar 2020, 13:10:30Windows 10 64 bit, im Edge geht es, wenn ich dann direkt die URL Nehme und den ASR angebe. Aber der Fragt jedesmal den Zugriff aufs Mikrofon an. Im Firefox will es aktuell gar nicht, Da hab ich die Auswahl nicht für die ASM (Not support) hab ich mit der 0.21 Web App die aktuellste Version.

Ist das schon der neuste Edge, der auf Chromium basiert? Der kann nämlich theoretisch die "native" ASR, aber praktisch ist das buggy, weil Microsoft es scheinbar nicht vollständig implementiert hat. Der SEPIA STT Server (ASR engine "custom") müsste aber auf Firefox und Edge laufen. Die wiederholte Frage nach Mikrofon Zugriff kommt normalerweise, wenn du kein SSL Zertifikat hast und nicht via Localhost arbeitest (localhost oder 127.0.0.1). Es gibt mehrere Möglichkeiten dieses Problem zu umgehen, z.B. selbst signierte Zertifikate, die man im Proxy reinlädt oder gleich echte Zertifikate (im SEPIA Ordner gibt es ein paar Hilfestellungen für Duck DNS + Let's Encrypt). Man könnte auch auf dem System mit Browser einen Proxy nutzen und dann über Localhost arbeiten. Die Sache mit den Zertifikaten war schon immer eins der nervigsten Problemchen, deswegen arbeiten die neuen "headless" Clients alle auf Localhost.
In Firefox funktioniert zur Zeit gar nichts bei dir?

Zitat von: whistler am 13 Februar 2020, 13:10:30Hast du da zufällig die Skripte vom Testen noch und würdest sie als not supported zur Verfügung stellen, ich hab mal testweise einen PI Blank installiert, aber in der Endversion möchte ich natürlich nicht alle Pis neu installieren versteht sich denke ich...

Ich habe gerade mal gesucht und dabei festgestellt, dass ich mich vertan hab, es war LightDM als Login Manager, nicht LXDE :o
Theoretisch läuft auch alles irgendwie mit der Raspbian Desktop Installation aber ich kann die Clients momentan offiziell nur auf sauberem Raspbian Lite unterstützen, mit genau den Packages, die das Installationsskript vorsieht. Ich verstehe, dass du deine RPis nicht alle neu installieren willst, aber ich würde eh nicht empfehlen irgendwelche andere Software auf den gleichen Geräten laufen zu lassen, höchstens vielleicht bei einem RPi4 ab 2 GB RAM. Ich habe in den letzten Wochen meine PIs so oft neu installiert, dass eine komplette Installation vom Formatieren der SD Karte bis zum ersten "SEPIA wie gehts" nicht länger als 5min dauert (die Zeit nicht mitgerechnet wo das Skript automatisch arbeitet) ;D

Zitat von: whistler am 13 Februar 2020, 13:10:30
Die Leds vom respeaker Modul wären auch Schick, sofern du die nicht sowieso auch meintest.

Die hatte ich im Sinn ;-)

Zitat von: whistler am 13 Februar 2020, 13:10:30
CLEXI server says welcome. Info: {"msg":"not authorized","version":"CLEXI Node.js server v0.8.1"}

Das könnte ein Problem mit den letzten Änderungen im Dev Branch von Gestern sein. Der CLEXI Server kann optional jetzt die Server ID als Passwort nutzen. Wenn deine anderen Tools 1-2 Tage älter sind schicken die aber die entsprechenden Header zum authentifizieren noch nicht mit. Guck mal in "~/clexi/settings.json" ob es da einen Eintrag "idIsPassword":true gibt und setz den auf "false".

Zitat von: whistler am 13 Februar 2020, 13:10:30
Kleine Frage am Rande: Sehe ich das richtig das du im openbox autostart skript aktuell noch fest das headless als 1 mitgibst?

Ja, aber je nachdem welche Version der Installationsskripts du hast müsste es eine "setup.sh" geben, die als Option das Switchen zwischen "headless" und "display" ermöglicht (die macht aber auch nichts anderes als diesen Wert auf 1 oder 0 zu setzten). Vorsicht: Wenn der Wert auf "display" steht, dann verbindet sich der Client nicht mehr automatisch mit dem "remote terminal" (CLEXI Server) falls die Daten dazu nicht noch zufällig gespeichert sind und man muss alle Einstellungen über das Display vornehmen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Februar 2020, 19:53:19
Zitat von: sepia am 13 Februar 2020, 18:59:10
Hi Basti. Ich fasse noch mal kurz zusammen um sicher zu gehen:
- Du hast jeweils eine SEPIA Home Installation als Docker Container (nachträglich upgedated) und eine als VM.
- Beide Systeme können "GET DEVICES" nicht ausführen, "Register" klappt aber
- Ein drittes (?) System ohne virtuelle Umgebung funktioniert ohne Fehler (?)
Hi Florian,

einen Docker Cointainer (Stand 2.40 vom 31.12.2019) da geht die Funktion mit dem HUB.
Alles was danach kommt geht nicht mehr (gleicher Docker Container mit DEV Skript compiliert und aktualisiert)
Die VM ist ein Debian Buster und ich installiert dort mit einem Sepia User. Ich wollte es entgegen deiner Anleitung unter /opt installieren, aber das klappt nicht so gut.
dann die Rechte teilweise beim Durchlaufen fehlen (anderes Thema). Aber mit deinen Default Pfaden konnte ich installieren. Hier auch der aktuellste Stand vom dev.

Ja es geht beim DEV Stand jeweils das Load HUB, dann die "LED" grün. Und bei Register Sepia muss ich die Änderung im FHEM Speichert mit attr grobal.
Aber beim GET DEVICES sagt er geht nicht.

Ein Drittes System gibt es nicht (ich switche zwischen master und dev hin und her), aber solangsam wird es dann unübersichtlich :-)
Die VM war dafür gedacht zu gucken ob der Fehler dort weg ist. Ich hab mir dein Backup Skript abgeschaut, um zu gucken wie du die "Daten" kopierst.

Daher wäre in dem Falle ja ein Log oder sowas in der Art gut, um zu wissen wo er abbiegt, oder eben nicht.

Es gibt den STT Server noch in einer weiteren VM. Der läuft dort auch. Da ging es von der Handy APP (Android) Auch immer. Auch wenn die Erkennung schwangt, aber das ist ein anderes Thema.

Zitat von: sepia am 13 Februar 2020, 18:59:10
Kannst du über den Chat im Client denn die Geräte steuern?
Nein beim steuern im Chat kommt die sinngemäße Meldung (Leider gibt es ein Problem mit dem Smarthome HUB)

Zitat von: sepia am 13 Februar 2020, 18:59:10
Bzgl. properties files: Welche der 3 Versionen (custom, test und "default") geladen wird hängt vom Start-Parameter ab, der für die jeweilige JAR Datei benutzt wird. In der SEPIA-Home Release-Version wird standardmäßig "--my" angehängt, was dazu führt, dass die xx.custom.properties geladen wird. In der letzten Version sind glaube ich 2 oder 3 Einträge für den neuen TTS Endpoint hinzugekommen, falls die in deiner nicht existieren wird aber einfach intern der Standardwert gesetzt.
Dann passt meine Vermutung ja soweit.

Zitat von: sepia am 13 Februar 2020, 18:59:10
Ist das schon der neuste Edge, der auf Chromium basiert? Der kann nämlich theoretisch die "native" ASR, aber praktisch ist das buggy, weil Microsoft es scheinbar nicht vollständig implementiert hat. Der SEPIA STT Server (ASR engine "custom") müsste aber auf Firefox und Edge laufen. Die wiederholte Frage nach Mikrofon Zugriff kommt normalerweise, wenn du kein SSL Zertifikat hast und nicht via Localhost arbeitest (localhost oder 127.0.0.1). Es gibt mehrere Möglichkeiten dieses Problem zu umgehen, z.B. selbst signierte Zertifikate, die man im Proxy reinlädt oder gleich echte Zertifikate (im SEPIA Ordner gibt es ein paar Hilfestellungen für Duck DNS + Let's Encrypt). Man könnte auch auf dem System mit Browser einen Proxy nutzen und dann über Localhost arbeiten. Die Sache mit den Zertifikaten war schon immer eins der nervigsten Problemchen, deswegen arbeiten die neuen "headless" Clients alle auf Localhost.
In Firefox funktioniert zur Zeit gar nichts bei dir?
Edge Version 11.0.18362.476 21.12.2019. Das ist wohl noch die alte Version. Ist auch nicht so schlimm. habe gerade nochmal getestet. per ASR Server (ws://192.168.1.x:9000/stt/socket)
Fragt er wenn runden knopf fürs Mikro klicken im Browser ob ich Zugriff haben darf aufs Mikrofon.
Kann ich bei gelegenheit mal Updaten und testen auf dem neuen Edge.
[EDIT] Der neue Edge bietet nur noch Native an, und ich kann nicht custom auswählen.

Firefox, funktionierte bisher zumindest soweit das ich ASR Custom eintragen konnte, da kommt jetzt die Meldung not supported. Also keine Auswahl.

Die Version 2.4.0 habe ich per apache als Reverse Proxy laufen. Du erinnerst dich vielleicht. Da läuft dann auch der chat etc. alles drüber. Aber der sepia STT Server, läuft weiterhin intern per IP der müsste vermutlich auch noch über den Reverse Proxy mit angesprochen werden. Ich habe es auch versucht, qausi die Einträge für den Chat in der config zu "Klonen" und anzupassen bin da aber gescheitert.

Dann benötigt sowohl die HTTPS Kommunikation als auch der wss ein Zertifikat hab ich das richtig verstanden?
Also müsste der STT Server auch noch hinter den Proxy, was ja sinn macht, extern hab ich am Handy bisher immer nen VPN auf.

[ABER] Es gibt allerdings auch ein aber, die User Steuerung im Adminbereich sagt dann zum Beispiel bearbeiten geht nicht, weil nicht im Privaten Netzwerk.

@klausw: vielleicht hast du hier noch eine idee oder tipp? Du hattest ja die erste websocket Konfiguration für den apache reverse Proxy auch schon zurecht gebaut.
Das man das auch für STT Server Weitergabe hinbekommt.

Zitat von: sepia am 13 Februar 2020, 18:59:10
Ich habe gerade mal gesucht und dabei festgestellt, dass ich mich vertan hab, es war LightDM als Login Manager, nicht LXDE :o
Theoretisch läuft auch alles irgendwie mit der Raspbian Desktop Installation aber ich kann die Clients momentan offiziell nur auf sauberem Raspbian Lite unterstützen, mit genau den Packages, die das Installationsskript vorsieht. Ich verstehe, dass du deine RPis nicht alle neu installieren willst, aber ich würde eh nicht empfehlen irgendwelche andere Software auf den gleichen Geräten laufen zu lassen, höchstens vielleicht bei einem RPi4 ab 2 GB RAM. Ich habe in den letzten Wochen meine PIs so oft neu installiert, dass eine komplette Installation vom Formatieren der SD Karte bis zum ersten "SEPIA wie gehts" nicht länger als 5min dauert (die Zeit nicht mitgerechnet wo das Skript automatisch arbeitet) ;D
Naja, wenn da nicht drauf laufen würde wäre es so einfach das stimmt. Ich habe natürlich verständnis dafür das du nur den einen weg supporten kannst. Ich hab daher auf einer SD Karte eine frische Zweitinstallation gemacht, und da komm ich ja auch fast bis zum Ziel.

[EDIT] https://github.com/SEPIA-Framework/sepia-docs/issues/9#issuecomment-546301426 (https://github.com/SEPIA-Framework/sepia-docs/issues/9#issuecomment-546301426) Ist das vorgehen mit dem neuen Client auch ungültig? :-)

Das wäre quasi mein Testclient:

Zitat von: sepia am 13 Februar 2020, 18:59:10
Das könnte ein Problem mit den letzten Änderungen im Dev Branch von Gestern sein. Der CLEXI Server kann optional jetzt die Server ID als Passwort nutzen. Wenn deine anderen Tools 1-2 Tage älter sind schicken die aber die entsprechenden Header zum authentifizieren noch nicht mit. Guck mal in "~/clexi/settings.json" ob es da einen Eintrag "idIsPassword":true gibt und setz den auf "false".
Den gleichen gedanken hatte ich heute mittag beim schauen der Änderungen auch,
bisher noch keine Zeit zum testen gehabt. Habs gerade nachgeholt. Der Raspian Lite Client spricht auch brav seine zwei Sätze an Anfang. Und click auf connect scannt er fleissig scheinbar schon Bluetooth Umgebung, Zumindest wird dort Blau angedruckt.
Das scheint also zu Klappen, ich guck dann mal mit meinen "not supportet" Client weiter.
[EDIT] Der funktioniert auch soweit und verbindet sich auch per Remote Console und schreibt fleissig auch Bluetooth Erkennungen auf.

Aber vielleicht hab ich es überlesen. Wie spreche ich den Client nun an? Ist dort Wakeword integriert? Oder bin ich doch gedanklich schon einen Schritt zu weit? Bei mir ist Respeaker Mic 2 drauf.

Zitat von: sepia am 13 Februar 2020, 18:59:10
Ja, aber je nachdem welche Version der Installationsskripts du hast müsste es eine "setup.sh" geben, die als Option das Switchen zwischen "headless" und "display" ermöglicht (die macht aber auch nichts anderes als diesen Wert auf 1 oder 0 zu setzten). Vorsicht: Wenn der Wert auf "display" steht, dann verbindet sich der Client nicht mehr automatisch mit dem "remote terminal" (CLEXI Server) falls die Daten dazu nicht noch zufällig gespeichert sind.

Okay ich hab die Stelle gesucht, aber dann wohl einfach übersehen.

Noch eine kurze Frage: SEPIA Server in dem Zusammenhang, ist ja schon noch noch am Client mit Clexi gemeint oder? Sobald ich nämlich wirklich die SEPIA Server IP Eintrage funktioniert es nicht mehr.

Ich hoffe ich konnte genügend Input liefern.

Vielen Dank und einen schönen Abend.

PS: Das Problem mit dem HUB GET DEVICE hätte bei mir gerade die höchste Prio :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 13 Februar 2020, 20:14:31
Zitat
Hi Stefan,
mit den neuen RPi Clients, die zur Zeit noch im Dev Branch sind, könnte man theoretisch auch den erkannten Text broadcasten (bisher werden da nur die "states" des Assistenten übertragen um in Zukunft z.B. LEDs am RPi zu triggern). Ansonsten gibt es auch noch einen MQTT Demo im SEPIA Extensions Repo, den du über den SEPIA Control HUB installieren kannst und der einige Smart Home Befehle erkennen kann wenn der Satz mit "mqtt" anfängt oder endet.
Habe ich getestet und funktioniert soweit, allerdings ist es nicht einfach für mich den Java-Code zu verstehen.
Wie komme ich an den normalizedText? Über nluResult?
Noch ein Hinweis, mit meinem Standarduser (Roles: user,smarthomeadmin,smarthomeguest) habe ich keine Berechtigung das MqttDemo zu laden und beim Admin kann keine Rolle hinzugefügt werden, d.h. ich musste zum Testen den Code anpassen....ist das so gedacht?

Lg
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Februar 2020, 21:28:46
Zitat von: whistler am 13 Februar 2020, 19:53:19
einen Docker Cointainer (Stand 2.40 vom 31.12.2019) da geht die Funktion mit dem HUB.
Alles was danach kommt geht nicht mehr (gleicher Docker Container mit DEV Skript compiliert und aktualisiert)

Ok interessant, ich überlege noch mal was sich da geändert haben könnte.

Zitat von: whistler am 13 Februar 2020, 19:53:19
Die VM ist ein Debian Buster und ich installiert dort mit einem Sepia User. Ich wollte es entgegen deiner Anleitung unter /opt installieren, aber das klappt nicht so gut.

Ja, einerseits gibt es da Probleme mit den Zugriffsrechten und dazu kommt noch, dass in manchen Linux Scripts zum Starten etc. der Pfad "~/SEPIA" hardcoded ist :-[ ... das ist sicher nicht optimal aber wurde irgendwann nötig. Ich muss das irgendwann mal durch eine Umgebungsvariable ersetzten. Generell gilt: abseits der Instruktionen aus den "Anleitungen" bewegt man sich auf dünnes Eis ::) :-X ;)

Zitat von: whistler am 13 Februar 2020, 19:53:19
[EDIT] Der neue Edge bietet nur noch Native an, und ich kann nicht custom auswählen.
:o das verwirrt mich jetzt total, der ist ja im Grunde identisch mit Chrome/Chromium.

Zitat von: whistler am 13 Februar 2020, 19:53:19...Aber der sepia STT Server, läuft weiterhin intern per IP der müsste vermutlich auch noch über den Reverse Proxy mit angesprochen werden. Ich habe es auch versucht, qausi die Einträge für den Chat in der config zu "Klonen" und anzupassen bin da aber gescheitert.

Irgendwo hatte ich dazu mal was geschrieben, finde es aber selber nicht mehr ??? Vielleicht hilft die Nginx Config aus dem STT Server weiter: https://github.com/SEPIA-Framework/sepia-stt-server/blob/master/nginx_config/stt

Zitat von: whistler am 13 Februar 2020, 19:53:19
Dann benötigt sowohl die HTTPS Kommunikation als auch der wss ein Zertifikat hab ich das richtig verstanden?
Also müsste der STT Server auch noch hinter den Proxy, was ja sinn macht, extern hab ich am Handy bisher immer nen VPN auf.

Den Android Client interessiert das alles nicht, aber sobald du im Browser bist muss der entweder über eine localhost Adresse laufen (ich hoste mir den Client z.B. oft via lokalem Webserver auf meinem PC) oder alles über HTTPS machen.

Zitat von: whistler am 13 Februar 2020, 19:53:19
[ABER] Es gibt allerdings auch ein aber, die User Steuerung im Adminbereich sagt dann zum Beispiel bearbeiten geht nicht, weil nicht im Privaten Netzwerk.

Ja stimmt, das Sicherheitsfeature müsstest du dann in den Server settings mit der Option "allow_global_dev_requests":true deaktivieren wenn du von Extern drauf willst. Im eigenen Netzwerk kannst du aber immer direkt über http://[IP]... auf den Server gehen. Im Control HUB brauchst du ja kein HTTPS.

Zitat von: whistler am 13 Februar 2020, 19:53:19
[EDIT] https://github.com/SEPIA-Framework/sepia-docs/issues/9#issuecomment-546301426 (https://github.com/SEPIA-Framework/sepia-docs/issues/9#issuecomment-546301426) Ist das vorgehen mit dem neuen Client auch ungültig? :-)

Teilweise findet sich das in der "~/.config/openbox/autostart" wieder, kannst du aber ignorieren für die neue Version.

Zitat von: whistler am 13 Februar 2020, 19:53:19
Aber vielleicht hab ich es überlesen. Wie spreche ich den Client nun an? Ist dort Wakeword integriert? Oder bin ich doch gedanklich schon einen Schritt zu weit? Bei mir ist Respeaker Mic 2 drauf.

In der Einstellung "Message typ: SEPIA client" kannst du mal den Befehl "call test" versuchen (vorher richtige Device ID ins Feld darüber eintragen).
In der Einstellung "Remote Button" kannst du das Mikrofon triggern mit "deviceId [ID] button mic".
Wake-word ist standardmäßig in der "~/clexi/www/sepia/settings.js" deaktiviert und kann aktiviert werden über '"useWakeWord": true, "autoloadWakeWord": true'. Danach ist ein Neustart des Clients über das "remote terminal" nötig via "call reload".

Zitat von: whistler am 13 Februar 2020, 19:53:19
Noch eine kurze Frage: SEPIA Server in dem Zusammenhang, ist ja schon noch noch am Client mit Clexi gemeint oder? Sobald ich nämlich wirklich die SEPIA Server IP Eintrage funktioniert es nicht mehr.

Meinst du die Option aus dem Client "setup.sh" Skript bzw. den Eintrag "host-name" aus der "~/clexi/www/sepia/settings.js"? Da müsste schon die IP Adresse deines SEPIA Servers rein, bzw. genau das, was du sonst im Client als "host" angibst (in diesem Fall ist kein HTTPS nötig).

Zitat von: whistler am 13 Februar 2020, 19:53:19
Ich hoffe ich konnte genügend Input liefern.

Vielen Dank und einen schönen Abend.

Deine Tests helfen auf jeden Fall sehr weiter, danke und ebenfalls schönen Abend :-)

Zitat von: Haecksler am 13 Februar 2020, 20:14:31
Habe ich getestet und funktioniert soweit, allerdings ist es nicht einfach für mich den Java-Code zu verstehen.
Wie komme ich an den normalizedText? Über nluResult?

Cool! 8) ;D
Ja, über 'nluResult.input.text' (normalized) und 'nluResult.input.textRaw' (falls auch das original benötigt wird).

Zitat von: Haecksler am 13 Februar 2020, 20:14:31
Noch ein Hinweis, mit meinem Standarduser (Roles: user,smarthomeadmin,smarthomeguest) habe ich keine Berechtigung das MqttDemo zu laden und beim Admin kann keine Rolle hinzugefügt werden, d.h. ich musste zum Testen den Code anpassen....ist das so gedacht?

Man übersieht das vermutlich leicht, aber hier (https://github.com/SEPIA-Framework/sepia-docs/wiki/Creating-your-own-smart-service-%28aka%3A-skill-or-voice-action%29#requirements) steht die Lösung :-) Du musst deinem User noch die Rolle "developer" geben.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Februar 2020, 22:37:29
Zitat von: whistler am 01 Februar 2020, 12:57:36
habe ich mir angeschaut, aber noch nicht 100% durchgestiegen, bzw. wie dann ein Befehl aussehen sollte. wie im Robo Beispiel. :-)
Vielleicht kannst du da die Syntax nochmal etwas genauer aufsplitten. Vielleicht finde ich in der Zwischenzeit noch was im Wiki.
Deine Textdateien die eingelesen werden hab ich auch geschaut. Da hab ich überlegt, ob du dort zu den Sprachfiles nicht noch eine _custom oder ähnlich hinterlegen kannst. da könnte man dann updatefähige eigene Bausteine reinpacken.

Ich habe ein zweites Beispiel in die Liste aufgenommen: https://github.com/SEPIA-Framework/sepia-docs/blob/master/API/teach-server.md#custom-smart-home-command
Es basiert auf @TRallala 's Beispiel ein paar Posts zuvor.

Der Server liest jetzt außerdem auch Dateien mit dem Suffix "_custom.txt" automatisch (falls sie existieren), also z.B. "chats_de_custom.txt". Dabei werden Inhalte aus "chats_de.txt" überschrieben :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Februar 2020, 23:02:43
Zitat von: sepia am 13 Februar 2020, 21:28:46
Ok interessant, ich überlege noch mal was sich da geändert haben könnte.

Ich habe nochmal getestet und im Docker hin und hergeschaltet. master läuft (auch wenn er manchmal hängen bleibt und der container 2 -3 up and downs braucht., mit der dev das gleiche.
Nur am Ende funktioniert beim master dann eben auch GET DEVICE und im dev dann nicht. Da er sich zum git verbindet holt er sich auch das tagesaktuelle dort ab.
Kann ich sonst noch irgendwie wo was nachschauen, mit dem Fehlerlogs kommen wir vermutlich so nicht weiter.


Zitat von: sepia am 13 Februar 2020, 21:28:46
Ja, einerseits gibt es da Probleme mit den Zugriffsrechten und dazu kommt noch, dass in manchen Linux Scripts zum Starten etc. der Pfad "~/SEPIA" hardcoded ist :-[ ... das ist sicher nicht optimal aber wurde irgendwann nötig. Ich muss das irgendwann mal durch eine Umgebungsvariable ersetzten. Generell gilt: abseits der Instruktionen aus den "Anleitungen" bewegt man sich auf dünnes Eis ::) :-X ;)
Da sagst du was :-)

Zitat von: sepia am 13 Februar 2020, 21:28:46
:o das verwirrt mich jetzt total, der ist ja im Grunde identisch mit Chrome/Chromium.
Also sobald ich über den Reverse Proxy den Aufruf mache, gehts ja wieder über SSL und dann kann ich auch den ASR Custom auswählen im Edge und Firefox.

Zitat von: sepia am 13 Februar 2020, 21:28:46
Irgendwo hatte ich dazu mal was geschrieben, finde es aber selber nicht mehr ??? Vielleicht hilft die Nginx Config aus dem STT Server weiter: https://github.com/SEPIA-Framework/sepia-stt-server/blob/master/nginx_config/stt

So halb, im Apache läuft das scheinbar ein wenig anders, so wie mit dem chat und message, ich kriege das gerade aber nicht adaptiert. Zumindest per ws: erreicht er den Server und meckert dann immer noch über den Mikrofon Zugriff. wss: bekomme ich nicht hin. Sobald ich die URL Minimal ändere "damit sie falsch ist" sagt er wieder ASR Server nicht erreichbar". Korrigiere ich wieder kommt die Meldung mit kein Zugriff aufs Mikrofon. Das Fehlerbild ist aber das gleiche wie wenn ich direkt ws://192.168. also die interne IP Eintrage. Er hat auch was von Ein skript versucht ... und hat dann gesperrt.
Scheinbar reicht die SSL Verbindung nicht. und ws:// ist ihm dann zu wenig.

Zitat von: sepia am 13 Februar 2020, 21:28:46
Den Android Client interessiert das alles nicht, aber sobald du im Browser bist muss der entweder über eine localhost Adresse laufen (ich hoste mir den Client z.B. oft via lokalem Webserver auf meinem PC) oder alles über HTTPS machen.
Dein alles über HTTPS verstehe ich noch nicht 100%, oder meinst du damit HTTPS und WSS?
Du meinst quasi den Teil den beim headless Client das node.js übernimmt? Da wäre ich ja auch localhost :-)

Zitat von: sepia am 13 Februar 2020, 21:28:46
Ja stimmt, das Sicherheitsfeature müsstest du dann in den Server settings mit der Option "allow_global_dev_requests":true deaktivieren wenn du von Extern drauf willst. Im eigenen Netzwerk kannst du aber immer direkt über http://[IP]... auf den Server gehen. Im Control HUB brauchst du ja kein HTTPS.

Teilweise findet sich das in der "~/.config/openbox/autostart" wieder, kannst du aber ignorieren für die neue Version.
Passt :-)

Zitat von: sepia am 13 Februar 2020, 21:28:46
In der Einstellung "Message typ: SEPIA client" kannst du mal den Befehl "call test" versuchen (vorher richtige Device ID ins Feld darüber eintragen).
In der Einstellung "Remote Button" kannst du das Mikrofon triggern mit "deviceId [ID] button mic".
Wake-word ist standardmäßig in der "~/clexi/www/sepia/settings.js" deaktiviert und kann aktiviert werden über '"useWakeWord": true, "autoloadWakeWord": true'. Danach ist ein Neustart des Clients über das "remote terminal" nötig via "call reload".
Test ich mal

Zitat von: sepia am 13 Februar 2020, 21:28:46
Meinst du die Option aus dem Client "setup.sh" Skript bzw. den Eintrag "host-name" aus der "~/clexi/www/sepia/settings.js"? Da müsste schon die IP Adresse deines SEPIA Servers rein, bzw. genau das, was du sonst im Client als "host" angibst (in diesem Fall ist kein HTTPS nötig).
also server:20721/sepia z.b.?

Gerne und Danke :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 00:06:12
Zitat von: whistler am 13 Februar 2020, 23:02:43
Ich habe nochmal getestet und im Docker hin und hergeschaltet. master läuft (auch wenn er manchmal hängen bleibt und der container 2 -3 up and downs braucht., mit der dev das gleiche.
Nur am Ende funktioniert beim master dann eben auch GET DEVICE und im dev dann nicht. Da er sich zum git verbindet holt er sich auch das tagesaktuelle dort ab.
Kann ich sonst noch irgendwie wo was nachschauen, mit dem Fehlerlogs kommen wir vermutlich so nicht weiter.

Die Fehlermeldung war "no devices found or failed to contact HUB" richtig?
Das kommt vom "integrations" Endpoint des Assist-Servers und bedeutet beim "getDevices" Aufruf vom Assist-Server zum FHEM HUB kommt aus irgendeinem Grund "null" zurück. In den Assist-Server Logs (sepia-assist-server/log.out) müsste noch eine zusätzliche Meldung auftreten: "FHEM - getDevices FAILED with msg.: ...". Kannst du sowas sehen?

Zitat von: whistler am 13 Februar 2020, 23:02:43
Also sobald ich über den Reverse Proxy den Aufruf mache, gehts ja wieder über SSL und dann kann ich auch den ASR Custom auswählen im Edge und Firefox.
Ahhhh, krass, die ganze Option verschwindet wenn man in Firefox über einen "unsicheren" Server geht. Ich kann das jetzt reproduzieren O_o. Mal gucken ob man da was machen kann, der muss scheinbar schon die Audio API sperren während ich die Kompatibilität prüfe. Ist mir auch neu.

Zitat von: whistler am 13 Februar 2020, 23:02:43
Zumindest per ws: erreicht er den Server und meckert dann immer noch über den Mikrofon Zugriff... Scheinbar reicht die SSL Verbindung nicht. und ws:// ist ihm dann zu wenig.

Jemand hat ein ganz ähnliches Problem in den GitHub Issues gepostet. Vielleicht hängt das mit dem gleichen Problem von oben zusammen.

Zitat von: whistler am 13 Februar 2020, 23:02:43
Dein alles über HTTPS verstehe ich noch nicht 100%, oder meinst du damit HTTPS und WSS?

Ja korrekt gesagt meinte ich SSL Verschlüsselung für beides, also HTTPS und WSS  :D

Zitat von: whistler am 13 Februar 2020, 23:02:43
Test ich mal
also server:20721/sepia z.b.?

Genau, wobei hier "server:20721/sepia" als "https://server:20721/sepia" interpretiert werden würde (wegen dem Pfad /sepia am ende denkt er das wäre ein Proxy und hofft dann auch noch der hat SSL ^^). Falls du also http brauchst kannst du auch die ganze URL eingeben z.B. "http://[my-IP]:20726/sepia". Andere valide Einträge: "192.168.0.10" (falls das ein Rechner mit SEPIA Server wäre, "raspberrypi.local:20721", "raspberrypi.local", usw. sollte alles erkannt werden. Wenn du dir nicht sicher bist kannst du es auch im Desktop Client testen, seit 2.4.1 gibt es eine neue Seite die alle Server Verbindungen anzeigt, erreichbar in der Login Box via "i" oder in den Settings auf Seite 1 ganz Oben (wo früher nur der Hostname stand).
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 00:15:14
Zitat von: sepia am 14 Februar 2020, 00:06:12
Die Fehlermeldung war "no devices found or failed to contact HUB" richtig?
Das kommt vom "integrations" Endpoint des Assist-Servers und bedeutet beim "getDevices" Aufruf vom Assist-Server zum FHEM HUB kommt aus irgendeinem Grund "null" zurück. In den Assist-Server Logs (sepia-assist-server/log.out) müsste noch eine zusätzliche Meldung auftreten: "FHEM - getDevices FAILED with msg.: ...". Kannst du sowas sehen?

Mit war so als hätte ich da schon reingeschaut. Bei dem ganzen Testen kann da schonmal was untergehen oder durcheinander kommen. Aber du meinst sicher das hier :-)

2020-02-13 23:11:52 ERROR - FHEM - getDevices FAILED with msg.: No enum constant net.b07z.sepia.server.assist.parameters.SmartDevice.Types.cul
2020-02-13 23:11:52 ERROR - TRACE: java.base/java.lang.Enum.valueOf(Enum.java:240)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.parameters.SmartDevice$Types.valueOf(SmartDevice.java:33)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.smarthome.Fhem.buildDeviceFromResponse(Fhem.java:472)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.smarthome.Fhem.getDevices(Fhem.java:168)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.endpoints.IntegrationsEndpoint.smartHomeIntegration(IntegrationsEndpoint.java:135)


[EDIT]
Du willst ja sicher ein Testobjekt für deinen FHEM haben. Vielleicht reicht das schon:

define testCUL CUL none 4321


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 00:16:46
Zitat von: sepia am 14 Februar 2020, 00:06:12
Ja korrekt gesagt meinte ich SSL Verschlüsselung für beides, also HTTPS und WSS  :D

Okay dann hab ich das noch nicht 100% Prozent verstanden. :-) also mit dem WSS bzw. welche Stelle dann WSS sein muss.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 00:19:43
Zitat von: sepia am 14 Februar 2020, 00:06:12
Genau, wobei hier "server:20721/sepia" als "https://server:20721/sepia" interpretiert werden würde (wegen dem Pfad /sepia am ende denkt er das wäre ein Proxy und hofft dann auch noch der hat SSL ^^). Falls du also http brauchst kannst du auch die ganze URL eingeben z.B. "http://[my-IP]:20726/sepia". Andere valide Einträge: "192.168.0.10" (falls das ein Rechner mit SEPIA Server wäre, "raspberrypi.local:20721", "raspberrypi.local", usw. sollte alles erkannt werden. Wenn du dir nicht sicher bist kannst du es auch im Desktop Client testen, seit 2.4.1 gibt es eine neue Seite die alle Server Verbindungen anzeigt, erreichbar in der Login Box via "i" oder in den Settings auf Seite 1 ganz Oben (wo früher nur der Hostname stand).

Ich denke : oder / mag er das, das hatte ich deinem kommentar versucht, da gabs dann nen sed fehler nehme an beim suchen ersetzen.
habs mal jetzt nur als ip eingetragen, ggf. ergänzt du ja den port so wie es klingt :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 00:54:57
Zitat von: whistler am 14 Februar 2020, 00:15:14
Mit war so als hätte ich da schon reingeschaut. Bei dem ganzen Testen kann da schonmal was untergehen oder durcheinander kommen. Aber du meinst sicher das hier :-)

2020-02-13 23:11:52 ERROR - FHEM - getDevices FAILED with msg.: No enum constant net.b07z.sepia.server.assist.parameters.SmartDevice.Types.cul
2020-02-13 23:11:52 ERROR - TRACE: java.base/java.lang.Enum.valueOf(Enum.java:240)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.parameters.SmartDevice$Types.valueOf(SmartDevice.java:33)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.smarthome.Fhem.buildDeviceFromResponse(Fhem.java:472)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.smarthome.Fhem.getDevices(Fhem.java:168)
2020-02-13 23:11:52 ERROR - TRACE: net.b07z.sepia.server.assist.endpoints.IntegrationsEndpoint.smartHomeIntegration(IntegrationsEndpoint.java:135)


Ah! Da ist das Biest! "FHEM - getDevices FAILED with msg.: No enum constant net.b07z.sepia.server.assist.parameters.SmartDevice.Types.cul"
Er sucht einen Device Type den es nicht gibt! Hab gerade noch mal in den Code geguckt und denke ich verstehe jetzt was da passiert und wie man den Bug beheben kann. Stay tuned ^^.

Zitat von: whistler am 14 Februar 2020, 00:15:14
Okay dann hab ich das noch nicht 100% Prozent verstanden. :-) also mit dem WSS bzw. welche Stelle dann WSS sein muss.

Ich hab irgendwie den Kontext verloren, an welcher Stelle war das? :D Generell ist es so, dass eine Seite, die über HTTPS geöffnet wird nur noch Quellen zulässt, die ebenfalls sicher sind, also HTTPS (z.B. Hostname) oder WSS (z.B. CLEXI oder ASR Websocket Server).
Firefox ist jetzt scheinbar auch noch so restriktiv, dass es nicht mal mehr nach der Erlaubnis fürs Mikrofon fragt, wenn es nicht eine localhost oder HTTPS Website ist O_o :-(

Zitat von: whistler am 14 Februar 2020, 00:15:14
Ich denke : oder / mag er das, das hatte ich deinem kommentar versucht, da gabs dann nen sed fehler nehme an beim suchen ersetzen.
habs mal jetzt nur als ip eingetragen, ggf. ergänzt du ja den port so wie es klingt :-)

Verteufelte Sonderzeichen! Es mag sein, dass "sed" da Probleme hat >:( . Ich guck mal was ich das "escapen" muss und wie. Bis dahin einfach per Hand in die "~/clexi/www/sepia/settings.js" eintragen ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 01:05:06
Zitat von: sepia am 14 Februar 2020, 00:54:57
Ah! Da ist das Biest! "FHEM - getDevices FAILED with msg.: No enum constant net.b07z.sepia.server.assist.parameters.SmartDevice.Types.cul"
Er sucht einen Device Type den es nicht gibt! Hab gerade noch mal in den Code geguckt und denke ich verstehe jetzt was da passiert und wie man den Bug beheben kann. Stay tuned ^^.

Kannst du sagen welches Device Schuld ist, also im FHEM, welche SEPIA gerade nicht versteht? :-) Vielleicht kann ich temporär bei mir einen Zwischenlösung machen.

Zitat von: sepia am 14 Februar 2020, 00:54:57
Ich hab irgendwie den Kontext verloren, an welcher Stelle war das? :D Generell ist es so, dass eine Seite, die über HTTPS geöffnet wird nur noch Quellen zulässt, die ebenfalls sicher sind, also HTTPS (z.B. Hostname) oder WSS (z.B. CLEXI oder ASR Websocket Server).
Firefox ist jetzt scheinbar auch noch so restriktiv, dass es nicht mal mehr nach der Erlaubnis fürs Mikrofon fragt, wenn es nicht eine localhost oder HTTPS Website ist O_o :-(

Ich habe SSL per Apache Reverse Proxy und leite sie wir damals raus gefunden entsprechend um.
Der Websocket für den chat und message wird auch über den Proxy umgeleitet. ich komme aber nur per ws: dran und nicht per wss: Verstehe gerade nicht wo ich was vergessen habe.
Es ist quasi das Wiki Sample im Apache.
Der ASR hört scheinbar auch per ws: aber auch den bekomme ich nicht per wss: hin. bestimmt nur eine Dumme Kleinigkeit :-)
Sobald der Client über SSL verbunden ist und der ASR Server antwort, wenn auch nur per ws: kommt die Frage nach dem Mikro im Firefox. diese kann man dann auch Zugriff zulassen Klicken und es kommt das Icon für das aktive Micro. Aber im Client (also Chat verlauf) schreibt er in Rot UI: Mikrofon nicht richtig erkannt oder Zugriff verweigert.


Zitat von: sepia am 14 Februar 2020, 00:54:57
Verteufelte Sonderzeichen! Es mag sein, dass "sed" da Probleme hat >:( . Ich guck mal was ich das "escapen" muss und wie. Bis dahin einfach per Hand in die "~/clexi/www/sepia/settings.js" eintragen ;-)

Wodran erkenne ich nun das er korrekt zum Server verbunden ist?
Direkt noch eine zweite Frage, müsste ich nicht auch noch dem Client eine uid zuweisen können oder läuft das in dem Fall über die clexi-xxx und device id?

Viele Grüße
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 01:25:21
Zitat von: whistler am 14 Februar 2020, 01:05:06
Kannst du sagen welches Device Schuld ist, also im FHEM, welche SEPIA gerade nicht versteht? :-) Vielleicht kann ich temporär bei mir einen Zwischenlösung machen.

Irgendwas, was in "internals" -> "type" mit "cul" anfängt scheinbar oder dieser Wert hat sich irgendwie in "sepia-type" eingeschlichen.
Ich habe einen potentiellen Fix im Dev Branch committed :-)

Zitat von: whistler am 14 Februar 2020, 01:05:06
Ich habe SSL per Apache Reverse Proxy und leite sie wir damals raus gefunden entsprechend um.
Der Websocket für den chat und message wird auch über den Proxy umgeleitet. ich komme aber nur per ws: dran und nicht per wss: Verstehe gerade nicht wo ich was vergessen habe.

Hm da weiß ich gerade auch nicht. Wenn er den Server unter ws://... findet müsste der Proxy ja zumindest korrekt weiterleiten. Das SSL Zertifikat liegt auf dem Apache?

Zitat von: whistler am 14 Februar 2020, 01:05:06
Wodran erkenne ich nun das er korrekt zum Server verbunden ist?
Direkt noch eine zweite Frage, müsste ich nicht auch noch dem Client eine uid zuweisen können oder läuft das in dem Fall über die clexi-xxx und device id?

Äh ja habe vergessen, dass du ja noch im "setup" bist  ::) Es gibt noch den Befehl "call login user [uid] pwd [mein-passwort]" um den User anzumelden. Davor und danach müsste aber "call test" funktionieren. Es gibt auch noch "ping all" da müsste der Client zumindest mit einer Statusmeldung antworten. Das kleine "?" oder der Befehl "help" zeigen auch noch mal eine Liste mit möglichen Befehlen.
Grundsätzlich ist der Ablauf so:
- Der Client fährt hoch, meldet sich mit "be right there" Audio und startet den CLEXI Server
- Falls der "headless" Modus an ist wird die "settings.js" gelesen mit den Einstellungen für "hostname" und CLEXI Zugriff (und diversen anderen Einstellungen)
- Falls der Client sich dann nicht schon selber anmeldet (weil ein Login gespeichert ist) geht er nach ca 8s in den "setup" Modus und meldet sich akustisch mit "ready for Setup"
- ab dann kann man "call login ..." benutzen und müsste ein Feedback bekommen wie z.B. "Login successful"
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 01:40:29
Zitat von: sepia am 14 Februar 2020, 01:25:21
Irgendwas, was in "internals" -> "type" mit "cul" anfängt scheinbar oder dieser Wert hat sich irgendwie in "sepia-type" eingeschlichen.
Ich habe einen potentiellen Fix im Dev Branch committed :-)

Bingo läuft :-)

Nun muss ich mich doch damit beschäftigten wie ich dein TTS Install Paket in den Docker Container bekomme. Ich hatte versucht dein Dockerfile anzupassen und selbst zu kompilieren.
Aber das hat leider nicht geklappt und irgendwann hab ich dann aufgegeben :-)


Zitat von: sepia am 14 Februar 2020, 01:25:21
Hm da weiß ich gerade auch nicht. Wenn er den Server unter ws://... findet müsste der Proxy ja zumindest korrekt weiterleiten. Das SSL Zertifikat liegt auf dem Apache?

Ja das das liegt auf dem Apache aktualisiert sich brav selber ist ebenfalls ein Let's Encrypt. Läuft auch für alles Problemlos nur halt das Websocket will nicht.
Macht denn dein nginx Sample was direkt darüber steht das ganze schon so?
Heisst man kann die URLs per HTTPS bzw. WSS aufrufen. Dann versuche ich das nochmal adaptieren auf apache Ebene.


Zitat von: sepia am 14 Februar 2020, 01:25:21
Äh ja habe vergessen, dass du ja noch im "setup" bist  ::) Es gibt noch den Befehl "call login user [uid] pwd [mein-passwort]" um den User anzumelden. Davor und danach müsste aber "call test" funktionieren. Es gibt auch noch "ping all" da müsste der Client zumindest mit einer Statusmeldung antworten. Das kleine "?" oder der Befehl "help" zeigen auch noch mal eine Liste mit möglichen Befehlen.
Grundsätzlich ist der Ablauf so:
- Der Client fährt hoch, meldet sich mit "be right there" Audio und startet den CLEXI Server
- Falls der "headless" Modus an ist wird die "settings.js" gelesen mit den Einstellungen für "hostname" und CLEXI Zugriff (und diversen anderen Einstellungen)
- Falls der Client sich dann nicht schon selber anmeldet (weil ein Login gespeichert ist) geht er nach ca 8s in den "setup" Modus und meldet sich akustisch mit "ready for Setup"
- ab dann kann man "call login ..." benutzen und müsste ein Feedback bekommen wie z.B. "Login successful"

Ja genau sowas meinte ich. Hab ich die Doku überlesen oder gibts die noch nicht? :-)
Den Client guck ich mir dann später an. So klingt das doch schon viel runder. :-)
Headless Modus hatte ich irgendwo gelesen kann man per URL mitgeben :-)

Ich teste damit später mal, jetzt wo ich wieder die Verbindung zum Fhem habe.

Danke nochmal für den schnellen Bugfix :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 14:11:46
Hallo zusammen,

Zitat von: sepia am 13 Februar 2020, 21:28:46
Den Android Client interessiert das alles nicht, aber sobald du im Browser bist muss der entweder über eine localhost Adresse laufen (ich hoste mir den Client z.B. oft via lokalem Webserver auf meinem PC) oder alles über HTTPS machen.

Ich hab nach einer alternative temporär gesucht, bis ich das mit dem wss verstanden haben oder jemand einen Tipp hat. :-)

Unter Windows 10 kann man scheinbar recht einfach mit Boardmitteln die Ports auf Localhost biegen:

Windows 10 Sepia auf locahost mappen - alternative zum lokalen Client
cmd als Admin starten die IPs anpassen und die Standard Ports werden gemappt:


set SepiaServerIP=192.168.1.x
set SepiaSTTIP=192.168.1.x
netsh interface portproxy add v4tov4 listenport=20726 connectaddress=%SepiaServerIP%  connectport=20726 listenaddress=127.0.0.1
netsh interface portproxy add v4tov4 listenport=20721 connectaddress=%SepiaServerIP%  connectport=20721 listenaddress=127.0.0.1
netsh interface portproxy add v4tov4 listenport=20722 connectaddress=%SepiaServerIP%  connectport=20722 listenaddress=127.0.0.1
netsh interface portproxy add v4tov4 listenport=20723 connectaddress=%SepiaServerIP%  connectport=20723 listenaddress=127.0.0.1
netsh interface portproxy add v4tov4 listenport=20741 connectaddress=%SepiaSTTIP% connectport=20741 listenaddress=127.0.0.1


Damit funktioniert der Mikrofonzugriff über localhost im Firefox und im Edge (Wobei da scheinbar der Browser den Mic Stream nicht mehr anhält. und somit den Stream nicht verarbeitet)

Wenn du magst kann du mich, also den Eintrag ins Wiki verewigen, wenn sinnvoll.

Allerdings ist die Qualität nicht so optimal in der Erkennung der Wörter. Als STT Server läuft aktuell noch das Standard Docker Image.

[EDIT]
Beispielsatz wenn er brauchbare setze erkennt, klappt es doch mit der Erkennung, aber:
schalte den musik player im badezimmer an -> Führt erst zu einem Okay, und dann zu vertan.
schalte den musikplayer im badezimmer an (Per Texteingabe) -> Das wiederrum schaltet dann auch korrekt
(Kein Teach IT Befehl sondern echt)

Was muss dafür angepasst werden oder wie startet ihr die "musikplayer"?

Aus "Schicke Robo zur Probefahrt" wird "schicke den ruhm zur probefahrt".
Aus "Schicke Robo in die Küche" wird "schicker euro in die küche".

Schönes Wochenende.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 14:16:09
Hallo Florian,

Ich glaube unter  https://github.com/SEPIA-Framework/sepia-stt-server (https://github.com/SEPIA-Framework/sepia-stt-server) gibts einen kleinen Zahlendreher.

Unter REST API am ende, wird aus 20741 dann plötzlich 20471.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 17:58:42
Zitat von: whistler am 14 Februar 2020, 01:40:29
Bingo läuft :-)

Yeah  8)

Zitat von: whistler am 14 Februar 2020, 01:40:29
Nun muss ich mich doch damit beschäftigten wie ich dein TTS Install Paket in den Docker Container bekomme. Ich hatte versucht dein Dockerfile anzupassen und selbst zu kompilieren.
Aber das hat leider nicht geklappt und irgendwann hab ich dann aufgegeben :-)

Ich teste noch ein, zwei Sachen für die neue Version und wollte dann mal ein Update des Docker Containers machen.

Zitat von: whistler am 14 Februar 2020, 01:40:29
Ja das das liegt auf dem Apache aktualisiert sich brav selber ist ebenfalls ein Let's Encrypt. Läuft auch für alles Problemlos nur halt das Websocket will nicht.
Macht denn dein nginx Sample was direkt darüber steht das ganze schon so?
Heisst man kann die URLs per HTTPS bzw. WSS aufrufen. Dann versuche ich das nochmal adaptieren auf apache Ebene.

Ja, bei mir läuft alles über SSL mit Let's Encrypt, auch die Websocket Server. Kennst du die SSL Info Seite (https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server) aus den Docs? Die Nginx Konfiguration von dort ist ziemlich genau das was ich nutze (im Wesentlichen auch identisch mit der aus der Proxy Info Seite).

Zitat von: whistler am 14 Februar 2020, 01:40:29
Ja genau sowas meinte ich. Hab ich die Doku überlesen oder gibts die noch nicht? :-)
Den Client guck ich mir dann später an. So klingt das doch schon viel runder. :-)
Headless Modus hatte ich irgendwo gelesen kann man per URL mitgeben :-)

Die Doku gibts noch nicht ^^. Erstmal den Release fertig machen ;-)
"Headless mode" geht über "&isHeadless=true", genau. Wobei das im Client selber noch keine wirkliche Auswirkung auf das Display hat sondern nur besagt "lade die settings.js, verbinde dich mit CLEXI, gehe automatisch in Setup Modus". Die einzige Auswirkung auf die Services etc. bisher ist, dass keine externen URLs mehr geöffnet werden, damit der Client nicht "headless" auf einen anderen Browser Tab springt :P

Zitat von: whistler am 14 Februar 2020, 01:40:29
Unter Windows 10 kann man scheinbar recht einfach mit Boardmitteln die Ports auf Localhost biegen:

Windows 10 Sepia auf locahost mappen - alternative zum lokalen Client
cmd als Admin starten die IPs anpassen und die Standard Ports werden gemappt: ...

Cool! Ich hatte auf der SSL Info Seite gerade angefangen eine Sektion "quick Fixes" anzulegen. Da passt das ja wie die Faust aufs Auge ;D

Zitat von: whistler am 14 Februar 2020, 01:40:29
Damit funktioniert der Mikrofonzugriff über localhost im Firefox und im Edge (Wobei da scheinbar der Browser den Mic Stream nicht mehr anhält. und somit den Stream nicht verarbeitet)

Das ist der Chromium Edge oder? Dazu hatte ich im Microsoft Insider Forum schon mal einen Bug-Report erstellt. Die API funktioniert nicht richtig, spuckt aber auch keinen Fehler aus. Die Hoffnung ist, dass Microsoft endlich mal die eigene Spracherkennung einbaut, in Win10 haben sie die Engine ja eh schon integriert und alles läuft offline :)

Zitat von: whistler am 14 Februar 2020, 01:40:29
Allerdings ist die Qualität nicht so optimal in der Erkennung der Wörter. Als STT Server läuft aktuell noch das Standard Docker Image.
...
Aus "Schicke Robo zur Probefahrt" wird "schicke den ruhm zur probefahrt".
Aus "Schicke Robo in die Küche" wird "schicker euro in die küche".

::) =) Das wird das zentrale Thema für SEPIA v2.4.2 ;) Man kann zwar jetzt schon das Sprachmodell anpassen, aber das ist noch viel zu umständlich und man muss fehlende Wörter selber ins Wörterbuch eintragen mit den passenden Phonems. Zahlen sind auch noch nicht so der Knaller.
Ziel ist das Sprachmodell aus einer robusten Basis + Teach-UI Commands aufzubauen und das automatisch aus dem Control HUB raus per 2 Klicks. Dazu muss ich aber noch mal an den STT Server ran.

Zitat von: whistler am 14 Februar 2020, 01:40:29
schalte den musik player im badezimmer an -> Führt erst zu einem Okay, und dann zu vertan

Ich vermute das kollidiert mit dem Service "Client Controls". Wenn du z.B. auf dem Android Handy die VLC App installiert hast versucht er daraus Musik zu starten und prüft ein paar Sekunden später ob irgendwas läuft (Android Intent Krams). Wenn er dann nix registriert kommt "Habs versucht aber bin nicht sicher obs geklappt hat" o.Ä..
Du könntest über die Assistant Test Seite im Control HUB mal prüfen welchen Service er da ausführen wollte ('interpret' oder 'understand' Endpoint).

Ich fände es auch höchst interessant, wenn man über FHEM Musik in verschiedenen Räumen steuern könnte!  :D

Zitat von: whistler am 14 Februar 2020, 01:40:29
Ich glaube unter https://github.com/SEPIA-Framework/sepia-stt-server gibts einen kleinen Zahlendreher.
Unter REST API am ende, wird aus 20741 dann plötzlich 20471.

Uuups, danke! ;D Habs korrigiert.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 18:18:00
Zitat von: whistler am 14 Februar 2020, 14:11:46
Wenn du magst kann du mich, also den Eintrag ins Wiki verewigen, wenn sinnvoll.

Passt so? https://github.com/SEPIA-Framework/sepia-docs/wiki/Reverse-Proxy-Setup#windows-10-via-command-prompt
:)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 19:14:39
Zitat von: sepia am 14 Februar 2020, 18:18:00
Passt so? https://github.com/SEPIA-Framework/sepia-docs/wiki/Reverse-Proxy-Setup#windows-10-via-command-prompt
:)

Ja sieht gut aus :-)
sollte hoffentlich selbstredend sein der Codeschnippsel :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 19:39:19
Zitat von: sepia am 14 Februar 2020, 17:58:42
Ich teste noch ein, zwei Sachen für die neue Version und wollte dann mal ein Update des Docker Containers machen.

Ja dann warte ich mal und lerne dann, was ich falsch gemacht habe. das libspico zeug krieg ich nicht integriert. Aber meine VM ist nun erstmal auf dem aktuellen Stand.
Ich guck mal, wenn ich da das STT noch nachinstalliert kriege passt das auch erstmal.

Zitat von: sepia am 14 Februar 2020, 17:58:42
Ja, bei mir läuft alles über SSL mit Let's Encrypt, auch die Websocket Server. Kennst du die SSL Info Seite (https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server) aus den Docs? Die Nginx Konfiguration von dort ist ziemlich genau das was ich nutze (im Wesentlichen auch identisch mit der aus der Proxy Info Seite).


Zitat von: sepia am 14 Februar 2020, 17:58:42
Die Doku gibts noch nicht ^^. Erstmal den Release fertig machen ;-)
"Headless mode" geht über "&isHeadless=true", genau. Wobei das im Client selber noch keine wirkliche Auswirkung auf das Display hat sondern nur besagt "lade die settings.js, verbinde dich mit CLEXI, gehe automatisch in Setup Modus". Die einzige Auswirkung auf die Services etc. bisher ist, dass keine externen URLs mehr geöffnet werden, damit der Client nicht "headless" auf einen anderen Browser Tab springt :P
Okay dann hab ich deine Doku verpasst sehr schön :-) Direkt erstes Feedback, das mit dem login hat geklappt zumindest auf dem Test headless Client.

Mein Problemkind ist vermutlich nicht in den Setupmodus gegangen, dafür aber erstmal hochgefahren. Also versuche ich mal den "halben" headless mode danke für.
ich nehme mal an ich tausche das isApp=true durch isHeadless=true. Ich probiere es einfach mal aus :-)

Zitat von: sepia am 14 Februar 2020, 17:58:42
Cool! Ich hatte auf der SSL Info Seite gerade angefangen eine Sektion "quick Fixes" anzulegen. Da passt das ja wie die Faust aufs Auge ;D
Ja ich hab kurz überlegt, Windows 10 IIS und dann den rest installieren, das war mir aber zu unständlich für mal eben :-)

Zitat von: sepia am 14 Februar 2020, 17:58:42
Das ist der Chromium Edge oder? Dazu hatte ich im Microsoft Insider Forum schon mal einen Bug-Report erstellt. Die API funktioniert nicht richtig, spuckt aber auch keinen Fehler aus. Die Hoffnung ist, dass Microsoft endlich mal die eigene Spracherkennung einbaut, in Win10 haben sie die Engine ja eh schon integriert und alles läuft offline :)

Also Anwendungsfall wäre ein HTPC mit Win10 der eh läuft, daher wäre dort ebenfalls ein Headless Client was Feines, aber eins nach dem anderen. Nur als gedanken was noch so alles geht :-)
Oder halt der Bürorechner oder oder oder :-) Und wenns Offline stattfindet, kann ja das Wakework an sein :-)

Zitat von: sepia am 14 Februar 2020, 17:58:42
::) =) Das wird das zentrale Thema für SEPIA v2.4.2 ;) Man kann zwar jetzt schon das Sprachmodell anpassen, aber das ist noch viel zu umständlich und man muss fehlende Wörter selber ins Wörterbuch eintragen mit den passenden Phonems. Zahlen sind auch noch nicht so der Knaller.
Ziel ist das Sprachmodell aus einer robusten Basis + Teach-UI Commands aufzubauen und das automatisch aus dem Control HUB raus per 2 Klicks. Dazu muss ich aber noch mal an den STT Server ran.

Okay ich wollte ja nur mal so sicher gehen, das ob ich an meinem Einstellungen Hardware drehen muss oder ob es eben so ist, wie es noch ist :-)

Zitat von: sepia am 14 Februar 2020, 17:58:42
Ich vermute das kollidiert mit dem Service "Client Controls". Wenn du z.B. auf dem Android Handy die VLC App installiert hast versucht er daraus Musik zu starten und prüft ein paar Sekunden später ob irgendwas läuft (Android Intent Krams). Wenn er dann nix registriert kommt "Habs versucht aber bin nicht sicher obs geklappt hat" o.Ä..
Du könntest über die Assistant Test Seite im Control HUB mal prüfen welchen Service er da ausführen wollte ('interpret' oder 'understand' Endpoint).

okay ich glaube wir reden aneinander vorbei :-) In fhem hab ich musikplayer als device musikplayer angelegt. und in jedem raum gibt es einen. :-)
Der Test war übrigends im Browser, aber wo ist eigentlich egal. :-)

Du kannst es reproduzieren wenn du "musik player" angibst, dann spricht er nicht den fhem musikplayer an.
Wenn du aber "musikplayer" zusammen nimmst, dann steuert er den player und schaltet ihn an oder aus. :-) jenachdem was du sagst.

Zitat von: sepia am 14 Februar 2020, 17:58:42
Ich fände es auch höchst interessant, wenn man über FHEM Musik in verschiedenen Räumen steuern könnte!  :D

Jetzt schliesst sich der Kreis, warum ich meinte muss ich alles neu installieren. :-) bzw. ich nicht möchte. (Max2play = Image für Multiroom mittels squeezelite) Basiert auf dem Logitech Musik Server.
Den squeezelite Client gibts dann für Linux Windows etc. https://www.max2play.com/ (https://www.max2play.com/) und https://wiki.fhem.de/wiki/Squeezebox_Modul (https://wiki.fhem.de/wiki/Squeezebox_Modul)

Dazu hatte ich eh noch ein Attentat auf dich vor.
Ähnlich wie die Anfrage von @Haecksler mit dem states und Talk2Fhem.
Dann schiebe ich das direkt mal ein. Die Module machen nämlich auch TTS Ausgaben, übergeben dazu den Text an
http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob (http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob).
Nun kannst du dir sicher vorstellen, worauf es hinausläuft. Text an die Sepia TTS Engine übergeben und dann zurück zu bekommen. Du kannst die URL auch direkt im Brower abschicken, aber du kennst das sicher. Teste mal: http://translate.google.com/translate_tts?ie=UTF-8&tl=de&q=Guten Abend SEPIA&client=tw-ob (http://translate.google.com/translate_tts?ie=UTF-8&tl=de&q=Guten%20Abend%20SEPIA&client=tw-ob).

Vermutlich eher was für deine ToDo Liste. :-) Oder geht das über Umwege schon :-)

Damit hier keine Langeweile aufkommt :-)

Grüße
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 20:30:57
Zitat von: whistler am 14 Februar 2020, 19:39:19
ich nehme mal an ich tausche das isApp=true durch isHeadless=true. Ich probiere es einfach mal aus :-)

"isApp" besser behalten. Der Parameter erzwingt den Status "App" (wer hätte das gedacht) als Gegensatz zu "Website". Die Konsequenz ist, dass der Login nicht nach 1 Tag abläuft sonder das Token glaub 1 Jahr gültig bleibt (wie z.B. in Android etc.).

Zitat von: whistler am 14 Februar 2020, 19:39:19
Also Anwendungsfall wäre ein HTPC mit Win10 der eh läuft, daher wäre dort ebenfalls ein Headless Client was Feines, aber eins nach dem anderen. Nur als gedanken was noch so alles geht :-)

Definitiv erwünscht ^^. In Windows ist alles im Grunde ja ziemlich unproblematisch. Man konfiguriert den Client einfach übers Display (oder Remote Desktop) und packt sich dann ne .bat Datei oder Ähnliches in den Autostart, die den Browser mit "headless" Parameter startet. CLEXI für das "remote Terminal" und sogar Nginx laufen auch in Windows. Das System macht halt nur generell jede Menge Krams im Hintergrund unangekündigt ::)

Zitat von: whistler am 14 Februar 2020, 19:39:19
Jetzt schliesst sich der Kreis, warum ich meinte muss ich alles neu installieren. :-) bzw. ich nicht möchte. (Max2play = Image für Multiroom mittels squeezelite) Basiert auf dem Logitech Musik Server.
Den squeezelite Client gibts dann für Linux Windows etc. https://www.max2play.com/ (https://www.max2play.com/) und https://wiki.fhem.de/wiki/Squeezebox_Modul (https://wiki.fhem.de/wiki/Squeezebox_Modul)

Oh, spannend!  ;D

Zitat von: whistler am 14 Februar 2020, 19:39:19
Dazu hatte ich eh noch ein Attentat auf dich vor.
Ähnlich wie die Anfrage von @Haecksler mit dem states und Talk2Fhem.
Dann schiebe ich das direkt mal ein. Die Module machen nämlich auch TTS Ausgaben, übergeben dazu den Text an
http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob (http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob).
Nun kannst du dir sicher vorstellen, worauf es hinausläuft. Text an die Sepia TTS Engine übergeben und dann zurück zu bekommen. Du kannst die URL auch direkt im Brower abschicken, aber du kennst das sicher. Teste mal: http://translate.google.com/translate_tts?ie=UTF-8&tl=de&q=Guten Abend SEPIA&client=tw-ob (http://translate.google.com/translate_tts?ie=UTF-8&tl=de&q=Guten%20Abend%20SEPIA&client=tw-ob).

Ah ja der gute alte Google Translator, den hab ich vor ca. 4 Jahren schon zu diesem Zweck "vergewaltigt" ;D (das Projekt hieß ILA Voice Assistant (https://sites.google.com/site/ilavoiceassistant/)). Es gibt auch Javascript Libraries die den mehr oder weniger "heimlich" als TTS Engine verkaufen. Ich bin persönlich kein großer Fan davon weil es im Grunde von Google nur "geduldet" wird und wenn man es ganz genau nimmt sogar gegen deren AGB verstößt (frag mich jetzt nicht wo das steht ^^). Ich bin sogar mal irgendwann geblockt worden von Google weil ich wohl zu viele Requests hatte =). Eigentlich ein Trauerspiel, dass in den vielen Jahren keine ernsthafte Konkurrenz aufgetaucht ist in Sachen Qualität und Einfachheit. SEPIA hat auch eine uralte Schnittstelle zu Acapela (https://www.acapela-group.com/demos/), zu denen hatte ich ganz guten Kontakt. Die könnte man bei Bedarf vielleicht mal etwas aufpolieren. Theoretisch müsste die sogar immer noch gehen, man muss sich nur nen Test-Account machen und dann irgendwas in den SEPIA Settings einstellen ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Februar 2020, 21:08:32
Zitat von: sepia am 14 Februar 2020, 20:30:57
"isApp" besser behalten. Der Parameter erzwingt den Status "App" (wer hätte das gedacht) als Gegensatz zu "Website". Die Konsequenz ist, dass der Login nicht nach 1 Tag abläuft sonder das Token glaub 1 Jahr gültig bleibt (wie z.B. in Android etc.).
Zitat

So mit dem Bugfix von gestern abend bzw. heute morgen, hab ich scheinbar was anderes Kaputt gemacht.
Ich bekomme nun beim Remote terminal (bei beiden clients) nur noch folgendes im Logfenster unten drunter angezeigt.

CLEXI connecting ...
CLEXI reconnecting after unexpected close. Try: 19
CLEXI error: The operation is insecure.
CLEXI closed. Reason: 1015
CLEXI error

Hast du eine Idee, was ich da nun kaputt gemacht habe? Oder muss ich noch was aktualisieren? idispassword steht noch auf false, macht aber keine unterschied oder true oder false. hmm

[EDIT] wenn ich direkt "intern" über server:20726 auf das Remote Terminal gehe, dann gehts. Umweg über den apache, also extern will obige Meldung.
weil nicht wss? sondern nur ws? Oder einfach wie beim User Mgmt nur im "privaten" Netzerreichbar? Nur das die Fehlermeldung anders ist.

Zitat von: sepia am 14 Februar 2020, 20:30:57
Definitiv erwünscht ^^. In Windows ist alles im Grunde ja ziemlich unproblematisch. Man konfiguriert den Client einfach übers Display (oder Remote Desktop) und packt sich dann ne .bat Datei oder Ähnliches in den Autostart, die den Browser mit "headless" Parameter startet. CLEXI für das "remote Terminal" und sogar Nginx laufen auch in Windows. Das System macht halt nur generell jede Menge Krams im Hintergrund unangekündigt ::)
Zitat

dem kann man ja endgegenwirken, weil das system erstmal läuft :-) sofern die states an fhem geschickt werden dann in Zukunft irgendwann. Kann man dort zur not tätig werden :-)
Oder man installiert neben dem headless client noch ein mesh node, dann kann man diesen ggf. unter windows noch was ausführen lassen.

Zitat von: sepia am 14 Februar 2020, 20:30:57
Ah ja der gute alte Google Translator, den hab ich vor ca. 4 Jahren schon zu diesem Zweck "vergewaltigt" ;D (das Projekt hieß ILA Voice Assistant (https://sites.google.com/site/ilavoiceassistant/)). Es gibt auch Javascript Libraries die den mehr oder weniger "heimlich" als TTS Engine verkaufen. Ich bin persönlich kein großer Fan davon weil es im Grunde von Google nur "geduldet" wird und wenn man es ganz genau nimmt sogar gegen deren AGB verstößt (frag mich jetzt nicht wo das steht ^^). Ich bin sogar mal irgendwann geblockt worden von Google weil ich wohl zu viele Requests hatte =). Eigentlich ein Trauerspiel, dass in den vielen Jahren keine ernsthafte Konkurrenz aufgetaucht ist in Sachen Qualität und Einfachheit. SEPIA hat auch eine uralte Schnittstelle zu Acapela (https://www.acapela-group.com/demos/), zu denen hatte ich ganz guten Kontakt. Die könnte man bei Bedarf vielleicht mal etwas aufpolieren. Theoretisch müsste die sogar immer noch gehen, man muss sich nur nen Test-Account machen und dann irgendwas in den SEPIA Settings einstellen ^^.
na du baust doch gerade das espeak ein, vielleicht geht auch das :-) Ich hab mir nicht angeschaut wie die api im sepia aussieht, was die gerade so bietet :-)

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Februar 2020, 23:48:14
Zitat
Hast du eine Idee, was ich da nun kaputt gemacht habe? Oder muss ich noch was aktualisieren? idispassword steht noch auf false, macht aber keine unterschied oder true oder false. hmm

Hmm. Der Control HUB ist über den Apache auf HTTPS? Und die CLEXI Verbindung dann WS? Dann meckert er vermutlich wegen insecure origin. Wenn ich diese Situation nachstelle komme ich aber gar nicht erst bis "CLEXI connecting ...", er bricht schon vorher ab mit der Meldung, dass es nicht geht wegen HTTPS + WS.

Zitat
Oder einfach wie beim User Mgmt nur im "privaten" Netzerreichbar?

Das sollte hier keine Rolle spielen. Für die Client Connections musst du im Grunde nicht mal angemeldet sein, weil das direkt vom Browser zum CLEXI Server geht.

Zitat
Oder man installiert neben dem headless client noch ein mesh node, dann kann man diesen ggf. unter windows noch was ausführen lassen.

;D ;D
Ich hatte das mal im RPi Client laufen um das System per Sprache herunterzufahren. Aber ich eins nach dem anderen ^^.

Zitat
na du baust doch gerade das espeak ein, vielleicht geht auch das :-) Ich hab mir nicht angeschaut wie die api im sepia aussieht, was die gerade so bietet :-)

Der TTS Endpoint vom SEPIA Assist-Server integriert sich nahtlos in den SEPIA Client. In den Settings kannst du die "Voice Engine" jetzt genau so switchen wie die "ASR Engine". Im Control HUB gibt es übrigens auch die Seite "Speech Synthesis" zum testen ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 15 Februar 2020, 18:27:53
Zitat von: sepia am 14 Februar 2020, 23:48:14
Hmm. Der Control HUB ist über den Apache auf HTTPS? Und die CLEXI Verbindung dann WS? Dann meckert er vermutlich wegen insecure origin. Wenn ich diese Situation nachstelle komme ich aber gar nicht erst bis "CLEXI connecting ...", er bricht schon vorher ab mit der Meldung, dass es nicht geht wegen HTTPS + WS.

Das sollte hier keine Rolle spielen. Für die Client Connections musst du im Grunde nicht mal angemeldet sein, weil das direkt vom Browser zum CLEXI Server geht.
Ja insecure origin schreibt er ja. Ich komme aber auch an den Clexi nicht per wss vermutlich müsste ich dann den Parameter ssl in den settings auf true setzen oder?

ich würde ihn aber glaubig vom client auch eher intern verbinden, das er raus geht über den Proxy dann wieder rein kommt macht ja für die headless clients nicht so viel sinn denke ich.

Zitat von: sepia am 14 Februar 2020, 23:48:14
;D ;D
Ich hatte das mal im RPi Client laufen um das System per Sprache herunterzufahren. Aber ich eins nach dem anderen ^^.
Da fallen mir dann noch anderen sachen ein ja :-) (Gabs da nicht mal ein Beispiel irgendwo das der mesh ein Powershell Skript ausführt. Egal später :-)


Zitat von: sepia am 14 Februar 2020, 23:48:14
Der TTS Endpoint vom SEPIA Assist-Server integriert sich nahtlos in den SEPIA Client. In den Settings kannst du die "Voice Engine" jetzt genau so switchen wie die "ASR Engine". Im Control HUB gibt es übrigens auch die Seite "Speech Synthesis" zum testen ;-)

Ja verstehe und hab ich gesehen, daher musste ich ja auch mein Docker verlassen, wenn ich das jetzt richtig kombiniere weil doch da was nachinstalliert werden musste. Und ich es zumindest nicht hinbekommen habe.

Aber der Gedanke war. Ich schicke den Text nicht mehr an die Google Api (egal ob geduldet oder nicht :-) ), und bekomme dann das ergebnis von der api direkt zurück.
Das sie im client ist hab ich gesehen ja :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 15 Februar 2020, 18:34:08
Hallo Florian,

ich muss nochmal was wegen der headless Clients fragen :-) Ja der Echte Client :-)

Ich hab gerade per bash setup.sh die clexi und client id umgebogen. dazu hat er vom dhcp eine feste ip bekommen. (also ip wechsel).
nach dem neustart meldet er sich im setup mode an (get user)

wenn ich dann per call login user uid1007 pwd xxx versuche den user einzuloggen meckert er.
hat er gestern bei meinem "not supported" client auch gehabt. das aber erstmal darauf geschoben.

Broadcaster event: {"broadcast":{"client":"o87_chrome_app_v0.21.0","deviceId":"o87","sepia-login":{"note":"loginFail"}}}
Broadcaster event: {"broadcast":{"client":"o87_chrome_app_v0.21.0","deviceId":"o87","msg":"Logging in with new user: uid1007. Plz wait."}}
Broadcaster response: "sent"
Broadcaster event: {"broadcast":{"name":"sepia-client","data":{"deviceId":"o87","call":"login","user":"uid1007","pwd":"testtest"}}}


Ich könnte mir jetzt vorstellen das die clexi id und device id eindeutig ist und somit neu für den Server.
Wo kann ich dann "verwaiste" einträge sehen und ggf. löschen?
Was mach ich bei obigem Fehler? :-)

Macht es dann generell Sinn, das ich pro Client einen eigenen User anmelde, zumindest für die Räume.
[EDIT] Zusatzfrage: Was sind dann die sinnvollen Rollen die die Headless User kriegen?

Mein Gedanke wäre ich lege die User an konfiguriere sie im Browser, Treffe Raumzuordnung etc. und melde sie dann per Remote Terminal am headless client an.

Schöne Grüße
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 16 Februar 2020, 01:32:48
Zitat von: whistler am 15 Februar 2020, 18:27:53
Ja insecure origin schreibt er ja. Ich komme aber auch an den Clexi nicht per wss vermutlich müsste ich dann den Parameter ssl in den settings auf true setzen oder?

Der "ssl" Parameter müsste auf "false" bleiben denn eigentlich macht der reverse proxy die SSL Terminierung und der CLEXI Server weiß davon nichts.

Zitat von: whistler am 15 Februar 2020, 18:27:53
Ich hab gerade per bash setup.sh die clexi und client id umgebogen. dazu hat er vom dhcp eine feste ip bekommen. (also ip wechsel).
[...]
wenn ich dann per call login user uid1007 pwd xxx versuche den user einzuloggen meckert er.
hat er gestern bei meinem "not supported" client auch gehabt. das aber erstmal darauf geschoben.
[...]
Ich könnte mir jetzt vorstellen das die clexi id und device id eindeutig ist und somit neu für den Server.
Wo kann ich dann "verwaiste" einträge sehen und ggf. löschen?
Was mach ich bei obigem Fehler? :-)

Wenn du bis zum Login Versuch kommst ist mit der CLEXI Verbindung und ID alles in Ordnung und es kann mmn eigentlich nur noch der "hostname" falsch sein oder aus irgendeinem Grund nicht erreichbar. Was hast du da eingetragen?
Wenn sich die "device ID" des Clients ändert wird der Login beim nächsten reload ungültig und alle gespeicherten Tokens automatisch entfernt. Der Client müsste dann nach ein paar Sekunden wieder im Setup Modus landen. "Verwaiste" Einträge gibt es in diesem Sinne nicht oder ich hab nicht ganz verstanden was du meinst.

[EDIT] Mir ist gerade eingefallen, dass es noch den Befehl "call ping" gibt, der prüft ob der Client einen der SEPIA Server erreichen kann.

Zitat von: whistler am 15 Februar 2020, 18:27:53
Macht es dann generell Sinn, das ich pro Client einen eigenen User anmelde, zumindest für die Räume.

Ich bin mir noch nicht sicher was mehr Sinn macht, tendiere aber dazu auf allen Geräten den selben User anzumelden, weil sich dann z.B. auch die Teach-UI Befehle und Timer/Reminder etc. synchronisieren. So lange jeder Client eine eigene Device ID hat geht das. Bei zwei Geräten mit gleichem User UND gleicher Device ID geht es theoretisch sogar auch noch, nur für den Server bleibt immer der Client "aktiv" der als letztes benutzt wurde.
Wenn man jeweils einen eigenen User hat kann man vielleicht andere Sachen dafür besser managen. Vielleicht will man das ja genau WEIL dann die Teach-UI Befehle unterschiedlich sind :). Eigene Befehle und SDK Services die man dem Assistant-User (default: uid1005) beibringt gelten übrigens für alle User.

Zitat von: whistler am 15 Februar 2020, 18:27:53
[EDIT] Zusatzfrage: Was sind dann die sinnvollen Rollen die die Headless User kriegen?

Gute Frage ::) Spontan würde ich sagen "smarthomeguest" reicht eigentlich. Ggf. noch "developer" falls man irgendwann SDK Services hochladen will für den User.

Zitat von: whistler am 15 Februar 2020, 18:27:53
Mein Gedanke wäre ich lege die User an konfiguriere sie im Browser, Treffe Raumzuordnung etc. und melde sie dann per Remote Terminal am headless client an.

Im Grunde habe ich mir das auch so vorgestellt :) . Man muss nur ein wenig aufpassen, denn z.B. die Raumzuordnung ('Einstellungen - Gerätestandort' meine ich) ist eine Device Eigenschaft keine User Eigenschaft ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: JensS am 16 Februar 2020, 19:35:17
ZitatSorry MCP, aber du brauchst erst eine Erlaubnis, um diesen Smart Home Service zu nutzen.
Wo kann ich die Berechtigung eintragen?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 16 Februar 2020, 19:45:45
Zitat von: sepia am 16 Februar 2020, 01:32:48
Der "ssl" Parameter müsste auf "false" bleiben denn eigentlich macht der reverse proxy die SSL Terminierung und der CLEXI Server weiß davon nichts.

Ja klingt logisch, vielleicht hab ich auch eine Überdosis Sepia. :-) müsste das dann nicht der nginx erledigen der am headless client mit installiert ist, oder ist das dort deaktiviert?


Zitat von: sepia am 16 Februar 2020, 01:32:48
Wenn du bis zum Login Versuch kommst ist mit der CLEXI Verbindung und ID alles in Ordnung und es kann mmn eigentlich nur noch der "hostname" falsch sein oder aus irgendeinem Grund nicht erreichbar. Was hast du da eingetragen?
Wenn sich die "device ID" des Clients ändert wird der Login beim nächsten reload ungültig und alle gespeicherten Tokens automatisch entfernt. Der Client müsste dann nach ein paar Sekunden wieder im Setup Modus landen. "Verwaiste" Einträge gibt es in diesem Sinne nicht oder ich hab nicht ganz verstanden was du meinst.

[EDIT] Mir ist gerade eingefallen, dass es noch den Befehl "call ping" gibt, der prüft ob der Client einen der SEPIA Server erreichen kann.
das hatte ich per Zufall auf den Hilfebutton gestern abend auch gesehen, dann einen Fehler 404 und dann erstmal keine Lust mehr.

eingetragen habe ich
- zuerst 192.168.1.25:20721/sepia
- dann 192.168.1.25:20726/sepia
er versucht dann setzt er ein https davor und erreicht da nix :-) Fehler 404
Nun hab ich ein http://192.168.1.25:20726/sepia/ eingetragen und der Ping antwortet.
([PS:] Habe gesehen du hast bereits das Skript angepasst für die Hostname Fehler :-))

Und ich kann mich wieder auf deinem favoriten einloggen aber auch auf meinem favoriten läuft der login. (hab schon gesehen, dank github rss :-) du bastelst einen pseudo headless) :-)
Hat dir wohl keine ruhe gelassen. Gedanklich vermutlich das ähnliche was ich auch versucht habe :-)

Zitat von: sepia am 16 Februar 2020, 01:32:48
Ich bin mir noch nicht sicher was mehr Sinn macht, tendiere aber dazu auf allen Geräten den selben User anzumelden, weil sich dann z.B. auch die Teach-UI Befehle und Timer/Reminder etc. synchronisieren. So lange jeder Client eine eigene Device ID hat geht das. Bei zwei Geräten mit gleichem User UND gleicher Device ID geht es theoretisch sogar auch noch, nur für den Server bleibt immer der Client "aktiv" der als letztes benutzt wurde.
Wenn man jeweils einen eigenen User hat kann man vielleicht andere Sachen dafür besser managen. Vielleicht will man das ja genau WEIL dann die Teach-UI Befehle unterschiedlich sind :). Eigene Befehle und SDK Services die man dem Assistant-User (default: uid1005) beibringt gelten übrigens für alle User.

Gute Frage ::) Spontan würde ich sagen "smarthomeguest" reicht eigentlich. Ggf. noch "developer" falls man irgendwann SDK Services hochladen will für den User.

Im Grunde habe ich mir das auch so vorgestellt :) . Man muss nur ein wenig aufpassen, denn z.B. die Raumzuordnung ('Einstellungen - Gerätestandort' meine ich) ist eine Device Eigenschaft keine User Eigenschaft ;-)

Okay aktuell bin ich am Android Browser und headless clients mit dem 1007 unterwegs.
Dann wurde ich vermutlich einen 1009 anlegen, wenn das ungerade Zahlen ein Muster hat :-) und würde device id und o id pro headless unterschiedlich machen.

Dann hätte ich einen persönlichen am Handy / Browser und einen an den headless für den Haushalt :-)


Weils so schön ist beim testen noch eine Zusatzfrage. das mit den Wakeworks will noch nicht so recht. Zum einen am Headless. Teste ich aber nach der Änderung jetzt nochmal.
in der clexi settings der 27041 geht auf localhost wird das intern redirected oder muss auch noch passend auf die ip gebogen werden?


Aber am Android Client hab ich den Native ASR aktiv, wenn ich auf den Button klicke hört er mir brav zu, dann klappt es auch,
aber wenn ich Einstellungen "Hey Sepia" aufrufe, kann ich ja den Start Button drücken und den Logo Wechsel anschauen.
Das funktioniert auch, aber das Wake up klappt nicht so recht. ja die schieber darunter sind an :-)
Er reagiert weder in der App noch im Always on Display, das zwischen die Augen tippen klappt aber.
Er vermeldet auch das die App im Hintergrund auf das Mikro zugreift, Berechtigung ist erteilt.
Wenn ich die Lösung kenne bestimmt ganz dumm :-)

Danke schön.
Gruß
Basti

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 16 Februar 2020, 20:47:58
Zitat von: JensS am 16 Februar 2020, 19:35:17
Wo kann ich die Berechtigung eintragen?
Du musst einen User anlegen und diesem die Rolle smarthomeguest geben...mit dem Admin User geht das nicht, soweit ich weiß.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 16 Februar 2020, 23:00:47
Zitat von: whistler am 16 Februar 2020, 19:45:45
Ja klingt logisch, vielleicht hab ich auch eine Überdosis Sepia. :-) müsste das dann nicht der nginx erledigen der am headless client mit installiert ist, oder ist das dort deaktiviert?

Ja stimmt, der CLEXI server selber ist eh nur auf localhost konfiguriert, die "ssl" Option müsste demnach immer aus bleiben und man könnte dem Nginx ein self-signed Zertifikat geben ... wenn man nicht eh alles über einen zentralen Proxy steuert. Klappte der Zugriff irgendwie noch oder hattest du das jetzt erstmal auf die Warteliste gesetzt?

Zitat von: whistler am 16 Februar 2020, 19:45:45
das hatte ich per Zufall auf den Hilfebutton gestern abend auch gesehen, dann einen Fehler 404 und dann erstmal keine Lust mehr.

eingetragen habe ich
- zuerst 192.168.1.25:20721/sepia
- dann 192.168.1.25:20726/sepia
er versucht dann setzt er ein https davor und erreicht da nix :-) Fehler 404
Nun hab ich ein http://192.168.1.25:20726/sepia/ eingetragen und der Ping antwortet.
([PS:] Habe gesehen du hast bereits das Skript angepasst für die Hostname Fehler :-))

Wenn man es ganz genau nimmt ist der "hostname" immer der Basispfad zu allen Servern, also z.B. "http://192.168.178.10" für "...:20721, ...:20722, ..." oder mit Proxy "http://my-domain/sepia" für ".../sepia/assist, .../sepia/teach, ...". Das hatte ich mal so gemacht damit der User nicht immer jeden einzelnen Server eintragen muss (auch wenn er das mittlerweile könnte). Damit das klappt muss ich aber einige Annahmen machen, wie z.B. dass der User die Ports nicht ändert und dass er einen Proxy nutzt mit den standard Pfaden falls seine URL ".../sepia" heißt ... und auch dass er beim Proxy HTTPS nutzt wenn er nicht explizit den "hostname" als "http://..." definiert.
Diese Annahmen gehen leider nicht immer 100% auf ::) :P Zusätzlich versucht das Skript dann noch Eingabefehler zu korrigieren, wie z.B. "192.168.178.10:20721" (der Port gehört da nicht hin) oder "http://192.168.1.25:20726/sepia/" (der Slash am Ende ist genau genommen falsch). Mancher Marketing Mensch würde sagen "die Eingabe wird mit Künstlicher Intelligenz korrigiert"  ;D :o =) ... naja was ich damit sagen will ist es gibt einen wohl definierten Weg aber keiner hält sich dran  :-[ :-X

Zitat von: whistler am 16 Februar 2020, 19:45:45
Und ich kann mich wieder auf deinem favoriten einloggen aber auch auf meinem favoriten läuft der login. (hab schon gesehen, dank github rss :-) du bastelst einen pseudo headless) :-)
Hat dir wohl keine ruhe gelassen. Gedanklich vermutlich das ähnliche was ich auch versucht habe :-)

Hehe ;D , der "pseudo-headless" bedeutet, dass das Display an bleibt, der Client sich aber ansonsten wie die "headless" Variante verhält (auto setup, remote terminal etc.). War das das was du auch im Sinne hattest? ^^
Vielleicht hast du auch schon gesehen, dass ich den Aufbau des Clients etwas verändert habe. Das wird vermutlich ein Update deiner Clients etwas tricky machen (der Ordner ~/sepia heißt jetzt ~/sepia-client und beinhaltet auch den meisten code aus ~/.config/openbox/autostart, die .bashrc hat sich auch geändert), allerdings hielt ich es für nötig das noch vor dem Release zu machen, denn dadurch wird die Struktur etwas übersichtlicher und man kann den Client auch besser über die Konsole starten und stoppen. Außerdem wird openbox für die headless Version gar nicht mehr gestartet (nur noch im 'display' mode).

Zitat von: whistler am 16 Februar 2020, 19:45:45
Okay aktuell bin ich am Android Browser und headless clients mit dem 1007 unterwegs.
Dann wurde ich vermutlich einen 1009 anlegen, wenn das ungerade Zahlen ein Muster hat :-) und würde device id und o id pro headless unterschiedlich machen.

Dann hätte ich einen persönlichen am Handy / Browser und einen an den headless für den Haushalt :-)

Klingt gut  8) ;D . Die UIDs steigen generell um 2 (uid1003/5/7/9), zwischendurch kann aber immer mal wieder ein Sprung passieren, also nicht wundern ;-) (das liegt am globalen unique ID Generator). Ursprünglich war es eigentlich gedacht, dass man die Email Adressen nutzt, mache ich aber selber auch nie =) ... aber nur so als Hinweis, dass das auch möglich ist falls man mal seine UID vergisst ;-)
Wo ich schon dabei bin aus dem Nähkästchen zu plaudern ::) ... im Grunde kann der Server den kompletten, automatischen Registrierungsprozess bereitstellen (Anfrage eines neuen Accounts mit Angabe einer gültigen Email-Adresse, Nachricht an Email mit Freischaltungslink, Erstellung des Accounts mit Definition des Passworts ... alles optional abgesichert durch whitelisting von Email-Adressen). Die Endpoints existieren alle und der Email Account kann sogar in den Server Settings konfiguriert werden, der Client hat nur die entsprechenden Views dafür nicht. Das ganze wäre zur Zeit ja eh nur interessant, wenn Jemand SEPIA in einer Firma oder öffentlich hosten würde ... ^^.

Zitat von: whistler am 16 Februar 2020, 19:45:45
Weils so schön ist beim testen noch eine Zusatzfrage. das mit den Wakeworks will noch nicht so recht. Zum einen am Headless. Teste ich aber nach der Änderung jetzt nochmal.
in der clexi settings der 27041 geht auf localhost wird das intern redirected oder muss auch noch passend auf die ip gebogen werden?

Wake-word braucht nur die Mikrofon Erlaubnis und die ist in den RPi Clients automatisch gegeben weil die Web-App über localhost vom CLEXI Server geladen wird. Meintest du diesen Eintrag "clexiSocketURI" mit ... localhost:8080 ? Der sollte unbedingt so bleiben.

Zitat von: whistler am 16 Februar 2020, 19:45:45
Aber am Android Client hab ich den Native ASR aktiv, wenn ich auf den Button klicke hört er mir brav zu, dann klappt es auch,
aber wenn ich Einstellungen "Hey Sepia" aufrufe, kann ich ja den Start Button drücken und den Logo Wechsel anschauen.
Das funktioniert auch, aber das Wake up klappt nicht so recht. ja die schieber darunter sind an :-)
Er reagiert weder in der App noch im Always on Display, das zwischen die Augen tippen klappt aber.
Er vermeldet auch das die App im Hintergrund auf das Mikro zugreift, Berechtigung ist erteilt.
Wenn ich die Lösung kenne bestimmt ganz dumm :-)

Also wenn es auf der Wake-Word Seite klappt mit dem Logo Wechsel (Schwarz/Weiß) und unten die beiden Regler "Allow local/remote wake-word" und "Load engine on start" an sind müsste alles korrekt eingestellt sein (vielleicht einmal die App komplett neu starten). Ich habe es so laufen bei mir. Wenn du ganz genau hinguckst erkennst du oben beim SEPIA Label an dem "online" Tag ob der WW-Listener aktiv ist, dann sieht das so aus "Ξ online Ξ". Die Performance kann etwas vom Handy abhängen, ich habe ein Samsung A3, da ist die Qualität durchwachsen und ein Samsung S10e, da klappt es ziemlich gut. Ich vermute es liegt am verbauten Mikrofon und/oder an der Performance. Das müsste man dann aber schon auf der WW Settings Seite beim Testen bemerken.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 17 Februar 2020, 00:09:46
Zitat von: sepia am 16 Februar 2020, 23:00:47
Ja stimmt, der CLEXI server selber ist eh nur auf localhost konfiguriert, die "ssl" Option müsste demnach immer aus bleiben und man könnte dem Nginx ein self-signed Zertifikat geben ... wenn man nicht eh alles über einen zentralen Proxy steuert. Klappte der Zugriff irgendwie noch oder hattest du das jetzt erstmal auf die Warteliste gesetzt?

Ich hab das wss geparkt :-) Weil ich es nicht verstehe :-)
Aber ich hab jetzt 1 +3 Clients laufen. http://192.168.1.25:20726/sepia/ also ohne SSL intern für den HUB. und von da aus kann ich alle clients anmelden.
Ich muss jetzt nur noch etwas am pulseaudio / alsa rumspielen damit sich die musik und sepia brav die geräte Teilen.
Wake Word will noch nicht so wie ich will, schauen wir mal.

Zitat von: sepia am 16 Februar 2020, 23:00:47
Wenn man es ganz genau nimmt ist der "hostname" immer der Basispfad zu allen Servern, also z.B. "http://192.168.178.10" für "...:20721, ...:20722, ..." oder mit Proxy "http://my-domain/sepia" für ".../sepia/assist, .../sepia/teach, ...". Das hatte ich mal so gemacht damit der User nicht immer jeden einzelnen Server eintragen muss (auch wenn er das mittlerweile könnte). Damit das klappt muss ich aber einige Annahmen machen, wie z.B. dass der User die Ports nicht ändert und dass er einen Proxy nutzt mit den standard Pfaden falls seine URL ".../sepia" heißt ... und auch dass er beim Proxy HTTPS nutzt wenn er nicht explizit den "hostname" als "http://..." definiert.
Diese Annahmen gehen leider nicht immer 100% auf ::) :P Zusätzlich versucht das Skript dann noch Eingabefehler zu korrigieren, wie z.B. "192.168.178.10:20721" (der Port gehört da nicht hin) oder "http://192.168.1.25:20726/sepia/" (der Slash am Ende ist genau genommen falsch). Mancher Marketing Mensch würde sagen "die Eingabe wird mit Künstlicher Intelligenz korrigiert"  ;D :o =) ... naja was ich damit sagen will ist es gibt einen wohl definierten Weg aber keiner hält sich dran  :-[ :-X
Ich habs ja ohne Skript gemacht, weil der Bugfix noch nicht da war, ist ja auch nicht schlimm. Ich hab sogar überlegt ob das Skript nicht direkt den Check per curl machen? ob die URL passt.


Zitat von: sepia am 16 Februar 2020, 23:00:47
Hehe ;D , der "pseudo-headless" bedeutet, dass das Display an bleibt, der Client sich aber ansonsten wie die "headless" Variante verhält (auto setup, remote terminal etc.). War das das was du auch im Sinne hattest? ^^
Ja das war das was ich testweise gebaut habe auf meinem unsupported device genau :-)
Das schöne beim testen war ich per vnc drauf, und konnte quasi neben dem terminal dann live sehen wie am pi der browser sich bewegt hat :-)

Zitat von: sepia am 16 Februar 2020, 23:00:47
Vielleicht hast du auch schon gesehen, dass ich den Aufbau des Clients etwas verändert habe. Das wird vermutlich ein Update deiner Clients etwas tricky machen (der Ordner ~/sepia heißt jetzt ~/sepia-client und beinhaltet auch den meisten code aus ~/.config/openbox/autostart, die .bashrc hat sich auch geändert), allerdings hielt ich es für nötig das noch vor dem Release zu machen, denn dadurch wird die Struktur etwas übersichtlicher und man kann den Client auch besser über die Konsole starten und stoppen. Außerdem wird openbox für die headless Version gar nicht mehr gestartet (nur noch im 'display' mode).


Ich war da sehr einfach gestrikt oder Bequem :-) ich hab einfach
sudo cp openbox /opt/openbox_autostart.sh
isHeadless=0 # fix
&isHeadless=true an URL angehängt
sudo nano ~/.config/lxsession/LXDE/autostart  hier per @/opt/openbox_autostart.sh

Ich wollte erst ans Ziel, also ein Ergebnis, hab ich noch nicht ganz, aber zumindest meine Buttons etc. werden geladen also mein Profil noch gibt es nur 1007 und nicht 1009 :-)
Es war zum testen, ich hab quasi nur nen bisschen vorgegriffen denke ich. Deine Lösung ist natürlich dann schöner.
Hab gesehen das du ein paar sachen eingecheckt hast, und hab gedacht, wenn ich wieder vorab clone habe ich wieder einen Zwischenstand :-) Das wollte ich nicht.
Finde ich aber gut und werde ich dann nochmal bei mir runterschmeissen und sobald du durch bist updaten. Man will ja schon im Standard bleiben.

Zitat von: sepia am 16 Februar 2020, 23:00:47
Klingt gut  8) ;D . Die UIDs steigen generell um 2 (uid1003/5/7/9), zwischendurch kann aber immer mal wieder ein Sprung passieren, also nicht wundern ;-) (das liegt am globalen unique ID Generator). Ursprünglich war es eigentlich gedacht, dass man die Email Adressen nutzt, mache ich aber selber auch nie =) ... aber nur so als Hinweis, dass das auch möglich ist falls man mal seine UID vergisst ;-)
Wo ich schon dabei bin aus dem Nähkästchen zu plaudern ::) ... im Grunde kann der Server den kompletten, automatischen Registrierungsprozess bereitstellen (Anfrage eines neuen Accounts mit Angabe einer gültigen Email-Adresse, Nachricht an Email mit Freischaltungslink, Erstellung des Accounts mit Definition des Passworts ... alles optional abgesichert durch whitelisting von Email-Adressen). Die Endpoints existieren alle und der Email Account kann sogar in den Server Settings konfiguriert werden, der Client hat nur die entsprechenden Views dafür nicht. Das ganze wäre zur Zeit ja eh nur interessant, wenn Jemand SEPIA in einer Firma oder öffentlich hosten würde ... ^^.

Ja hab ich gesehen, da hab ich sogar bereits am Anfang direkt den Mailserver eingetragen, weil in der UServerwaltung ja Whitelisting drin ist. Es stehen aber nur die ersten zwei (1003/1005) Accounts in der properties Datei der Rest dann in der Datenbank oder?

Nice wäre noch ein clonen eines Users, oder Teach Teile Clonen :-)

Apropo Teachserver ich hab mir vorhin entlich mal dein Sample angucken wollen, bzgl. neuer Einträge per API. Naja ich hab die URL zum API Server nicht zusammen gebracht.
Dabei ist mir bei dein Infobuttons aufgefallen, in der Serverübersicht, das in den ganzen URLs die Ports etc. weggelassen werden, also nicht mal fix Copy & Paste :-)

Zitat von: sepia am 16 Februar 2020, 23:00:47
Wake-word braucht nur die Mikrofon Erlaubnis und die ist in den RPi Clients automatisch gegeben weil die Web-App über localhost vom CLEXI Server geladen wird. Meintest du diesen Eintrag "clexiSocketURI" mit ... localhost:8080 ? Der sollte unbedingt so bleiben.
Nein es gab noch den Eintrag mit :20741 aber als ich die Räume der Clients konfiguriert habe, hab ich gesehen, das du einfach ein default eingetragen hast als Bespiel glaubig.
Könnte man dann anpassen für den Server, wenn er nicht auch mit dem auf dem PI läuft.

Zitat von: sepia am 16 Februar 2020, 23:00:47
Also wenn es auf der Wake-Word Seite klappt mit dem Logo Wechsel (Schwarz/Weiß) und unten die beiden Regler "Allow local/remote wake-word" und "Load engine on start" an sind müsste alles korrekt eingestellt sein (vielleicht einmal die App komplett neu starten). Ich habe es so laufen bei mir. Wenn du ganz genau hinguckst erkennst du oben beim SEPIA Label an dem "online" Tag ob der WW-Listener aktiv ist, dann sieht das so aus "Ξ online Ξ". Die Performance kann etwas vom Handy abhängen, ich habe ein Samsung A3, da ist die Qualität durchwachsen und ein Samsung S10e, da klappt es ziemlich gut. Ich vermute es liegt am verbauten Mikrofon und/oder an der Performance. Das müsste man dann aber schon auf der WW Settings Seite beim Testen bemerken.

Scheinbar hab ich das indirekt schon getan, weil ich gestern abend oder heute morgen kurz vorm schlafen gehen das Handy neugestartet habe (Mi9T Pro) und dann vorhin am Handy deinen Text gelesen haben und dann nochmal in die App rein bin. Also ich hatte den Text unterm Logo so verstanden das der nur zum Testen gedacht ist und man auf Stop drückt bevor man die Maske verlässt. Aber man muss scheinbar auf Start bleiben. Hmmm komisch (Android 10 vielleicht). Danach klappt das Mikro wenn ich in der App bin ohne den Knopf zu drücken und Wenn ich den Always On Screen an habe.

Wenn das Handy im Lockscreen ist geht es nicht. Eine Kombi von Always On und Lockscreen wäre cool, aber dann kommen sicher die Google Spielregeln dazwischen. Ich glaub die Hoheitsrechte mit Wakeword von fast überall hat nur der Google Assistent.

Da fällt mir noch was ein für die Wunschliste :-)
Stichwort eigenes Wakeword. Ich schieb hier mal so hin und wieder die Features von Snips rein :-) Die ich ganz nett fand, wobei ich das gar nicht soweit hinbekommen hatte. (pulseaudio / alsa) sei dank.
Aber neues Projekt neues Glück.

Sag bescheid, wenn du was zum testen hast, dann bügel ich es über. Hab gesehen Docker hast du auch was neues gebaut. Hab ich aber noch nicht angeschaut.

Guten Start in die neue Woche.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 17 Februar 2020, 01:10:56
Zitat von: whistler am 17 Februar 2020, 00:09:46
Ich muss jetzt nur noch etwas am pulseaudio / alsa rumspielen damit sich die musik und sepia brav die geräte Teilen.

Oh ha, ich prophezeie viele sorgenvolle Stunden :o :-[ . Der Client ist super sensibel was das angeht. Im Endeffekt war der Konflikt zwischen Alsa und Pulseaudio sogar der Grund warum ich den TTS Endpoint des Servers wiederbelebt habe. Immer wenn ich am Audiosystem von Linux rumgespielt habe ging später irgendwas nicht (Mikrofon, Audio in Chromium, Audio im Allgemeinen, TTS voices, etc. etc.). Vielleicht hast du ja Glück aber das ist einer der Hauptgründe warum ich den Client eigentlich auf einem isolierten System haben will (unberührtes Raspbian Buster).

Zitat von: whistler am 17 Februar 2020, 00:09:46Ich hab sogar überlegt ob das Skript nicht direkt den Check per curl machen? ob die URL passt.

Ja wäre cool, das würde einem zumindest ein "call reload" + "call test" ersparen :-)

Zitat von: whistler am 17 Februar 2020, 00:09:46
Das schöne beim testen war ich per vnc drauf, und konnte quasi neben dem terminal dann live sehen wie am pi der browser sich bewegt hat :-)

Hehe ja das ist ganz cool :-). Ich hatte ein paar mal versucht aus dem virtuellen Display (Xvfb) Screenshots zu erstellen zu Debug-Zwecken, bin aber bisher gescheitert daran :-(

Zitat von: whistler am 17 Februar 2020, 00:09:46
Hab gesehen das du ein paar sachen eingecheckt hast, und hab gedacht, wenn ich wieder vorab clone habe ich wieder einen Zwischenstand :-) Das wollte ich nicht.
Finde ich aber gut und werde ich dann nochmal bei mir runterschmeissen und sobald du durch bist updaten. Man will ja schon im Standard bleiben.

Die ganzen Tests bis zu dieser Version waren auf jeden Fall super nützlich, danke noch mal! :D

Zitat von: whistler am 17 Februar 2020, 00:09:46
Ja hab ich gesehen, da hab ich sogar bereits am Anfang direkt den Mailserver eingetragen, weil in der UServerwaltung ja Whitelisting drin ist. Es stehen aber nur die ersten zwei (1003/1005) Accounts in der properties Datei der Rest dann in der Datenbank oder?

Die 2 "core" Accounts sind in der Properties Datei, weil der Server die beim Start benötigt. Alles andere ist in der Elasticsearch, genau.

Zitat von: whistler am 17 Februar 2020, 00:09:46
Nice wäre noch ein clonen eines Users, oder Teach Teile Clonen :-)

In der Tat, generell auch ein Export/Import, aber das wird wohl noch etwas dauern ;)

Zitat von: whistler am 17 Februar 2020, 00:09:46
Apropo Teachserver ich hab mir vorhin entlich mal dein Sample angucken wollen, bzgl. neuer Einträge per API. Naja ich hab die URL zum API Server nicht zusammen gebracht.
Dabei ist mir bei dein Infobuttons aufgefallen, in der Serverübersicht, das in den ganzen URLs die Ports etc. weggelassen werden, also nicht mal fix Copy & Paste :-)

Die Teach-Server API ist standardmäßig "http://[IP-von-SEPIA]:20722" oder via Proxy "http://[proxy-IP]:20726/sepia/teach" bzw. "https://[my-domain]/sepia/teach".
Sind die Ports in deiner Übersicht in dem speziellen Fall vielleicht nur weg, weil du da die public Domain mit SSL nutzt, die auf deinen Router mit Port 443 zeigt? (so ist es bei mir).

Zitat von: whistler am 17 Februar 2020, 00:09:46
Nein es gab noch den Eintrag mit :20741 aber als ich die Räume der Clients konfiguriert habe, hab ich gesehen, das du einfach ein default eingetragen hast als Bespiel glaubig.
Könnte man dann anpassen für den Server, wenn er nicht auch mit dem auf dem PI läuft.

Ach jo, das ist der Demo Pfad zum STT Server, der wird aber für das Wake-Word gar nicht gebraucht. Der RPi4 mit 4GB könnte vielleicht auch noch den STT Server stemmen, das habe ich als Test auf der To-Do Liste stehen ^^.

Zitat von: whistler am 17 Februar 2020, 00:09:46
Scheinbar hab ich das indirekt schon getan, weil ich gestern abend oder heute morgen kurz vorm schlafen gehen das Handy neugestartet habe (Mi9T Pro) und dann vorhin am Handy deinen Text gelesen haben und dann nochmal in die App rein bin. Also ich hatte den Text unterm Logo so verstanden das der nur zum Testen gedacht ist und man auf Stop drückt bevor man die Maske verlässt. Aber man muss scheinbar auf Start bleiben. Hmmm komisch (Android 10 vielleicht). Danach klappt das Mikro wenn ich in der App bin ohne den Knopf zu drücken und Wenn ich den Always On Screen an habe.

Wenn das Handy im Lockscreen ist geht es nicht. Eine Kombi von Always On und Lockscreen wäre cool, aber dann kommen sicher die Google Spielregeln dazwischen. Ich glaub die Hoheitsrechte mit Wakeword von fast überall hat nur der Google Assistent.

Wenn man STOP drückt vor dem Verlassen, müsste es eigentlich automatisch wieder anspringen nachdem man einmal manuell was gefragt/gesagt hat (falls es denn generell erlaubt ist). Die Abfrage kommt beim Switch in den "idle" Modus also im Grunde nach jeder Interaktion mit SEPIA.
In den Lockscreen kommt man tatsächlich nicht, oder nur mit irgendwelchen Sonderregeln :-( Auf Android hat man zusätzlich das Problem, dass je nach Hersteller immer mal wieder die App aus dem Hintergrund gelöscht wird. SEPIA macht eigentlich nix im Hintergrund, aber das führt dazu, dass man irgendwann plötzlich keine Erinnerungen/Timer/Alarme per Notification bekommt :-/ Dann muss man einmal das Handy neustarten >:( (das passiert ca. 1mal im Monat bei mir).

Zitat von: whistler am 17 Februar 2020, 00:09:46
Da fällt mir noch was ein für die Wunschliste :-)
Stichwort eigenes Wakeword. Ich schieb hier mal so hin und wieder die Features von Snips rein :-) Die ich ganz nett fand, wobei ich das gar nicht soweit hinbekommen hatte. (pulseaudio / alsa) sei dank.
Aber neues Projekt neues Glück.

Sag bescheid, wenn du was zum testen hast, dann bügel ich es über. Hab gesehen Docker hast du auch was neues gebaut. Hab ich aber noch nicht angeschaut.

Guten Start in die neue Woche.

Eigenes Wake-Word wäre schon cool ja. Die Jungs von Picovoice waren so nett und haben mir "Hey SEPIA" kostenlos für das Projekt erstellt. Theoretisch kann man noch alles benutzen, was die so im GitHub veröffentlicht haben (https://github.com/Picovoice/porcupine/tree/master/resources/keyword_files/wasm). Leider kann man sich bei denen nur eigene Wake-Words für Windows 64bit und Linux 64bit erstellen (Browser (wasm) und Raspberry muss man in Auftrag geben).

Docker ist work-in-progress, aber ich sage gerne Bescheid wenn es soweit ist ^^.

Ebenfalls einen guten Start!  :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 17 Februar 2020, 22:35:31
Zitat von: sepia am 17 Februar 2020, 01:10:56
Oh ha, ich prophezeie viele sorgenvolle Stunden :o :-[ . Der Client ist super sensibel was das angeht. Im Endeffekt war der Konflikt zwischen Alsa und Pulseaudio sogar der Grund warum ich den TTS Endpoint des Servers wiederbelebt habe. Immer wenn ich am Audiosystem von Linux rumgespielt habe ging später irgendwas nicht (Mikrofon, Audio in Chromium, Audio im Allgemeinen, TTS voices, etc. etc.). Vielleicht hast du ja Glück aber das ist einer der Hauptgründe warum ich den Client eigentlich auf einem isolierten System haben will (unberührtes Raspbian Buster).

Das war sogar bei mir der Grund snips erstmal in die Ecke zu liegen und noch ein zwei andere Gründe. Jetzt ja noch ein zusätzlicher. :-)
Aber er soll ja sinnvolle Dienste vollbringen der Pi :-) also nicht nur einen. Ich verstehe natürlich deine bedenken.

Zitat von: sepia am 17 Februar 2020, 01:10:56
Die Teach-Server API ist standardmäßig "http://[IP-von-SEPIA]:20722" oder via Proxy "http://[proxy-IP]:20726/sepia/teach" bzw. "https://[my-domain]/sepia/teach".
Sind die Ports in deiner Übersicht in dem speziellen Fall vielleicht nur weg, weil du da die public Domain mit SSL nutzt, die auf deinen Router mit Port 443 zeigt? (so ist es bei mir).
Nunja Reverse Proxy ist ja das eine, aber intern per http müsste ich ja so dran, so wie der clexi auch dran kommt, ja ein anderer port aber ist ja in der vm alles freigegeben. Ich prüfe das nochmal in ruhe.

Zitat von: sepia am 17 Februar 2020, 01:10:56
Ach jo, das ist der Demo Pfad zum STT Server, der wird aber für das Wake-Word gar nicht gebraucht. Der RPi4 mit 4GB könnte vielleicht auch noch den STT Server stemmen, das habe ich als Test auf der To-Do Liste stehen ^^.
Ein STT sollte reichen, spricht was dagegen den SEPIA Server + STT zusammen auf einer Maschine zu installieren (nein kein PI) :-)

Zitat von: sepia am 17 Februar 2020, 01:10:56
Wenn man STOP drückt vor dem Verlassen, müsste es eigentlich automatisch wieder anspringen nachdem man einmal manuell was gefragt/gesagt hat (falls es denn generell erlaubt ist). Die Abfrage kommt beim Switch in den "idle" Modus also im Grunde nach jeder Interaktion mit SEPIA.
In den Lockscreen kommt man tatsächlich nicht, oder nur mit irgendwelchen Sonderregeln :-( Auf Android hat man zusätzlich das Problem, dass je nach Hersteller immer mal wieder die App aus dem Hintergrund gelöscht wird. SEPIA macht eigentlich nix im Hintergrund, aber das führt dazu, dass man irgendwann plötzlich keine Erinnerungen/Timer/Alarme per Notification bekommt :-/ Dann muss man einmal das Handy neustarten >:( (das passiert ca. 1mal im Monat bei mir).
Dann bin ich damit ja nicht alleine. unschöner Nebeneffekt, evtl. ein Xiaomi Ding, wenn das Mikro an ist, tauscht er den Default Lautstärke für Lautsprecher und man reguliert die Lautstärke vom Mikro. Bissel nervig. und per Bluetooth Verbindung sorgt es bei der Freisprecheinrichtung dafür das diese denkt es wäre ein Anruf, und generiert einen Pseudo Anruf :-(


Zitat von: sepia am 17 Februar 2020, 01:10:56
Eigenes Wake-Word wäre schon cool ja. Die Jungs von Picovoice waren so nett und haben mir "Hey SEPIA" kostenlos für das Projekt erstellt. Theoretisch kann man noch alles benutzen, was die so im GitHub veröffentlicht haben (https://github.com/Picovoice/porcupine/tree/master/resources/keyword_files/wasm). Leider kann man sich bei denen nur eigene Wake-Words für Windows 64bit und Linux 64bit erstellen (Browser (wasm) und Raspberry muss man in Auftrag geben).
Bevor ich jetzt anfange zu suchen. Wo ist das Wakeword File versteckt? :-) Klingt interessant.
Hast du mal mit Snowboy rumprobiert. Wobei die auch auf die Picovoice Console verweisen, was dann noch nichts hilft am Ende.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 17 Februar 2020, 22:43:52
Zitat von: sepia am 16 Februar 2020, 23:00:47
Hehe ;D , der "pseudo-headless" bedeutet, dass das Display an bleibt, der Client sich aber ansonsten wie die "headless" Variante verhält (auto setup, remote terminal etc.). War das das was du auch im Sinne hattest? ^^
Vielleicht hast du auch schon gesehen, dass ich den Aufbau des Clients etwas verändert habe. Das wird vermutlich ein Update deiner Clients etwas tricky machen (der Ordner ~/sepia heißt jetzt ~/sepia-client und beinhaltet auch den meisten code aus ~/.config/openbox/autostart, die .bashrc hat sich auch geändert), allerdings hielt ich es für nötig das noch vor dem Release zu machen, denn dadurch wird die Struktur etwas übersichtlicher und man kann den Client auch besser über die Konsole starten und stoppen. Außerdem wird openbox für die headless Version gar nicht mehr gestartet (nur noch im 'display' mode).

Wenn du eh gerade den Client umbaust, kannst du dir vielleicht nochmal den Clexi Server bzw. nginx anschauen. Du benötigst ja den Port 9090.
Vielleicht könntest du den Port 80 "ausbauen", den er vermutlich aktiv nicht nutzt oder hab ich was übersehen?

Ich weiss, nur headless alleine :-) Aber es müssen ja nicht Ports belegt werden, die am Ende nicht genutzt werden.

Dann wären nur 8080 und 9090 offen und aktuell in Nutzung richtig? :-)

Ich installiere den Client am Ende dann zum Testen auch gerne nochmal frisch :-)

im setup.sh wäre eine Raum Eingabe noch cool, oder per remote control. (Ups hab ich da was übersehen evtl. :-) )




Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 19 Februar 2020, 01:29:13
Zitat von: whistler am 17 Februar 2020, 22:35:31
Ein STT sollte reichen, spricht was dagegen den SEPIA Server + STT zusammen auf einer Maschine zu installieren (nein kein PI) :-)

Eigentlich nicht, solange die genug Saft hat ;)

Zitat von: whistler am 17 Februar 2020, 22:35:31
Dann bin ich damit ja nicht alleine. unschöner Nebeneffekt, evtl. ein Xiaomi Ding, wenn das Mikro an ist, tauscht er den Default Lautstärke für Lautsprecher und man reguliert die Lautstärke vom Mikro. Bissel nervig. und per Bluetooth Verbindung sorgt es bei der Freisprecheinrichtung dafür das diese denkt es wäre ein Anruf, und generiert einen Pseudo Anruf :-(

Uff, das mit dem Anruf ist ja echt nervig >:(

Zitat von: whistler am 17 Februar 2020, 22:35:31
Bevor ich jetzt anfange zu suchen. Wo ist das Wakeword File versteckt? :-) Klingt interessant.
Hast du mal mit Snowboy rumprobiert. Wobei die auch auf die Picovoice Console verweisen, was dann noch nichts hilft am Ende.

Das WW ist momentan im HTML Code (https://github.com/SEPIA-Framework/sepia-html-client-app/blob/3532cc70ff2ec752b4d216424cc001eaae5037e6/www/scripts/sepiaFW.wakeTriggers.js#L164) könnte man aber so umbauen, dass es zumindest im Ordner des SEPIA Clients liegt ;-)
Snowboy hatte ich mal probiert bevor es Picovoice gab. Die waren ganz ok aber alles etwas umständlich zu konfigurieren und nicht auf so vielen Plattformen verfügbar. Vermutlich hat sich da auch einiges getan, wusste z.B. nicht, dass die jetzt irgendwas mit Picovoice zu tun haben.

Zitat von: whistler am 17 Februar 2020, 22:35:31
Wenn du eh gerade den Client umbaust, kannst du dir vielleicht nochmal den Clexi Server bzw. nginx anschauen. Du benötigst ja den Port 9090.
Vielleicht könntest du den Port 80 "ausbauen", den er vermutlich aktiv nicht nutzt oder hab ich was übersehen?

Ich weiss, nur headless alleine :-) Aber es müssen ja nicht Ports belegt werden, die am Ende nicht genutzt werden.

Dann wären nur 8080 und 9090 offen und aktuell in Nutzung richtig? :-)

Ach, ich glaube der ist überhaupt nur drin wegen der Nginx default config, den hab ich gar nicht explizit definiert :( 8080 für CLEXI und 9090 für Nginx sind ansonsten alles.

Zitat von: whistler am 17 Februar 2020, 22:35:31
im setup.sh wäre eine Raum Eingabe noch cool, oder per remote control. (Ups hab ich da was übersehen evtl. :-) )

Ich glaub da gibt es tatsächlich momentan noch keine Möglichkeit das einzustellen ohne Monitor ???
Ich prüfe das noch mal ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 19 Februar 2020, 01:32:47
Ich habe mich getraut und endlich v2.4.1 von SEPIA-Home veröffentlicht  8) :
https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases

Die Scripts für die DIY (headless) SEPIA-Clients sind auch im master branch, müssen aber noch einmal getestet werden :)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 19 Februar 2020, 19:54:31
Zitat von: sepia am 19 Februar 2020, 01:29:13
Eigentlich nicht, solange die genug Saft hat ;)

Okay was auch immer du mit genug meinst, aber ja denke schon :-)

Zitat von: sepia am 19 Februar 2020, 01:29:13
Uff, das mit dem Anruf ist ja echt nervig >:(

Aktuell killt Tasker die App beim Bluetooth Connect und startet sie wieder beim disconnect.
Das führt mich zu einer Frage. Kann die App auch Android Intents? z.B. "minimiert starten oder als Always On starten?

Zitat von: sepia am 19 Februar 2020, 01:29:13
Ach, ich glaube der ist überhaupt nur drin wegen der Nginx default config, den hab ich gar nicht explizit definiert :( 8080 für CLEXI und 9090 für Nginx sind ansonsten alles.

Kannst du diese dann ggf. noch anpassen, das er den Port erst gar nicht mit aufmacht? :-)

Zitat von: sepia am 19 Februar 2020, 01:29:13
Ich glaub da gibt es tatsächlich momentan noch keine Möglichkeit das einzustellen ohne Monitor ???
Ich prüfe das noch mal ^^.

In der Settings.js im clexi gibts das Feld, aber scheinbar füllt er es nicht, wenn man im Browser die Einstellung gemacht hat. umgekehrt hab ich es noch nicht probiert. also ob er sich den Raum aus der settings.js ziehen würde.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 19 Februar 2020, 20:03:01
Hi Florian,

Zitat von: sepia am 19 Februar 2020, 01:32:47
Ich habe mich getraut und endlich v2.4.1 von SEPIA-Home veröffentlicht  8) :
https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases

Die Scripts für die DIY (headless) SEPIA-Clients sind auch im master branch, müssen aber noch einmal getestet werden :)

Sehr schön. :-)

VM Update auf 2.4.1 aus dem dev Erfolgreich auf die VM eingespielt, aber beim ersten start, hat er wieder gemeckert, weil Scheinbar mit den Timeout was nicht passte und es gab 3x ein Fail.
Beim start danach hat er jeweils versucht ein rm auf dei log.out zu machen.

Es war doch so das die Skript nicht als root auszuführen sind, weil dann elasticsearch stress macht oder?

Kurze Nachfrage zum Ende des Updates:

Example1: http://sepia-srv.local:20721/tools/index.html
Example2: http://sepia-srv.local:20726/sepia/assist/tools/index.html (IF you've installed Nginx proxy)
Example3: http://192.168.1.25:20721/tools/index.html
Example4: http://192.168.1.25:20721/app/index.html

Please note: if this is a virtual machine the hostname might not work to contact the server!


würde es ggf. sind machen das du aus der /etc/hostnames und /etc/resolv.conf (sofern ein search Eintrag für den Suffix existiert) dein Sample zusammen baust.

Oder hast du dafür die note eingefügt? :-)


Der Android Beta Channel klappt auch, da ist die neue App schon Online, bzw. ja schon vorab am 14.02.2020 wenn es die letzte Version ist.

Beim Headless Client war die Empfehlung neu installieren "also den Client" nicht den ganzen PI. :-)



Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 20 Februar 2020, 00:05:24
Zitat von: whistler am 19 Februar 2020, 19:54:31
Okay was auch immer du mit genug meinst, aber ja denke schon :-)

Das weiß ich auch noch nicht genau ;) Mein Gefühl sagt der RPi4 ist schon nah dran ^^.

Zitat von: whistler am 19 Februar 2020, 19:54:31
Aktuell killt Tasker die App beim Bluetooth Connect und startet sie wieder beim disconnect.
Das führt mich zu einer Frage. Kann die App auch Android Intents? z.B. "minimiert starten oder als Always On starten?

Bis jetzt nur "ASSIST" und "VOICE_COMMAND" , damit man die App als Google Assistant Ersatz auswählen kann. Genau genommen noch "com.android.music.metachanged" damit der music player registrieren kann ob eine App etwas abspielt (falls sie es denn broadcasted). Der Always-On Modus startet automatisch wenn man in den Settings "Track power status" an hat und das Stromkabel verbinden :D

Zitat von: whistler am 19 Februar 2020, 19:54:31
Kannst du diese dann ggf. noch anpassen, das er den Port erst gar nicht mit aufmacht? :-)

Ich glaube es gibt eine "/etc/nginx/sites-enabled/default" wenn ich mich recht erinnere. Wenn man die löscht müsste es weg sein. Vielleicht kannst du dir dafür ein Skript machen, ich würde die gerne behalten, denn damit kann man ganz gut testen ob der Nginx überhaupt richtig läuft.

Zitat von: whistler am 19 Februar 2020, 19:54:31
In der Settings.js im clexi gibts das Feld, aber scheinbar füllt er es nicht, wenn man im Browser die Einstellung gemacht hat. umgekehrt hab ich es noch nicht probiert. also ob er sich den Raum aus der settings.js ziehen würde.

Ich hatte kurz selbst vergessen, dass ich das doch schon hinzugefügt hatte ::) Die Daten werden auf jeden Fall gelesen. Generell kann die settings.js nur per Linux geändert werden (also Skript oder Hand), der Browser darf da nicht reinschreiben. Theoretisch könnte man sowas implementieren über ein selbstgemachtes CLEXI Plugin oder das Runtime Plugin einer Mesh-Node ... aber ich peile erstmal eine Option im setup.sh Skript an ;)

Zitat von: whistler am 19 Februar 2020, 19:54:31
VM Update auf 2.4.1 aus dem dev Erfolgreich auf die VM eingespielt, aber beim ersten start, hat er wieder gemeckert, weil Scheinbar mit den Timeout was nicht passte und es gab 3x ein Fail.
Beim start danach hat er jeweils versucht ein rm auf dei log.out zu machen.

Es war doch so das die Skript nicht als root auszuführen sind, weil dann elasticsearch stress macht oder?

Hm komisch. Schwer zu sagen was da passiert aber der neue Docker Container ist fast fertig, vielleicht läuft es ja damit dann. Der "rm" auf die "log.out" kommt bei jedem Server Start, da schiebt er die alte log.out in den "logs" Ordner und fängt eine saubere an. Wenn er die schon nicht löschen kann deutet es darauf hin, dass da irgendwas keine Schreibberechtigung hat.
Spätestens ab dem Punkt, wo der "~/SEPIA" Ordner erstellt wird und die Zip Datei heruntergeladen wird sollte bei der Installation nichts mehr mit sudo gemacht werden. Wenn man das Raspberry Pi Skript (https://github.com/SEPIA-Framework/sepia-docs/wiki/Installation#raspberry-pi-in-general) nutzt und korrekt ohne sudo ausführt sollte bei den Zugriffsrechten eigentlich nichts schief gehen.

Zitat von: whistler am 19 Februar 2020, 19:54:31
würde es ggf. sind machen das du aus der /etc/hostnames und /etc/resolv.conf (sofern ein search Eintrag für den Suffix existiert) dein Sample zusammen baust.

Oder hast du dafür die note eingefügt? :-)

Der angegebene Hostname kommt aus $(hostname), was wiederum aus /etc/hostname kommt. Was macht die resolv.conf? Die IP kommt vom Netzwerkadapter, der aber leider virtuell sein kann. Ich fürchte mehr Infos über die "externe" Umgebung kriegt man nicht von innerhalb einer VM (oder doch?). Soweit ich weiß wird auch der Hostname nicht nach Außen durchgereicht.

Zitat von: whistler am 19 Februar 2020, 19:54:31
Der Android Beta Channel klappt auch, da ist die neue App schon Online, bzw. ja schon vorab am 14.02.2020 wenn es die letzte Version ist.

Beim Headless Client war die Empfehlung neu installieren "also den Client" nicht den ganzen PI. :-)

Die Android Beta ist aktuell, die production version hängt mal wieder beim Google Play Support und kommt dann hoffentlich in spätestens 2 Tagen ...  >:(
Den RPi Client sollte man frisch installieren am Besten, ja ;) ;D
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 22 Februar 2020, 19:36:46
Es gibt nun auch einen neuen Docker Container :)

Ich habe festgestellt, dass die Elasticsearch Datenbank innerhalb eines Docker Containers bisher wohl recht instabil lief, weil der Parameter für den virtuellen Speicher nur außerhalb des Containers auf dem Host System gesetzt werden kann. Hier gibts mehr Infos dazu:

https://github.com/SEPIA-Framework/sepia-docs/wiki/SEPIA-inside-virtual-environments
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 03 März 2020, 11:32:03
Für Probleme mit dem Mikrofon Zugriff im Browser von extern...also nicht localhost... habe ich im rhasspy GIT folgendes gefunden

ZitatThis was the root of my issue as well. I was trying to test commands in the browser via http (as SSL / https is currently not functional).

You can workaround it by trusting the url specifically.

On Brave you can go to brave://flags/ and locate "Insecure origins treated as secure" , add the urls you want to be trusted and enable the option. After re-launching you should be able to use your microphone over http for the specified urls.
https://github.com/synesthesiam/rhasspy/issues/150 (https://github.com/synesthesiam/rhasspy/issues/150)
https://brave.com/ (https://brave.com/)

Hat bei mir funktioniert...vielleicht hilft es dem Ein oder Anderem auch weiter.
Headless habe ich noch nicht getestet.

lg

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 03 März 2020, 19:14:20
 :) Es gibt dazu auch einen Eintrag im SEPIA Wiki:

https://github.com/SEPIA-Framework/sepia-docs/wiki/Set-up-web-browser-to-treat-your-local-IP-as-secure-origin

und noch ein paar weitere Optionen (z.B. self-signed SSL):

https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server#troubles-with-microphone-or-server-access

Seit v2.4.1 sollte der Client bei entsprechenden Probleme auch einen Link im Chat posten zu diesem Eintrag  :D
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Haecksler am 04 März 2020, 08:30:21
ZitatSeit v2.4.1 sollte der Client bei entsprechenden Probleme auch einen Link im Chat posten zu diesem Eintrag

Noch nicht gemacht  ::)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 08 März 2020, 17:39:25
So ich brauchte mal ne Sepia "Pause".

Zitat von: sepia am 20 Februar 2020, 00:05:24
Das weiß ich auch noch nicht genau ;) Mein Gefühl sagt der RPi4 ist schon nah dran ^^.

Okay dann sollte ne VM dafür ja passen :-) Ich hoffe mal die meinst die 2GB Version ;-) (4GB geht natürlich auch)

Zitat von: sepia am 20 Februar 2020, 00:05:24
Bis jetzt nur "ASSIST" und "VOICE_COMMAND" , damit man die App als Google Assistant Ersatz auswählen kann. Genau genommen noch "com.android.music.metachanged" damit der music player registrieren kann ob eine App etwas abspielt (falls sie es denn broadcasted). Der Always-On Modus startet automatisch wenn man in den Settings "Track power status" an hat und das Stromkabel verbinden :D

[EDIT] Habs gefunden, etwas versteckt. Oder einfach anders als gewohnt. Hier die Lösung https://www.android-hilfe.de/forum/xiaomi-mi9.3504/amazon-alexa-statt-google-assistent-auf-mi9-ohne-root.927289.html (https://www.android-hilfe.de/forum/xiaomi-mi9.3504/amazon-alexa-statt-google-assistent-auf-mi9-ohne-root.927289.html)
Muss das Rom das speziell können, eigentlich doch standard. vielleicht hat sich da was zu Android 10 geändert. Aktuell bei meinem Xiaomi finde ich nämlich nicht mehr die Einstellung den Assistent zu tauschen. Ich weiss aber das es sie eigentlich gibt. Vorher hab ich immer AutoVoice als Googleassistent ersatz genommen. Zusammen mit Tasker und dann fhem, geht das ja auch ganz gut.


Zitat von: sepia am 20 Februar 2020, 00:05:24
Ich glaube es gibt eine "/etc/nginx/sites-enabled/default" wenn ich mich recht erinnere. Wenn man die löscht müsste es weg sein. Vielleicht kannst du dir dafür ein Skript machen, ich würde die gerne behalten, denn damit kann man ganz gut testen ob der Nginx überhaupt richtig läuft.

ja kann ich wohl machen :-) wenn das löschen reicht. werde ich probieren.

Zitat von: sepia am 20 Februar 2020, 00:05:24
Ich hatte kurz selbst vergessen, dass ich das doch schon hinzugefügt hatte ::) Die Daten werden auf jeden Fall gelesen. Generell kann die settings.js nur per Linux geändert werden (also Skript oder Hand), der Browser darf da nicht reinschreiben. Theoretisch könnte man sowas implementieren über ein selbstgemachtes CLEXI Plugin oder das Runtime Plugin einer Mesh-Node ... aber ich peile erstmal eine Option im setup.sh Skript an ;)

vielleicht noch ein set über das terminal.

Zitat von: sepia am 20 Februar 2020, 00:05:24
Hm komisch. Schwer zu sagen was da passiert aber der neue Docker Container ist fast fertig, vielleicht läuft es ja damit dann. Der "rm" auf die "log.out" kommt bei jedem Server Start, da schiebt er die alte log.out in den "logs" Ordner und fängt eine saubere an. Wenn er die schon nicht löschen kann deutet es darauf hin, dass da irgendwas keine Schreibberechtigung hat.
Spätestens ab dem Punkt, wo der "~/SEPIA" Ordner erstellt wird und die Zip Datei heruntergeladen wird sollte bei der Installation nichts mehr mit sudo gemacht werden. Wenn man das Raspberry Pi Skript (https://github.com/SEPIA-Framework/sepia-docs/wiki/Installation#raspberry-pi-in-general) nutzt und korrekt ohne sudo ausführt sollte bei den Zugriffsrechten eigentlich nichts schief gehen.

komische sache. ich beobachte das mal. bleib erstmal zumindest bei der Entwicklungszeit in der VM, dann ist man etwas flexibler bei den Updates.

Zitat von: sepia am 20 Februar 2020, 00:05:24
Der angegebene Hostname kommt aus $(hostname), was wiederum aus /etc/hostname kommt. Was macht die resolv.conf? Die IP kommt vom Netzwerkadapter, der aber leider virtuell sein kann. Ich fürchte mehr Infos über die "externe" Umgebung kriegt man nicht von innerhalb einer VM (oder doch?). Soweit ich weiß wird auch der Hostname nicht nach Außen durchgereicht.

Also betrachte mal kurz die VM als echten Rechner und dann in Linux denken (Das letztere fällt mir zwar manchmal schwer aber geht schon)
der hostname passt. in der resolv.conf landet der dns server und als "search domain.loc" die domaine die man beim setup eingibt. also wenn man das os installiert und dann eine domaine angibt.

so ich hab mal gegoogelt und den gefundenen snippsel auf unseren bedürfnisse angepasst hier:

domainsuffix=$(sed -e '1,1d' -e '3,4d' -e 's/search //' /etc/resolv.conf)
echo $domainsuffix


damit könntest du vielleicht dein skript noch etwas erweitert, wenn er fündig wird hängst du das an, und sonst schreibst du local rein.
Wäre das eine idee?

Zitat von: sepia am 20 Februar 2020, 00:05:24
Die Android Beta ist aktuell, die production version hängt mal wieder beim Google Play Support und kommt dann hoffentlich in spätestens 2 Tagen ...  >:(

Zitat von: sepia am 20 Februar 2020, 00:05:24
Den RPi Client sollte man frisch installieren am Besten, ja ;) ;D

hab ich gemacht, aber hab mich noch nicht getraut dein skript durch laufen zu lassen mit dem neuen "headless" client, aber meiner funktion weiterhin.
muss ich mir noch anschauen.

Bei meiner "blanken" testinstallation tut er sich aber noch etwas schwer mit dem verstehen, entfernung etwa 1 meter und respeaker 2 mic. wie sind da die erfahrungen?

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 08 März 2020, 17:52:32
Hallo zusammen,

ich hab nochmal ein wenig mit Sepia und der Spracheingabe und Ausgabe probiert. Leider klappt das noch nicht so wie gewünscht.
Zwei Beispiele habe ich mal angehängt. Sollten selbst erklärend sein, hoffe ich.

Was kann ich da machen oder anders machen?

Zusätzlich die Frage, wie unterscheide ich Zwei Lampen im gleichen Zimmer?
Das Thema gabs glaubig schon. Gibts da eine Empfehlung. Beim Durchnummerieren muss man sich ja ziemlich genau merken wo mann dann angefangen hat.
Wir reden jetzt noch nicht davon, das wenn Besuch da ist. Was dann passiert.

Aktuell direkt am Rechner, Verhalten am Android Client ist aber ähnlich.

Gutes Beispiel: Ver mal einen Timer / Wecker auf 17 Uhr 30 zu stellen. :-)

[EDIT] Die 1 wird im Satz sehr gerne als eins verstanden und damit "ungültig".

Ich hoffe wie immer das die Tests der Optimierung dienen.

Schönen Sonntag und guten Start in die Woche.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 08 März 2020, 22:09:55
Guten Abend,

bevor ich es wieder vergesse. Wie steht es bei Farbigen Leuchten um das Thema.
Schalte auf Grün. Schalte auf Blau etc. ?

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 19 März 2020, 10:44:07
Zitat von: whistler am 08 März 2020, 17:39:25
So ich brauchte mal ne Sepia "Pause".

Hehe np ;-)
Irgendwie habe ich verpasst, dass hier neue Nachrichten reinkamen, die Email Benachrichtigung hat wohl nicht funktioniert :o, deswegen die späte Antwort :-(

Zitat von: whistler am 08 März 2020, 17:39:25
so ich hab mal gegoogelt und den gefundenen snippsel auf unseren bedürfnisse angepasst hier:

domainsuffix=$(sed -e '1,1d' -e '3,4d' -e 's/search //' /etc/resolv.conf)
echo $domainsuffix


damit könntest du vielleicht dein skript noch etwas erweitert, wenn er fündig wird hängst du das an, und sonst schreibst du local rein.
Wäre das eine idee?

Bei meinem Pi spuckt der Befehl 'domain localdomain' aus, d.h. wenn ich "localdomain" sehe nutze ich ".local" ansonsten die domain, war das die Idee?

Zitat von: whistler am 08 März 2020, 17:39:25
Bei meiner "blanken" testinstallation tut er sich aber noch etwas schwer mit dem verstehen, entfernung etwa 1 meter und respeaker 2 mic. wie sind da die erfahrungen?

Der ReSpeaker 2 Mic läuft bei mir auch eher mäßig bei Distanzen größer als einer Armlänge. Mit dem Amazon Basics  (https://www.amazon.de/AmazonBasics-LJ-PUM-001-Tragbares-USB-Kondensatormikrofon/dp/B078GYH477/) habe ich sehr gute Erfahrungen und das "Original" von Samson (https://www.amazon.de/Samson-Clip-Mikrofon-Laptop-Computer/dp/B001R76D42/) wollte ich als nächstes probieren, das gibt es gerade zum gleichn Preis (33€).

Zitat von: whistler am 08 März 2020, 17:52:32
ich hab nochmal ein wenig mit Sepia und der Spracheingabe und Ausgabe probiert. Leider klappt das noch nicht so wie gewünscht.
Zwei Beispiele habe ich mal angehängt. Sollten selbst erklärend sein, hoffe ich.
[...]
Die 1 wird im Satz sehr gerne als eins verstanden und damit "ungültig".

Das mit den Zahlen ist leider ein bekanntes Problem, was ich schon länger auf der To-Do Liste habe. Leider gar nicht so trivial, aber ganz oben auf der Prio Liste für den open source ASR Server.

Zitat von: whistler am 08 März 2020, 17:52:32
Zusätzlich die Frage, wie unterscheide ich Zwei Lampen im gleichen Zimmer?
Das Thema gabs glaubig schon. Gibts da eine Empfehlung. Beim Durchnummerieren muss man sich ja ziemlich genau merken wo mann dann angefangen hat.
Wir reden jetzt noch nicht davon, das wenn Besuch da ist. Was dann passiert.
[...]
Wie steht es bei Farbigen Leuchten um das Thema.
Schalte auf Grün. Schalte auf Blau etc. ?

Für die neue Version habe ich die Erkennung von Gerätenamen eingebaut. Das NLU Modul lädt sich dafür die Namen der Geräte von FHEM rein und sucht danach FALLS es den Typen schon aus dem Satz erkennt. Ein Beispiel "Ambiente Licht einschalten" wurde bisher nur als "Licht" erkannt, da SEPIA aber in dem Fall erkennt dass es um Licht geht scant er alle bekannten Lichter und findet dann "Ambiente Licht" als Treffer. Die meisten Namen sollten damit dann klappen. Falls es keinen 100% Treffer gibt sollte er dann bei der Nachfrage nun auch den nächstbesten Treffer finden :-)

Die Erkennung für Farben gibt es eigentlich, nur der Smart Home Service kann damit noch nichts anfangen. Vielleicht krieg ich da noch was hin für die nächste Version.

Ansonsten bin ich gerade dabei die Geräteverwaltung noch weiter auszubauen mit einer SEPIA eigenen Datenbank, so dass man neue Geräte erstellen und diese dann mit einem speziellen HUB verbinden kann. Praktisch z.B. wenn man 2 FHEM Instanzen nutzt oder FHEM + X :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 24 März 2020, 21:30:27
Zitat von: sepia am 19 März 2020, 10:44:07
Hehe np ;-)
Irgendwie habe ich verpasst, dass hier neue Nachrichten reinkamen, die Email Benachrichtigung hat wohl nicht funktioniert :o, deswegen die späte Antwort :-(
np :-)


Zitat von: sepia am 19 März 2020, 10:44:07
Bei meinem Pi spuckt der Befehl 'domain localdomain' aus, d.h. wenn ich "localdomain" sehe nutze ich ".local" ansonsten die domain, war das die Idee?

was steht denn bei dir in /etc/resolv.conf ?
aber ja so in etwa war der plan genau

Zitat von: sepia am 19 März 2020, 10:44:07
Der ReSpeaker 2 Mic läuft bei mir auch eher mäßig bei Distanzen größer als einer Armlänge. Mit dem Amazon Basics  (https://www.amazon.de/AmazonBasics-LJ-PUM-001-Tragbares-USB-Kondensatormikrofon/dp/B078GYH477/) habe ich sehr gute Erfahrungen und das "Original" von Samson (https://www.amazon.de/Samson-Clip-Mikrofon-Laptop-Computer/dp/B001R76D42/) wollte ich als nächstes probieren, das gibt es gerade zum gleichn Preis (33€).

Wobei das bei Snips recht gut funktioniert hat, ich teste da nochmal mit, bzw. nutze ein alternatives mikro zum probieren.


Zitat von: sepia am 19 März 2020, 10:44:07
Das mit den Zahlen ist leider ein bekanntes Problem, was ich schon länger auf der To-Do Liste habe. Leider gar nicht so trivial, aber ganz oben auf der Prio Liste für den open source ASR Server.

Gut zu wissen, dann hab ich ja nichts falsch gemacht, und warte auf eine neue Version, bevor ich da mal weiter teste, also wenn du an dem Funkt gearbeitet hast.

Zitat von: sepia am 19 März 2020, 10:44:07
Für die neue Version habe ich die Erkennung von Gerätenamen eingebaut. Das NLU Modul lädt sich dafür die Namen der Geräte von FHEM rein und sucht danach FALLS es den Typen schon aus dem Satz erkennt. Ein Beispiel "Ambiente Licht einschalten" wurde bisher nur als "Licht" erkannt, da SEPIA aber in dem Fall erkennt dass es um Licht geht scant er alle bekannten Lichter und findet dann "Ambiente Licht" als Treffer. Die meisten Namen sollten damit dann klappen. Falls es keinen 100% Treffer gibt sollte er dann bei der Nachfrage nun auch den nächstbesten Treffer finden :-)

Die Erkennung für Farben gibt es eigentlich, nur der Smart Home Service kann damit noch nichts anfangen. Vielleicht krieg ich da noch was hin für die nächste Version.

Ansonsten bin ich gerade dabei die Geräteverwaltung noch weiter auszubauen mit einer SEPIA eigenen Datenbank, so dass man neue Geräte erstellen und diese dann mit einem speziellen HUB verbinden kann. Praktisch z.B. wenn man 2 FHEM Instanzen nutzt oder FHEM + X :-)

Okay hast du schon ein Planziel? Macht es sinn für eine Zwischenversion aus dem DEV. oder sollte ich lieber warten? Das mit dem Ambiente Licht Beispiel ist das was noch fehlt gerade, also was ich gerne testen würde.


Also wenn du das was zum testen hast, gerne bescheid geben.

Und bleibt Gesund.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 26 März 2020, 08:56:18
Zitat von: whistler am 24 März 2020, 21:30:27
was steht denn bei dir in /etc/resolv.conf ?

Bei meinem RPi3 steht:
domain localdomain
nameserver 192.168.0.1
nameserver fe80::1%wlan0

und bei meiner VM:
domain localdomain
search localdomain
nameserver 192.168.0.1

Ich nehme an meine Clients sehen alle so aus, da der Rest ja über Proxies auf anderen Maschinen läuft.

Zitat von: whistler am 24 März 2020, 21:30:27
Wobei das bei Snips recht gut funktioniert hat, ich teste da nochmal mit, bzw. nutze ein alternatives mikro zum probieren.

Bei Snips spielen ein paar Faktoren eine Rolle.
1) Das Sprachmodell ist normalerweise stark eingeschränkt auf die Befehle, die der Entwickler vorher definiert hat. Das kann man beim SEPIA STT Server auch machen, ist nur noch etwas umständlich weil es bei unbekannten Wörtern versagt und man diese dann erst per Hand ins Wörterbuch eintragen muss inklusive ihrer Phonems. Weniger bekannte Wörter -> weniger mögliche Fehler ;-)
2) Hattest du bei Snips als Wake-Word "Hey Snips" oder ein eigenes WW? "Hey Snips" ist wahrscheinlich stark optimiert gewesen durch eine große Menge an optimal aufgenommenen Sound Samples von diversen Sprechern. SEPIA hat Porcupine integriert, was eine etwas andere Technik benutzt, leichter zu integrieren ist, auf allen Plattformen arbeitet, aber dafür wahrscheinlich stärker schwankt in der Qualität, abhängig vom WW und Mikrofon.
3) Eventuell gab es noch spezielle Anpassungen für die Mikrofone von Seeed Studio, sprich Audio Samples wurden damit aufgenommen etc., da bin ich aber nicht sicher.

Zitat von: whistler am 24 März 2020, 21:30:27
Okay hast du schon ein Planziel? Macht es sinn für eine Zwischenversion aus dem DEV. oder sollte ich lieber warten? Das mit dem Ambiente Licht Beispiel ist das was noch fehlt gerade, also was ich gerne testen würde.

Die Änderungen sind im DEV und ich würde mich über Feedback freuen :-) ... würde allerdings auch empfehlen ein Backup deiner aktuellen Version zu machen vorher, da ich noch an einem Feature arbeite, dass 2 neue Indices in der DB erzeugt und diese sich eventuell noch etwas ändern werden :-D

Zitat von: whistler am 24 März 2020, 21:30:27
Und bleibt Gesund.

Du auch ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 26 März 2020, 17:59:21
Zitat von: sepia am 26 März 2020, 08:56:18
Die Änderungen sind im DEV und ich würde mich über Feedback freuen :-) ... würde allerdings auch empfehlen ein Backup deiner aktuellen Version zu machen vorher, da ich noch an einem Feature arbeite, dass 2 neue Indices in der DB erzeugt und diese sich eventuell noch etwas ändern werden :-D

Du auch ;-)

Okay dann warte ich bis du dich für die zwei Indices entschieden hast. Dann zieh ich mit den DEV Stand.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 28 März 2020, 11:48:48
Zitat von: sepia am 26 März 2020, 08:56:18
Bei meinem RPi3 steht:
domain localdomain
nameserver 192.168.0.1
nameserver fe80::1%wlan0

und bei meiner VM:
domain localdomain
search localdomain
nameserver 192.168.0.1

Ich nehme an meine Clients sehen alle so aus, da der Rest ja über Proxies auf anderen Maschinen läuft.

Ich schaue mir das bei gelegenheit nochmal an, das passt noch nicht so ganz.

Zitat von: sepia am 26 März 2020, 08:56:18
Bei Snips spielen ein paar Faktoren eine Rolle.
1) Das Sprachmodell ist normalerweise stark eingeschränkt auf die Befehle, die der Entwickler vorher definiert hat. Das kann man beim SEPIA STT Server auch machen, ist nur noch etwas umständlich weil es bei unbekannten Wörtern versagt und man diese dann erst per Hand ins Wörterbuch eintragen muss inklusive ihrer Phonems. Weniger bekannte Wörter -> weniger mögliche Fehler ;-)
2) Hattest du bei Snips als Wake-Word "Hey Snips" oder ein eigenes WW? "Hey Snips" ist wahrscheinlich stark optimiert gewesen durch eine große Menge an optimal aufgenommenen Sound Samples von diversen Sprechern. SEPIA hat Porcupine integriert, was eine etwas andere Technik benutzt, leichter zu integrieren ist, auf allen Plattformen arbeitet, aber dafür wahrscheinlich stärker schwankt in der Qualität, abhängig vom WW und Mikrofon.
3) Eventuell gab es noch spezielle Anpassungen für die Mikrofone von Seeed Studio, sprich Audio Samples wurden damit aufgenommen etc., da bin ich aber nicht sicher.

Hey Snips war das WW, ich spiele dann nochmal nach einspielen der nächsten DEV (nach deine Indices Festlegung) mit den Soundsettings rum, evtl kann man da noch was einstellen. Linux und Audio hat ja so seine eigenheiten. :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: JensS am 02 Mai 2020, 10:08:47
Hallo Florian,

vor einiger Zeit hatte ich versucht SEPIA zum laufen zu bekommen. Irgendwie hatte ich es auch geschafft aber beim Zusammenspiel mit FHEM gab es Probleme, so dass ich es auf Eis legte. Nun möchte ich es erneut probieren und bitte dich um Hilfe bei ein paar (für dich) einfachen Fragen.
Wie kann ich den Assist-Server updaten? Dieser lauft auf einem amd64-PC.
Wie kann ich auf einen vorhandenen RPI3B+ (Debian Buster) einen Client installieren. Dieser hate ein ReSpeeker-Hat.
FHEM läuft auf einem separaten Server.

Vielen Dank im voraus.

Gruß Jens
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 03 Mai 2020, 19:38:21
Hallo Florian,

Zitat von: whistler am 26 März 2020, 17:59:21
Okay dann warte ich bis du dich für die zwei Indices entschieden hast. Dann zieh ich mit den DEV Stand.

ich wollte nur mal nachfragen, da du aktuell ja ein neues Feature eingecheckt hast :-) Ob du dich mit den Indicies einigen konntest.
Dann könnte ich das aktuell pausierende Sepia mal wieder rausholen und updaten.

Schönen Sonntag und guten Wochenstart.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Mai 2020, 20:28:04
Zitat von: whistler am 03 Mai 2020, 19:38:21
Hallo Florian,

ich wollte nur mal nachfragen, da du aktuell ja ein neues Feature eingecheckt hast :-) Ob du dich mit den Indicies einigen konntest.
Dann könnte ich das aktuell pausierende Sepia mal wieder rausholen und updaten.

Schönen Sonntag und guten Wochenstart.

Gruß
Basti

Ich hab mal die DEV 2.5.0 eingespielt und nach Anfangsproblemen lies es sich dann auch letzte Tage kompilieren.
Aktuell versuche ich die ganze Geräte zu aktivieren und bei der Lampe heisst es dann (Licht im Garten auf an Okay.)
Wenn ich das richtig sehe, gibt er ja bei der Rückmeldung den Raum an der als sepia-room gepflegt ist, und da fehlt mir quasi noch was. :-)

Meinst du, das du zur 2.5.0 noch eine "Terrasse" rein bekommst?

Vielen Dank.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Mai 2020, 21:12:14
Hallo Florian,

nochmal eine kurze Frage, zu den typen "device" und "others" mir war so, als ob die bei fhem noch nicht 100% unterstützt werden.

Ich habe eine Pumpe, welche vom Typ Device ist sie ist im Garten "weil keine Terrasse",
aber ich kann sie nicht schalten leider. Hab jetzt so alles mögliche probiert.

Hast du hier einen Tipp oder ist meine Annahme richtig, das es noch nicht geht.

Vielen Dank

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Mai 2020, 18:50:03
Hallo Florian,

noch eine Frage die du sicher aus dem Arm schütteln kannst. Ich hab mich jetzt schon mehrfach mit dem MaryTTS aus dem DEV rumgeschlagen.

Und zwar ich find die Stelle für das Binding an localhost nicht, ist das fest beim kompilieren passiert.

Wie immer wäre ein Tipp Gold wert.

Vielen Dank.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 19 Mai 2020, 23:43:44
Hallo zusammen. Sorry für die späten Antworten ich glaube wenn mein Username nicht zitiert wird kriege ich keine automatische Benachrichtigung und ich war selbst so aufs neue Update fixiert dass ich nicht reingeguckt hatte :-/

Kurzes Update zum allgemeinen Stand: SEPIA v2.5.0 ist fast fertig, ich planen den Release für dieses Wochenende, falls ich keine groben Bugs mehr finde. Durch den Umfang hat sich leider alles etwas in die Länge gezogen aber dafür wird es jede Menge neuer Sachen zum spielen geben (mehr TTS Stimmen, Wake-Word Optionen, MQTT, ioBroker, Mixed Smart Home Setups (z.B. FHEM + OpenHAB + MQTT gleichzeitig oder FHEM 1 + FHEM 2 +... ^^), gZIP Support für FHEM, Berücksichtigung von Gerätenamen uvm. 8)

Zitat von: JensS am 02 Mai 2020, 10:08:47
Hallo Florian,

vor einiger Zeit hatte ich versucht SEPIA zum laufen zu bekommen. Irgendwie hatte ich es auch geschafft aber beim Zusammenspiel mit FHEM gab es Probleme, so dass ich es auf Eis legte. Nun möchte ich es erneut probieren und bitte dich um Hilfe bei ein paar (für dich) einfachen Fragen.
Wie kann ich den Assist-Server updaten? Dieser lauft auf einem amd64-PC.
Wie kann ich auf einen vorhandenen RPI3B+ (Debian Buster) einen Client installieren. Dieser hate ein ReSpeeker-Hat.
FHEM läuft auf einem separaten Server.

Vielen Dank im voraus.

Gruß Jens

Hi Jens,
Im SEPIA Ordner gibt es ein Update Skript (ab Verison 2.4.0 glaube ich), das wäre einen Versuch wert, vorher aber bitte ein Backup vom '~/SEPIA' Ordner erstellen ^^.
Das Skript sollte Folgendes machen:

- 'backup-sepia.sh' ausführen (das macht ein Backup von der Datenbank, SDK und Config Dateien, allerdings nicht von z.B. DuckDNS Einstellungen oder selbst signierten SSL Certs)
- neue Version runterladen
- alten '~/SEPIA' Ordner umbenennen zu '~/SEPIA_...'
- neue Version nach '~/SEPIA' entpacken
- Backup aus Schritt 1 in den neuen Order entpacken
- einmal kurz 'setup.sh' ausführen um sicher zu stellen, dass alle Skripte ausführbar sind

Ich hatte allerdings letztens noch einen Bug behoben weshalb man es vielleicht besser per Hand macht. Wenn du vorher nicht allzu viel konfiguriert hattest in SEPIA lohnt sich eventuell eine frische Installation (~/SEPIA Ordner löschen und dann einfach die neue Version entpacken und noch mal das Setup ausführen).

Zu deiner zweiten Frage: Hier ist ein Anleitung für den DIY Client (https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/master/sepia-client-installation/rpi). Hattest du die schon gesehen?

Zitat von: whistler am 03 Mai 2020, 19:38:21
Hallo Florian,

ich wollte nur mal nachfragen, da du aktuell ja ein neues Feature eingecheckt hast :-) Ob du dich mit den Indicies einigen konntest.
Dann könnte ich das aktuell pausierende Sepia mal wieder rausholen und updaten.

Hi Basti,
an den Indicies hat sich erfreulicherweise nichts mehr geändert. Der aktuelle Dev Branch wird vermutlich bis zum Release nur noch minimale Änderungen erfahren. Ein Feedback würde mich sehr interessieren ;-)

Zitat
Ich hab mal die DEV 2.5.0 eingespielt und nach Anfangsproblemen lies es sich dann auch letzte Tage kompilieren.
Aktuell versuche ich die ganze Geräte zu aktivieren und bei der Lampe heisst es dann (Licht im Garten auf an Okay.)
Wenn ich das richtig sehe, gibt er ja bei der Rückmeldung den Raum an der als sepia-room gepflegt ist, und da fehlt mir quasi noch was. :-)

Meinst du, das du zur 2.5.0 noch eine "Terrasse" rein bekommst?

Ah, du warst schon schneller als ich  ;D
Ja, ich glaube das schaffe ich noch für den Release ;-)

Zitat
nochmal eine kurze Frage, zu den typen "device" und "others" mir war so, als ob die bei fhem noch nicht 100% unterstützt werden.

Ich habe eine Pumpe, welche vom Typ Device ist sie ist im Garten "weil keine Terrasse",
aber ich kann sie nicht schalten leider. Hab jetzt so alles mögliche probiert.

Hast du hier einen Tipp oder ist meine Annahme richtig, das es noch nicht geht.

In Version v2.5.0 müsste folgendes gehen, wenn du dem Gerät den Namen "Pumpe" gibst: "Gerät Pumpe im Garte einschalten" oder wenn es die einzige Pumpe ist: "Geräte Pumpe einschalten".
Das kleine Wort "Gerät" macht hier den Unterschied und ist leider nötig, damit der Befehl überhaupt getriggert wird. Alternativ kannst du natürlich über das Teach-Interface den Befehl "Auf geht's Pumpe" definieren (o.ä. ^^).

Zitat
noch eine Frage die du sicher aus dem Arm schütteln kannst. Ich hab mich jetzt schon mehrfach mit dem MaryTTS aus dem DEV rumgeschlagen.

Und zwar ich find die Stelle für das Binding an localhost nicht, ist das fest beim kompilieren passiert.

Wie immer wäre ein Tipp Gold wert.

In der 'assist.custom.properties' Datei (~/SEPIA/sepia-assist-server/Xtensions) müsstest du den Eintrag 'marytts_server=http\://127.0.0.1\:59125' finden. Falls der bei dir nicht da ist kannst du ihn einfach erstellen.
Willst du den Server auf einem anderen Rechner hosten?
Ein kleiner Hinweis: Ich habs noch nicht genug getestet aber ich empfehle den MaryTTS Server nicht parallel zu SEPIA auf dem RPi (<=3) laufen zu lassen, da die 1GB RAM schon am Limit sind :-/. Die Geschwindigkeit war mir auch etwas zu niedrig. RPi4 ab 2GB RAM sollte klappen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 20 Mai 2020, 00:13:56
Hi Florian, die Kurzform weil schon spät :-)

Zitat von: sepia am 19 Mai 2020, 23:43:44
Ah, du warst schon schneller als ich  ;D
Ja, ich glaube das schaffe ich noch für den Release ;-)

Das wäre ein Traum, ich wollte noch ein zweites haben, aber das ist mir Entfallen aktuell. :-)
Achso doch sowas wie Durchgang. Dann könnte ich zwischen Flur und Druchgang unterscheiden.

Danke.


Zitat von: sepia am 19 Mai 2020, 23:43:44
In der 'assist.custom.properties' Datei (~/SEPIA/sepia-assist-server/Xtensions) müsstest du den Eintrag 'marytts_server=http\://127.0.0.1\:59125' finden. Falls der bei dir nicht da ist kannst du ihn einfach erstellen.
Willst du den Server auf einem anderen Rechner hosten?
Ein kleiner Hinweis: Ich habs noch nicht genug getestet aber ich empfehle den MaryTTS Server nicht parallel zu SEPIA auf dem RPi (<=3) laufen zu lassen, da die 1GB RAM schon am Limit sind :-/. Die Geschwindigkeit war mir auch etwas zu niedrig. RPi4 ab 2GB RAM sollte klappen.

Ähm nein andersrum. Ich möchte gerne den MaryTTS ausserhalb von Localhost aufrufen. Das lässt er aber aktuell nicht zu.

Und nein er läuft doch mittlerweile in einer VM glaube mit 4GB Ram. Ggf. würde ich in einem nächsten Schritt sonst den MaryTTS Dienst auslagern.
Aber erstmal würde ich quasi nicht über localhost:59125 sondern per sepia-srv:59125 drauf zugreifen.
Bin mir aber nicht sicher ob das irgendwo Fest in den MaryTTS Sourcen verdrahtet ist.

Vielen Dank.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 20 Mai 2020, 00:50:17
Zitat von: whistler am 20 Mai 2020, 00:13:56
Das wäre ein Traum, ich wollte noch ein zweites haben, aber das ist mir Entfallen aktuell. :-)
Achso doch sowas wie Durchgang. Dann könnte ich zwischen Flur und Druchgang unterscheiden.

Balkon ist mir gerade auch noch eingefallen. Wegen Durchgang muss ich mal gucken, das scheint mir sehr unüblich irgendwie ^^.

Zitat von: whistler am 20 Mai 2020, 00:13:56
Ähm nein andersrum. Ich möchte gerne den MaryTTS ausserhalb von Localhost aufrufen. Das lässt er aber aktuell nicht zu.

Ach so ;D . Ah gute Frage, da muss ich selber noch mal gucken. Eventuell ist das ein command-line Parameter.

Zitat
In Version v2.5.0 müsste folgendes gehen, wenn du dem Gerät den Namen "Pumpe" gibst: "Gerät Pumpe im Garte einschalten" oder wenn es die einzige Pumpe ist: "Geräte Pumpe einschalten".

Das habe ich gerade noch mal getestet und geht doch noch nicht :-/ Er erkennt nur sowas wie "Gerät 1, Gerät 2 ...". Da werde ich noch mal nachbessern ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 20 Mai 2020, 09:33:55
Zitat von: sepia am 20 Mai 2020, 00:50:17
Balkon ist mir gerade auch noch eingefallen. Wegen Durchgang muss ich mal gucken, das scheint mir sehr unüblich irgendwie ^^.

Ach so ;D . Ah gute Frage, da muss ich selber noch mal gucken. Eventuell ist das ein command-line Parameter.

Das habe ich gerade noch mal getestet und geht doch noch nicht :-/ Er erkennt nur sowas wie "Gerät 1, Gerät 2 ...". Da werde ich noch mal nachbessern ^^.

Kurzform weil von Unterwegs
Terrasse Balkon und den Durchgang lass weg.

Ja das wäre Nice. Ich hab da leider nix finden können und er bindet ihn immer fest an localhost

Okay dann wird das ja bald mit den Geräten etc.

Vielen Dank
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 20 Mai 2020, 22:10:34
Zitat von: whistler am 20 Mai 2020, 09:33:55
Ja das wäre Nice. Ich hab da leider nix finden können und er bindet ihn immer fest an localhost

Ich habe ein wenig im Code gestöbert, es müsste (nicht getestet) über folgenden Kommandozeilenbefehl laufen:

bin/marytts-server -Dsocket.addr=localhost -Dsocket.port=54321

Alternativ würde ich empfehlen einfach in dem Proxy deiner Wahl eine zusätzliche Weiterleitung für den MaryTTS Server einzurichten ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 21 Mai 2020, 13:35:22
Zitat von: sepia am 20 Mai 2020, 22:10:34
Ich habe ein wenig im Code gestöbert, es müsste (nicht getestet) über folgenden Kommandozeilenbefehl laufen:

bin/marytts-server -Dsocket.addr=localhost -Dsocket.port=54321

Alternativ würde ich empfehlen einfach in dem Proxy deiner Wahl eine zusätzliche Weiterleitung für den MaryTTS Server einzurichten ;-)

Ich bin mir nicht sicher ob wir doch noch aneinander vorbei geredet haben. :-)
Oder meintest du einen Proxy auf der selben Maschine für den Zugriff von Aussen?
Also deine Parameter waren auch meine Gedanken aber leider klappt das nicht so wie gewünscht,
weil scheinbar im Source danach wieder auf 127.0.0.1 und 59125 gebunden wird.

Ich habe nun folgende Anpassung bei mir gemacht:

cd ~/SEPIA/
nano restart-sepia.sh
nano on-reboot.sh


Das restart-sepia.sh sieht nun wie folgt aus. Ich bin noch nicht 100% Glücklich da es so ja nicht ganz Updatesicher ist.
Aber zumindest klappt der Aufruf damit erst ausserhalb des Server direkt am Client.


#!/bin/bash
#Preliminary restart script, we should replace the sleep with a real check, e.g. via HTTP GET
./shutdown-sepia.sh
sleep 5
export MARYTTS_SERVER_OPTS="-Dsocket.addr=0.0.0.0 -Dsocket.port=59125"
echo
echo Optional Addon Paramter MaryTTS: $MARYTTS_SERVER_OPTS
echo
./run-sepia.sh
netstat --tcp --udp --listening --program --numeric


~/.bashrc wäre vielleicht noch ein wenig um den Wert zu überschreiben. (Funktioniert auch nicht sauber)

[EDIT]
Hab es nun in den Crontab beim booten eingebaut. Vielleicht magst du es in irgendeiner Form übernehmen

@reboot sleep 60 && export MARYTTS_SERVER_OPTS="-Dsocket.addr=0.0.0.0 -Dsocket.port=59125" && ~/SEPIA/on-reboot.sh;


Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 22 Mai 2020, 11:22:57
Zitat von: whistler am 21 Mai 2020, 13:35:22
Ich bin mir nicht sicher ob wir doch noch aneinander vorbei geredet haben. :-)
Oder meintest du einen Proxy auf der selben Maschine für den Zugriff von Aussen?

Ja, also ein/den Proxy auf der selben Machine wie der MaryTTS Server ;-) (ggf. der gleiche, der für SEPIA genutzt wird)

Zitat von: whistler am 21 Mai 2020, 13:35:22
[EDIT]
Hab es nun in den Crontab beim booten eingebaut. Vielleicht magst du es in irgendeiner Form übernehmen

@reboot sleep 60 && export MARYTTS_SERVER_OPTS="-Dsocket.addr=0.0.0.0 -Dsocket.port=59125" && ~/SEPIA/on-reboot.sh;


Ah, gut zu wissen! :-)
Ich werde es auf jeden Fall mal in die MaryTTS INSTALL.md im Server Ordner aufnehmen, generell würde ich den Standard aber so lassen, dass der Server abgesichert bleibt und nur optional freigegeben werden kann vom User.
Es gibt natürlich immer auch die Möglichkeit den SEPIA TTS Endpoint direkt anzusprechen statt den MaryTTS Server. Das erfordert allerdings eine Authentifizierung, die das ganze sicher etwas komplizierter macht.

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 31 Mai 2020, 15:48:02
Hallo Florian,

ich verteile gerade den Client und bekomme bei einem Pi folgenden Fehler:

pi@sz-pi:~/clexi $ node --title=clexi-server.js server.js
Server with ID 'clexi-86' running at: http://127.0.0.1:8080
Hostname: localhost - SSL: false
CLEXI Xtensions loaded: 3
/home/pi/clexi/node_modules/@abandonware/noble/lib/hci-socket/hci.js:101
    this._deviceId = this._socket.bindRaw(deviceId);
                                  ^

Error: ENODEV, No such device
    at Hci.init (/home/pi/clexi/node_modules/@abandonware/noble/lib/hci-socket/hci.js:101:35)
    at NobleBindings.init (/home/pi/clexi/node_modules/@abandonware/noble/lib/hci-socket/bindings.js:82:13)
    at Noble.<anonymous> (/home/pi/clexi/node_modules/@abandonware/noble/lib/noble.js:57:24)
    at processTicksAndRejections (internal/process/task_queues.js:79:9)


[EDIT]: Mir scheint das Bluettooth auf dem PI läuft nicht sauber. Kann ich das abschalten, damit er das nicht lädt?
Aktuell nutze ich den BLE teil eh noch nicht, würde mir zum testen reichen.

Hast du hierzu eine Idee, was er nicht mag, ich vermute aufgrund von hci irgendwas wegen Bluetooth und dem BLE?

Vielen Dank

Und schöne Pfingstage

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 02 Juni 2020, 22:12:15
Zitat von: whistler am 31 Mai 2020, 15:48:02
[EDIT]: Mir scheint das Bluettooth auf dem PI läuft nicht sauber. Kann ich das abschalten, damit er das nicht lädt?
Aktuell nutze ich den BLE teil eh noch nicht, würde mir zum testen reichen.

Hast du hierzu eine Idee, was er nicht mag, ich vermute aufgrund von hci irgendwas wegen Bluetooth und dem BLE?

Hi,

welcher Pi ist das? Eine Version kleiner als 3?
Den Fehler kenne ich bisher nur von anderen Linux Versionen, aber vermutlich lässt es sich beheben durch das Entfernen des Bluetooth Plugins aus der CLEXI Settings Datei.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 02 Juni 2020, 22:21:47
Zitat von: sepia am 02 Juni 2020, 22:12:15
Hi,

welcher Pi ist das? Eine Version kleiner als 3?
Den Fehler kenne ich bisher nur von anderen Linux Versionen, aber vermutlich lässt es sich beheben durch das Entfernen des Bluetooth Plugins aus der CLEXI Settings Datei.

Nabend,

es ist ein 3+. Die Installationen sind eigentlich alle gleich, aber wie es eben so ist, manche sind gleicher als andere. :-) Ich hab nachdem der Bluetoothstack gar nicht wollte am Wochenende dann die Installation auf dem PI weggeschmissen und geclont. Ich hatte es gestern abend soweit, das alle PIs Sepia sprechen konnten, noch mit meinem vorab "gepatchen" Startskript aus den ersten Headless Versionen.
Ich bin aber noch nicht durch sonst hätte ich schon geschrieben. Irgendwie war das Bluetooth Modul Softwareseitig "aus" und ich habs nicht gefunden wo.

Noch eben zwei Rückmeldungen für dich also Info, bezogen auf alte Kommentare.
Qualität Respeaker 2 Module die Mics sind mehr als ausreichend. Erkennung klappt sehr gut. Nur mit dem Wakeword "Hey Sepia" da hakelt es im Bezug auf die Lautstärke meiner Stimme und wie man das Hey betont, da ist es etwas "zickig" wenn man das so sagen kann.

Ich hab aber im Changelog gelesen das du da einiges in der 2.5.0 getan hast zum Thema Wakeword daher wollte ich die fertige Version inkl. Doku abwarten. Damit ich testen und dort nachlesen kann :-) Thema Stimme Tauschen wäre dann auch noch interessant. (geht sicher auch schon) :-)

"Das Gerät Bewässerung auf der Terrasse einschalten" geht schon :-)

So mal als fixes Zwischenfeedback zur Dev. Hast du schon nen Release Termin ins Auge gefasst? :-)

Vielen Dank und schönen abend noch.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 02 Juni 2020, 23:29:01
Zitat von: whistler am 02 Juni 2020, 22:21:47
Irgendwie war das Bluetooth Modul Softwareseitig "aus" und ich habs nicht gefunden wo.

Ah, das wäre meine zweite Vermutung gewesen ^^.

Zitat von: whistler am 02 Juni 2020, 22:21:47
Qualität Respeaker 2 Module die Mics sind mehr als ausreichend. Erkennung klappt sehr gut. Nur mit dem Wakeword "Hey Sepia" da hakelt es im Bezug auf die Lautstärke meiner Stimme und wie man das Hey betont, da ist es etwas "zickig" wenn man das so sagen kann.

Ok gut zu wissen. Mit der neuen Version könntest du ja mal ein paar andere WWs probieren. Z.B. "Raspberry" oder "Terminator" (da sind ein paar lustige dabei, nicht alle nützlich allerdings). Picovoice hat Gestern eine neue Version veröffentlicht die angeblich noch viel besser sein soll, allerdings bewegen die sich immer weiter weg von open-source leider :-(

Zitat von: whistler am 02 Juni 2020, 22:21:47
Thema Stimme Tauschen wäre dann auch noch interessant. (geht sicher auch schon) :-)

Der MaryTTS Server hat mmn die besten Stimmen in SEPIA v2.5.0 aber der Pi3 hat da leider etwas zu kämpfen mit. Der 4er sollte problemlos laufen. Pico TTS ist auch ok aber nicht so "charmant" wie die alte Espeak Robo Stimme finde ich (ich mag die Stimme irgendwie, Früher fand ich sie aber auch schlecht :-p).
Als nächstes wollte ich mal ... aufgepasst ... was von der Bildzeitung probieren ;D ... tatsächlich haben die eine KI Abteilung, also der Axel Springer Verlag und die haben eine interessante open-source TTS Version (ein Fork von Microsoft glaube ich). Die Qualität ist enorm gut. Es tut sich momentan irgendwie recht viel im TTS Bereich. Mozilla arbeitet auch hart dran, aber für den Pi ist das alles noch nix und auch für Deutsch gibt es noch zu wenig.

Zitat von: whistler am 02 Juni 2020, 22:21:47
"Das Gerät Bewässerung auf der Terrasse einschalten" geht schon :-)

;D :)

Zitat von: whistler am 02 Juni 2020, 22:21:47
So mal als fixes Zwischenfeedback zur Dev. Hast du schon nen Release Termin ins Auge gefasst? :-)

Seit Tagen rede ich mir ein "diese Woche", ich glaube diese Woche klappts aber wirklich :-D. Es sind keine Änderungen mehr geplant, nur noch Aufschreiben und ein finaler Test. Ach und den Docker Container muss ich auch noch etwas anpassen.

Zitat von: whistler am 02 Juni 2020, 22:21:47
Vielen Dank und schönen abend noch.

Danke dir auch :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 02 Juni 2020, 23:47:14
Zitat von: sepia am 02 Juni 2020, 23:29:01
Ok gut zu wissen. Mit der neuen Version könntest du ja mal ein paar andere WWs probieren. Z.B. "Raspberry" oder "Terminator" (da sind ein paar lustige dabei, nicht alle nützlich allerdings). Picovoice hat Gestern eine neue Version veröffentlicht die angeblich noch viel besser sein soll, allerdings bewegen die sich immer weiter weg von open-source leider :-(

Hast du schon nen Link, oder fehlt das noch in der Doku, wo ich gucken kann? Oder hast du ein Stichwort?
[EDIT] mir scheint als hätte ich den neuen headless client noch nicht wie er im dev changelog eingetragen ist, aber ich finde ihn auch nicht im dev.
Ich glaube ich brauch wirklich einen kleinen Wink mit dem Zaunpfahl von dir?

Zitat von: sepia am 02 Juni 2020, 23:29:01
Der MaryTTS Server hat mmn die besten Stimmen in SEPIA v2.5.0 aber der Pi3 hat da leider etwas zu kämpfen mit. Der 4er sollte problemlos laufen. Pico TTS ist auch ok aber nicht so "charmant" wie die alte Espeak Robo Stimme finde ich (ich mag die Stimme irgendwie, Früher fand ich sie aber auch schlecht :-p).
Als nächstes wollte ich mal ... aufgepasst ... was von der Bildzeitung probieren ;D ... tatsächlich haben die eine KI Abteilung, also der Axel Springer Verlag und die haben eine interessante open-source TTS Version (ein Fork von Microsoft glaube ich). Die Qualität ist enorm gut. Es tut sich momentan irgendwie recht viel im TTS Bereich. Mozilla arbeitet auch hart dran, aber für den Pi ist das alles noch nix und auch für Deutsch gibt es noch zu wenig.

Ja das klingt brauchbar, nehme an da spielen die Parameter DE Voice in den settings vom headless client rein. Hast du hier sonst ebenfalls ein Stichwort?

Zitat von: sepia am 02 Juni 2020, 23:29:01
Seit Tagen rede ich mir ein "diese Woche", ich glaube diese Woche klappts aber wirklich :-D. Es sind keine Änderungen mehr geplant, nur noch Aufschreiben und ein finaler Test. Ach und den Docker Container muss ich auch noch etwas anpassen.

Das hab ich irgendwo schon gelesen ja, entweder bei git oder hier :-)

Da fällt mir noch was ganz anderes ein, man konnte den Piep Ton, also fürs Mic tauschen, ich glaube das war in einem issue auf git.
Hast du das auch geplant für die Android App. das Würde ich dann sowohl am headless oder nicht ganz headless client testen wollen.
[EDIT] Am "Client" hab ichs gefunden, tauschen funktioniert auch. Vielleicht hast du auch noch eine Lösung für den Android Client in der Tasche irgendwann :-)

Aktuell hab ich die pis her hdmi am fernseher hängen um das timing zwischen mic drücken (per sepia console der mic button) und dann zu gucken was er macht. :-) wie gesagt wake word hakelt siehe oben teste ich aber gerne die anderen.

Hatte ich sogar für morgen da liegen, da ich aktuell mittendrin bin (die ps3 eye cam klappt auch als mic sehr gut).

Zum Thema Hardware, die pis machen nur den headless client part. der marytts sepia und tts server laufen via vm auf richtiger hardware. damit sie nicht so schnell ins straucheln kommen.

In den Einstellungen bei Hey Sepia gibts den Punkt allow locale/remote, können damit die mics übergreifend erfassen? so richtig hab ich das noch nicht verstanden. Sonst müsste ich nochmal in die Doku gucken, wenns da erklärt ist.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 03 Juni 2020, 14:43:17
Zitat von: whistler am 02 Juni 2020, 23:47:14
Hast du schon nen Link, oder fehlt das noch in der Doku, wo ich gucken kann? Oder hast du ein Stichwort?

Hier gibt es ein paar Infos dazu: Wake-Word Readme (https://github.com/SEPIA-Framework/sepia-html-client-app/blob/dev/www/xtensions/picovoice/README.md)
Die müsste auch in deinem Client Ordner sein falls du eine neue Version hast (/clexi/www/sepia/xtensions/picovoice/README.md).

Zitat von: whistler am 02 Juni 2020, 23:47:14
Ja das klingt brauchbar, nehme an da spielen die Parameter DE Voice in den settings vom headless client rein. Hast du hier sonst ebenfalls ein Stichwort?

Meinst du um Mary-TTS zum Laufen zu bekommen? Die README (https://github.com/SEPIA-Framework/sepia-assist-server/blob/dev/Xtensions/TTS/marytts/INSTALL.md) dazu kennst du glaube ich schon oder? Wenn der Server richtig erkannt wurde kann man in den Client Settings bei "Voice" 6 Mary-TTS Stimmen auswählen (oder waren es 7 ^^). "Voice engine" muss dafür auf custom stehen ("speech-voice-engine": "sepia"). Im DIY/headless Client kann man über die settings.js die Stimme wählen. Dazu einfach bei "en-voice" und/oder "de-voice" was eintragen. Die Namen kannst du dir aus deinem Desktop Client oder der App abgucken (hab die gerade auswendig nicht parat aber sowas wie "de-DE_marytts_m" o.ä.).

Zitat von: whistler am 02 Juni 2020, 23:47:14
Da fällt mir noch was ganz anderes ein, man konnte den Piep Ton, also fürs Mic tauschen, ich glaube das war in einem issue auf git.
Hast du das auch geplant für die Android App. das Würde ich dann sowohl am headless oder nicht ganz headless client testen wollen.

Bei der Android App ist das nicht so ganz einfach weil ich dann die Soundfiles zur Auswahl mit der App hochladen müsste in den Playstore (wovon manche eventuell noch Lizenzbedingt Probleme geben könnte, z.B. Star Trek Sachen ^^). Ich denke das wird erstmal nicht möglich sein, aber eventuell würde ich 1-2 alternative Sounds in Betracht ziehen wenn du gute hast ;-)

Zitat von: whistler am 02 Juni 2020, 23:47:14
die ps3 eye cam klappt auch als mic sehr gut

Davon habe ich auch eine hier rumliegen, weil ich schon oft gelesen hatte dass die so gut wäre aber es war etwas tricky die zu installieren wenn ich mich recht erinnere (schon ne Weile her).

Zitat von: whistler am 02 Juni 2020, 23:47:14
Zum Thema Hardware, die pis machen nur den headless client part. der marytts sepia und tts server laufen via vm auf richtiger hardware. damit sie nicht so schnell ins straucheln kommen.

Für Mary-TTS müsstest du bei den SEPIA Server Settings noch mal gucken und die Adresse zum Mary-TTS Server eingetragen (es gibt ein Mary-TTS Eintrag weiter unten irgendwo). Ich gebe aber zu das habe ich noch nicht getestet ^^, sollte aber klappen ... ^^.

Zitat von: whistler am 02 Juni 2020, 23:47:14
In den Einstellungen bei Hey Sepia gibts den Punkt allow locale/remote, können damit die mics übergreifend erfassen? so richtig hab ich das noch nicht verstanden. Sonst müsste ich nochmal in die Doku gucken, wenns da erklärt ist.

"allow locale/remote wake-word" ist die Einstellung, die generell erlaubt, dass das WW benutzt wird. Der "remote" Teil bezieht sich den Server Endpoint "/remote-action", über den man auch das Mikrofon im Client triggern kann. Im Grunde wie bei der CLEXI Verbindung nur durch das Passwort des User-Accounts abgesichert und "global" gesteuert.
Mit "Mics übergreifend" meinst du quasi dass das Mikrofon des einen Client das Wake-Word eines anderen Clients bedient? Das geht noch nicht, man könnte sowas aber hinbekommen wenn man oben erwähnten "/remote-action" Endpoint nutzt und das Wake-Word wieder über die "alten" Wake-Word Tools (ein Repo im SEPIA GitHub ziemlich weit unten) einrichtet. Ich kann dazu mal mehr erklären wenn Interesse besteht.

Noch einen Hinweis:

Ich habe gerade eine frische Client Installation auf dem RPi4 getestet (USB Mic, Headphone Jack Output), neuste Raspian Version (jetzt Raspberry OS genannt) und dabei festgestellt, dass Bluetooth irgendwie die Netzwerkverbindung arg in Mitleidenschaft zieht :-(
Ich weiß nicht ob das ein Bug der neuen Raspian Version ist oder irgendeine Kombination mit dem RPi4 die ich vorher nicht hatte, aber ich werde für die DIY Client Installation wohl Bluetooth standardmäßig mal deaktivieren.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 03 Juni 2020, 15:14:01
Zitat von: sepia am 03 Juni 2020, 14:43:17
Meinst du um Mary-TTS zum Laufen zu bekommen? Die README (https://github.com/SEPIA-Framework/sepia-assist-server/blob/dev/Xtensions/TTS/marytts/INSTALL.md) dazu kennst du glaube ich schon oder? Wenn der Server richtig erkannt wurde kann man in den Client Settings bei "Voice" 6 Mary-TTS Stimmen auswählen (oder waren es 7 ^^). "Voice engine" muss dafür auf custom stehen ("speech-voice-engine": "sepia"). Im DIY/headless Client kann man über die settings.js die Stimme wählen. Dazu einfach bei "en-voice" und/oder "de-voice" was eintragen. Die Namen kannst du dir aus deinem Desktop Client oder der App abgucken (hab die gerade auswendig nicht parat aber sowas wie "de-DE_marytts_m" o.ä.).

ja habs gerade im browser am rechner geschaut, stimmt habs aufgewählt und klappt dort auch. Damit funktioniert auch die MaryTTS Anbindung. (Läuft zusammen mit dem SepiaServer in der gleichen VM. Das lüppt alles schon ganz schön in der 2.5.0 DEV


Zitat von: sepia am 03 Juni 2020, 14:43:17
Bei der Android App ist das nicht so ganz einfach weil ich dann die Soundfiles zur Auswahl mit der App hochladen müsste in den Playstore (wovon manche eventuell noch Lizenzbedingt Probleme geben könnte, z.B. Star Trek Sachen ^^). Ich denke das wird erstmal nicht möglich sein, aber eventuell würde ich 1-2 alternative Sounds in Betracht ziehen wenn du gute hast ;-)

Hab einen zurück in die Zukunft "pling" irgendwo gefunden gehabt. ja das Problem mit den Lizenzen verstehe ich. Blind geraten liegt der Source der App zum selber kompilieren nicht im git oder?

Zitat von: sepia am 03 Juni 2020, 14:43:17
Für Mary-TTS müsstest du bei den SEPIA Server Settings noch mal gucken und die Adresse zum Mary-TTS Server eingetragen (es gibt ein Mary-TTS Eintrag weiter unten irgendwo). Ich gebe aber zu das habe ich noch nicht getestet ^^, sollte aber klappen ... ^^.

Das passt soweit wie es eingebaut ist und läuft zumindest am Rechner im Browser. Aber eben nicht im headless client. weil ich glaubig den neuen client nicht im git dev bereich finde. ich hab den stand von februar (gib mir sonst gerne mal den schups in die richtige Richtung.)

Zitat von: sepia am 03 Juni 2020, 14:43:17
"allow locale/remote wake-word" ist die Einstellung, die generell erlaubt, dass das WW benutzt wird. Der "remote" Teil bezieht sich den Server Endpoint "/remote-action", über den man auch das Mikrofon im Client triggern kann. Im Grunde wie bei der CLEXI Verbindung nur durch das Passwort des User-Accounts abgesichert und "global" gesteuert.
Mit "Mics übergreifend" meinst du quasi dass das Mikrofon des einen Client das Wake-Word eines anderen Clients bedient? Das geht noch nicht, man könnte sowas aber hinbekommen wenn man oben erwähnten "/remote-action" Endpoint nutzt und das Wake-Word wieder über die "alten" Wake-Word Tools (ein Repo im SEPIA GitHub ziemlich weit unten) einrichtet. Ich kann dazu mal mehr erklären wenn Interesse besteht.

Das passt erstmal so würde ich sagen ja.

Noch einen Hinweis:

Zitat von: sepia am 03 Juni 2020, 14:43:17
Ich habe gerade eine frische Client Installation auf dem RPi4 getestet (USB Mic, Headphone Jack Output), neuste Raspian Version (jetzt Raspberry OS genannt) und dabei festgestellt, dass Bluetooth irgendwie die Netzwerkverbindung arg in Mitleidenschaft zieht :-(
Ich weiß nicht ob das ein Bug der neuen Raspian Version ist oder irgendeine Kombination mit dem RPi4 die ich vorher nicht hatte, aber ich werde für die DIY Client Installation wohl Bluetooth standardmäßig mal deaktivieren.

Ich würde gerne auf dem 3+ testen, aber wie oben geschrieben brauch ich nen schupser wo er liegt zum download.

Danke dir.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 03 Juni 2020, 20:07:39
Zitat von: sepia am 03 Juni 2020, 14:43:17
Noch einen Hinweis:

Ich habe gerade eine frische Client Installation auf dem RPi4 getestet (USB Mic, Headphone Jack Output), neuste Raspian Version (jetzt Raspberry OS genannt) und dabei festgestellt, dass Bluetooth irgendwie die Netzwerkverbindung arg in Mitleidenschaft zieht :-(
Ich weiß nicht ob das ein Bug der neuen Raspian Version ist oder irgendeine Kombination mit dem RPi4 die ich vorher nicht hatte, aber ich werde für die DIY Client Installation wohl Bluetooth standardmäßig mal deaktivieren.

Danke fürs dev update, ist schon eingespielt. Dank deines Pseudo headless clients muss ich noch weniger anpassen. quasi nur den aufruf, weil ich kein openbox nutze. aber dafür rufe ich dein skript nur an lxde im autostart auf.

Ich hab den Client komplett ein "deinstalliert" was noch nice wäre, der raum mit setup skript.
Aber das dauert sich noch, weil fürs wakeword und die sprache muss man eh rein.

sieht gut aus, schon in der client auch die aktuelle version klappt es auch mit der Sprache. (de-DE marytts f klingt etwas dump am client)
Ich hatte mich schon gewundert, soviel konnte man da nicht falsch einstellen.

Hast du noch eine Idee, es blinkt ab und zu, z.b. wenn der Fernseher läuft dann schnappt er was auf, und quatscht los.
Sehr unwahrscheinlich das dann "HEY Sepia" gesagt wird.

Dann werde ich mir als nächste mal die alternativen Wakeworks anschauen, die dann vermutlich nun auch im Client drin sind.

Bisher Rückmeldung sieht gut aus.

Installation ist damit auch nochmal gegengetestet und lief soweit durch, deswegen hatte ich alles gelöscht und bei Null angefangen.

Randinfo Vielleicht ein Bug in den Tools. auf der Speech Synthesis Seite unter Gender gibt es nur mail und - automatic.
Soll das so? :-)

Clients sind alle neu installiert, es gibt wohl immer eine Meldung die aber vermutlich der Sache geschultet ist:
Wenn der Client noch nicht eingeloggt ist und auf "Setup" steht und mal auf den Testbutton drückt generiert er einen TTS Error

[color=red]Broadcaster event: {"broadcast":{"client":"o86_chrome_app_v0.22.0","deviceId":"o86","sepia-speech":{"type":"tts_error","msg":"unknown"}}}
[/color]Broadcaster event: {"broadcast":{"client":"o86_chrome_app_v0.22.0","deviceId":"o86","sepia-state":{"state":"idle"}}}
[color=orange]Broadcaster event: {"broadcast":{"client":"o86_chrome_app_v0.22.0","deviceId":"o86","sepia-speech":{"type":"tts_speak","msg":"test"}}}[/color]
Broadcaster event: {"broadcast":{"client":"o86_chrome_app_v0.22.0","deviceId":"o86","sepia-state":{"state":"loading"}}}


Sehr Nice das er jetzt in Orange die Antworten mit Protokolliert bzw. ein Event daraus generiert.
Gabs da schon was in Richtung Fhem oder eher Richtung MQTT dann?

Gruß
Basti

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 03 Juni 2020, 20:26:49
Hallo,

ich möchte mich auch am SEPIA versuchen und habe dafür ein altes RPi3 aufgesetzt.
Die Installation verlief ohne Probleme, aber jetzt hänge ich bei der Registrierung von Sepia im fhem.

Jedesmal wenn ich auf den Button "Register SEPIA" drücke, kommt die Fehlermeldung:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}


In fhem kommen im log die folgenden Einträge vom Device WEB:
2020.06.03 20:19:54.477 4 : Connection accepted from WEB_192.168.0.102_37556
2020.06.03 20:19:54.479 5 : GET /?XHR=1 HTTP/1.1 User-Agent: Java/11.0.7 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.480 4 : WEB_192.168.0.102_37556 GET /?XHR=1; BUFLEN:0
2020.06.03 20:19:54.480 4 : WEB: redirecting /?XHR=1 to /fhem
2020.06.03 20:19:54.486 4 : Connection closed for WEB_192.168.0.102_37556: EOF
2020.06.03 20:19:54.489 4 : Connection accepted from WEB_192.168.0.102_37558
2020.06.03 20:19:54.491 5 : GET /fhem HTTP/1.1 User-Agent: Java/11.0.7 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.491 4 : WEB_192.168.0.102_37558 GET /fhem; BUFLEN:0
2020.06.03 20:19:54.507 4 : WEB: /fhem / RL:19005 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate
2020.06.03 20:19:54.522 4 : Connection accepted from WEB_192.168.0.102_37560
2020.06.03 20:19:54.523 5 : GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167 HTTP/1.1 User-Agent: Mozilla/5.0 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.524 4 : WEB_192.168.0.102_37560 GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167; BUFLEN:0
2020.06.03 20:19:54.524 4 : WEB: redirecting /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167 to /fhem
2020.06.03 20:19:54.530 4 : Connection closed for WEB_192.168.0.102_37560: EOF
2020.06.03 20:19:54.534 4 : Connection accepted from WEB_192.168.0.102_37562
2020.06.03 20:19:54.536 5 : GET /fhem HTTP/1.1 User-Agent: Mozilla/5.0 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.536 4 : WEB_192.168.0.102_37562 GET /fhem; BUFLEN:0
2020.06.03 20:19:54.550 4 : WEB: /fhem / RL:19005 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate


Was mache ich falsch?
Oder welche Einstellung habe ich vergessen?

Danke im Voraus
lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 03 Juni 2020, 23:59:47
Zitat von: gestein am 03 Juni 2020, 20:26:49
Hallo,

ich möchte mich auch am SEPIA versuchen und habe dafür ein altes RPi3 aufgesetzt.
Die Installation verlief ohne Probleme, aber jetzt hänge ich bei der Registrierung von Sepia im fhem.

Jedesmal wenn ich auf den Button "Register SEPIA" drücke, kommt die Fehlermeldung:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}


In fhem kommen im log die folgenden Einträge vom Device WEB:
2020.06.03 20:19:54.477 4 : Connection accepted from WEB_192.168.0.102_37556
2020.06.03 20:19:54.479 5 : GET /?XHR=1 HTTP/1.1 User-Agent: Java/11.0.7 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.480 4 : WEB_192.168.0.102_37556 GET /?XHR=1; BUFLEN:0
2020.06.03 20:19:54.480 4 : WEB: redirecting /?XHR=1 to /fhem
2020.06.03 20:19:54.486 4 : Connection closed for WEB_192.168.0.102_37556: EOF
2020.06.03 20:19:54.489 4 : Connection accepted from WEB_192.168.0.102_37558
2020.06.03 20:19:54.491 5 : GET /fhem HTTP/1.1 User-Agent: Java/11.0.7 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.491 4 : WEB_192.168.0.102_37558 GET /fhem; BUFLEN:0
2020.06.03 20:19:54.507 4 : WEB: /fhem / RL:19005 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate
2020.06.03 20:19:54.522 4 : Connection accepted from WEB_192.168.0.102_37560
2020.06.03 20:19:54.523 5 : GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167 HTTP/1.1 User-Agent: Mozilla/5.0 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.524 4 : WEB_192.168.0.102_37560 GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167; BUFLEN:0
2020.06.03 20:19:54.524 4 : WEB: redirecting /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_533753793228167 to /fhem
2020.06.03 20:19:54.530 4 : Connection closed for WEB_192.168.0.102_37560: EOF
2020.06.03 20:19:54.534 4 : Connection accepted from WEB_192.168.0.102_37562
2020.06.03 20:19:54.536 5 : GET /fhem HTTP/1.1 User-Agent: Mozilla/5.0 Host: 192.168.0.117:8083 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
2020.06.03 20:19:54.536 4 : WEB_192.168.0.102_37562 GET /fhem; BUFLEN:0
2020.06.03 20:19:54.550 4 : WEB: /fhem / RL:19005 / text/html; charset=UTF-8 / / Cache-Control: no-cache, no-store, must-revalidate


Was mache ich falsch?
Oder welche Einstellung habe ich vergessen?

Danke im Voraus
lg, Gerhard

Hallo Gerhard,

hiermal ein paar Ideen zum Fehler einkreisen. Aus der Erfahrung mit den ersten Versionen.
Ein versuch wäre es im ersten Schritt die Sicherheit etwas runterzustufen.
Eigener Benutzer für SEPIA ohne Kennwort und ohne Token
IP Range aufmachen.

Wenn du dann verbunden bist, die Parameter nach und nach zu machen. Ich erinnere mich das es dort am Anfang Schwierigkeiten gab.
zusätzlich gabs mal das Problem, das er keine Geräte Liste bekommen hat. Da gabs einen Fix für.
Steht sonst früher in diesem Thema erwähnt.

Hoffe die ersten Tipps helfen schonmal sonst muss Florian nochmal antworten.

Viel Erfolg.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 04 Juni 2020, 00:05:14
Zitat von: sepia am 03 Juni 2020, 14:43:17
Hier gibt es ein paar Infos dazu: Wake-Word Readme (https://github.com/SEPIA-Framework/sepia-html-client-app/blob/dev/www/xtensions/picovoice/README.md)
Die müsste auch in deinem Client Ordner sein falls du eine neue Version hast (/clexi/www/sepia/xtensions/picovoice/README.md).

Ich hab jetzt doch nochmal geschaut und getestet. Folgendes habe ich probiert ohne Erfolg.

das downloadskript laufen lassen, die 1.5 und 1.6 waren aber schon im Paket da.

Dann hab ich entsprechend der Readme aus HEY Sepia bumblebee raspberry yellow und alexa gemacht.
Sowohl Reboot auch als nur den node.js per shutdown.sh und run.sh haben auf zwei clients nicht geholfen.

laut der Readme.md reichen ja die Änderungen in der wakewords.js

ich hab das jeweils auf dem headless client gemacht (sowie ich auch dort die coin.mp3 getauscht habe).

Leider ohne Erfolg. Ich wäre also um einen Tipp dankbar.

Kann ich sonst in ein Log schauen oder?

in der settings vom client stehen die Paramter alle 3 auf true die mit wakeword zutun haben.

Danke & Gute Nacht
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 04 Juni 2020, 09:42:48
Zitat von: whistler am 03 Juni 2020, 20:07:39
Hast du noch eine Idee, es blinkt ab und zu, z.b. wenn der Fernseher läuft dann schnappt er was auf, und quatscht los.
Sehr unwahrscheinlich das dann "HEY Sepia" gesagt wird.

Es kann schon sein, dass das System auf irgendwelche Frequenzen reagiert, die sich für das Menschliche Ohr eigentlich anders anhören. Früher konnte man fast alle diese Systeme durch hochfrequentes Rauschen triggern, das war ein systematisches Problem in der Theorie wenn man so will ^^. Meinen Google Home habe ich irgendwann abgeschaltet weil zu viele falsche Aktivierungen kamen. Bei Alexa ist es erstaunlich stabil, aber auch da passiert es bei mir schon mal ohne nachvollziehen zu könne warum.
Eventuell lohnt es sich mit der Sensibilität zu spielen, zu finden auf der "Hey SEPIA" Seite in den Einstellungen und in der settings.js. Generell versuche ich das Mikrofon immer so zu positionieren, dass es möglichst wenig vom TV auffängt.

Zitat von: whistler am 03 Juni 2020, 20:07:39
Installation ist damit auch nochmal gegengetestet und lief soweit durch, deswegen hatte ich alles gelöscht und bei Null angefangen.

Randinfo Vielleicht ein Bug in den Tools. auf der Speech Synthesis Seite unter Gender gibt es nur mail und - automatic.
Soll das so? :-)

Oh ja, das kommt wohl noch aus einer Zeit wo es nix anderes gab ^^  ;D Danke für den Hinweis.

Zitat von: whistler am 03 Juni 2020, 20:07:39
Wenn der Client noch nicht eingeloggt ist und auf "Setup" steht und mal auf den Testbutton drückt generiert er einen TTS Error

Ja das nervt mich auch, aber da die Sprachausgabe vom Server kommt geht es leider eben nur wenn er den Server schon kennt  :-\
Vielleicht könnte ich zumindest den Fehler abfangen ...

Zitat von: whistler am 03 Juni 2020, 20:07:39
Gabs da schon was in Richtung Fhem oder eher Richtung MQTT dann?

Du meinst jetzt speziell im Zusammenhang mit den Client Events oder? Ich werde nach dem v2.5.0 Release vermutlich daran basteln. Ziel ist ja z.B. auch noch die LEDs der ReSpeaker einzubinden.

Zitat von: whistler am 03 Juni 2020, 20:07:39
laut der Readme.md reichen ja die Änderungen in der wakewords.js

ich hab das jeweils auf dem headless client gemacht (sowie ich auch dort die coin.mp3 getauscht habe).

Leider ohne Erfolg. Ich wäre also um einen Tipp dankbar.

Akzeptiert er die Änderungen gar nicht und es ist immer noch "Hey SEPIA" aktiv oder funktioniert gar kein WW mehr?

Zitat von: gestein am 03 Juni 2020, 20:26:49
Jedesmal wenn ich auf den Button "Register SEPIA" drücke, kommt die Fehlermeldung:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}


In fhem kommen im log die folgenden Einträge vom Device WEB:
...
Was mache ich falsch?
Oder welche Einstellung habe ich vergessen?

Hallo Gerhard,

könntest du statt im FHEM Log mal im SEPIA Assist-Server Log gucken. Es befindet sich in: '~/SEPIA/sepia-assist-server/log.out'.
Der FHEM Log scheint mir unverdächtig.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 04 Juni 2020, 18:51:41
Zitat von: sepia am 04 Juni 2020, 09:42:48
Es kann schon sein, dass das System auf irgendwelche Frequenzen reagiert, die sich für das Menschliche Ohr eigentlich anders anhören. Früher konnte man fast alle diese Systeme durch hochfrequentes Rauschen triggern, das war ein systematisches Problem in der Theorie wenn man so will ^^. Meinen Google Home habe ich irgendwann abgeschaltet weil zu viele falsche Aktivierungen kamen. Bei Alexa ist es erstaunlich stabil, aber auch da passiert es bei mir schon mal ohne nachvollziehen zu könne warum.
Eventuell lohnt es sich mit der Sensibilität zu spielen, zu finden auf der "Hey SEPIA" Seite in den Einstellungen und in der settings.js. Generell versuche ich das Mikrofon immer so zu positionieren, dass es möglichst wenig vom TV auffängt.

okay ja hab ich schon gesehen, wenn das nicht an "mir" liegt schraube ich da noch mal dran ja :-)


Zitat von: sepia am 04 Juni 2020, 09:42:48
Ja das nervt mich auch, aber da die Sprachausgabe vom Server kommt geht es leider eben nur wenn er den Server schon kennt  :-\
Vielleicht könnte ich zumindest den Fehler abfangen ...

ist kein drama, könnte vielleicht was sprechender sein :-)

Zitat von: sepia am 04 Juni 2020, 09:42:48
Du meinst jetzt speziell im Zusammenhang mit den Client Events oder? Ich werde nach dem v2.5.0 Release vermutlich daran basteln. Ziel ist ja z.B. auch noch die LEDs der ReSpeaker einzubinden.

ja z.b. die leds oder als event im fhem, dann könnte man damit andere dinge machen.


Zitat von: sepia am 04 Juni 2020, 09:42:48
Akzeptiert er die Änderungen gar nicht und es ist immer noch "Hey SEPIA" aktiv oder funktioniert gar kein WW mehr?

Ne leider akzeptiert er dann gar nichts mehr. Die Schreibweise hat mich auch etwas gewundert, bzw. hab ich vermutetet er macht alles als low case und dein hey sepia wie dann lowercase und die leerzeichen werden dann unterstriche und dann zur datei zusammengesetzt.

Ich versuche es später nochmal, sofern ich dann aber scheinbar richtig liege das ich nur an der datei schrauben muss wie auch in der readme.

Falls du noch ne wilde idee hast immer her damit.

[EDIT]
kann ich denn in ein Log reinschauen?
Hab gerade am Server das ganze umgestellt für den Browser, auch da wird dann kein WakeWork mehr erkannt.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 04 Juni 2020, 22:19:39
Hallo,

also das log.out sagt folgendes, wenn ich mich mittels "Register Sepia" mit fhem verbinden möchte:
2020-06-04 21:08:33 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"STRING":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Strict\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-strict.dtd\">\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<head root=\"\/fhem\">\n<title>Home, Sweet Home<\/title>\n<link rel=\"shortcut icon\" href=\"\/fhem\/icons\/favicon\" \/>\n<meta charset=\"UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<link href=\"\/fhem\/pgm2\/style.css?v=1591183259\" rel=\"stylesheet\"\/>\n<link href=\"\/fhem\/pgm2\/jquery-ui.min.css\" rel=\"stylesheet\"\/>\n<style id='style_css'>\nbody { background-color:#FFFFE7; }\n<\/style>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery.min.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery-ui.min.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fhemweb.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/f18.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/codemirror\/fhem_codemirror.js\"><\/script>\n  <script type=\"text\/javascript\">\n    $(document).ready(function() {\n      $(\"select.set\").change(attrAct);\n      function\n      attrAct(){\n        if($(\"select.set\").val() == \"attrTemplate\") {\n          $('<div id=\"attrTemplateHelp\" class=\"makeTable help\"><\/div>')\n                .insertBefore(\"div.makeTable.internals\");\n          $(\"select.select_widget[informid$=attrTemplate]\").change(function(){\n            var cmd = \"{AttrTemplate_Help('\"+$(this).val()+\"')}\";\n            FW_cmd(FW_root+\"?cmd=\"+cmd+\"&XHR=1\", function(ret) {\n              $(\"div#attrTemplateHelp\").html(ret);\n            });\n          });\n        } else {\n          $(\"div#attrTemplateHelp\").remove();\n        }\n      }\n      attrAct();\n    });\n  <\/script>\n\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/doif.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fronthemEditor.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fhemweb_readingsGroup.js\"><\/script>\n<\/head>\n<body name='Home, Sweet Home' fw_id='69091' generated=\"1591301312\" longpoll=\"websocket\" fwcsrf='csrf_533753793228167' data-confirmDelete='0' data-confirmJSError='1' data-addHtmlTitle='1' data-styleData='{\n \"f18\": {\n  \"Pinned.menu\": false,\n  \"cols.bg\": \"FFFFE7\",\n  \"cols.fg\": \"000000\",\n  \"cols.link\": \"278727\",\n  \"cols.evenrow\": \"F8F8E0\",\n  \"cols.oddrow\": \"F0F0D8\",\n  \"cols.header\": \"E0E0C8\",\n  \"cols.menu\": \"D7FFFF\",\n  \"cols.sel\": \"A0FFFF\",\n  \"cols.inpBack\": \"FFFFFF\",\n  \"savePinChanges\": true,\n  \"Pinned.Room.Terrasse%5fWest.grp.Rolladenstatus\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.at\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.switch\": true,\n  \"Pinned.Room.SOMFY.grp.FileLog\": false,\n  \"Pinned.Room.CUL%5fHM.grp.FileLog\": false,\n  \"Pinned.Room.LaCrosse.grp.FileLog\": true,\n  \"Pinned.Room.LaCrosse.grp.at\": true,\n  \"Pinned.Room.LaCrosse.grp.dummy\": true,\n  \"Pinned.Room.LaCrosse.grp.JeeLink\": true,\n  \"Pinned.Room.LaCrosse.grp.DOIF\": true,\n  \"Pinned.Room.LaCrosse.grp.LaCrosse\": true,\n  \"Pinned.Room.Terrasse%5fOst.grp.FileLog\": false,\n  \"Pinned.Room.Terrasse%5fOst.grp.at\": true,\n  \"Pinned.Room.all.grp.FileLog\": false,\n  \"Pinned.Room.all.grp.SB_PLAYER\": false,\n  \"Pinned.Room.all.grp.SOMFY\": false,\n  \"Pinned.Room.all.grp.at\": false,\n  \"Pinned.Room.Terrasse_Ost.grp.FileLog\": false,\n  \"Pinned.Room.Terrasse_Ost.grp.dummy\": false,\n  \"Pinned.detail.Readings\": true,\n  \"Pinned.Room.Fernbedienung.grp.notify\": true,\n  \"Pinned.Room.Unsorted.grp.FileLog\": true,\n  \"Pinned.detail.DeviceOverview\": true,\n  \"Pinned.Room.Zeitschaltuhr.grp.WeekdayTimer\": true,\n  \"Pinned.Room.Zeitschaltuhr.grp.at\": true,\n  \"Pinned.Room.SB%5fPLAYER.grp.FileLog\": false,\n  \"Pinned.Room.Residents.grp.PRESENCE\": true,\n  \"Pinned.Room.Residents.grp.dummy\": false,\n  \"Pinned.Room.Residents.grp.notify\": true,\n  \"Pinned.Room.Residents.grp.DOIF\": true,\n  \"Pinned.Room.Residents.grp.WeekdayTimer\": true,\n  \"Pinned.Room.Residents.grp.watchdog\": true,\n  \"Pinned.Room.Residents.grp.Lilly\": true,\n  \"Pinned.Room.Residents.grp.Guests\": true,\n  \"Pinned.Room.Unsorted.grp.Aktion\": false,\n  \"Pinned.Room.CUL_HM.grp.FileLog\": false,\n  \"Pinned.Room.CUL%5fHM.grp.dimmer\": true,\n  \"Pinned.Room.Anwesenheiten.grp.PRESENCE\": false,\n  \"Pinned.Room.Anwesenheiten.grp.Guests\": true,\n  \"Pinned.Room.Anwesenheiten.grp.Tags\": true,\n  \"Pinned.Room.Anwesenheiten.grp.dummy\": true,\n  \"Pinned.Room.Anwesenheiten.grp.notify\": true,\n  \"Pinned.Room.Anwesenheiten.grp.watchdog\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.dummy\": false,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.TW.Bewaesserungsgruppe\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.TO.Bewaesserungsgruppe\": true,\n  \"Pinned.Room.Anwesenheiten.grp.WeekdayTimer\": true,\n  \"Pinned.Room.Anwesenheiten.grp. Batteriestatus\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.notify\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.SprinkleControl\": true,\n  \"Pinned.Room.Bew%C3%A4sserung.grp.at\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.Sprinkle\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.structure\": true,\n  \"Pinned.Room.Sonos.grp. SonosRG\": true,\n  \"Pinned.Room.Unsorted.grp.RPi\": true,\n  \"Pinned.Room.Zeitschaltuhr.grp.DOIF\": false,\n  \"Pinned.Room.Anwesenheiten.grp.GEOFANCY\": true,\n  \"Pinned.Room.Anwesenheiten.grp.Lilly\": true,\n  \"Pinned.Room.Rollos.grp. rg_ASC_Rolllaeden_Level\": false,\n  \"Pinned.Room.Rollos.grp. Rollläden: Beschattung\": false,\n  \"Pinned.Room.Rollos.grp. rg_ASC_Rolllaeden_Times\": false,\n  \"Pinned.detail.Internals\": true,\n  \"Pinned.detail.Attributes\": true,\n  \"Pinned.detail.Probably associated with\": true,\n  \"Pinned.Room.Sonos.grp.Bad\": true,\n  \"Pinned.Room.Sonos.grp.Gaestezimmer\": false,\n  \"Pinned.Room.Sonos.grp.Kueche\": false,\n  \"Pinned.Room.Sonos.grp.Lilly\": true,\n  \"Pinned.Room.Sonos.grp.Schlafzimmer\": true,\n  \"Pinned.Room.Sonos.grp.Wohnzimmer\": true,\n  \"Pinned.Room.Anwesenheiten.grp.FileLog\": false,\n  \"Pinned.Room.CUL%5fHM.grp.CUL_HM\": true,\n  \"Pinned.Room.Sonos.grp.Terrasse_West\": false,\n  \"Pinned.Room.Rollos.grp.DOIF\": true,\n  \"Pinned.Room.Shelly.grp.FileLog\": false,\n  \"Pinned.Room.LaCrosse.grp. Batteriestatus\": true,\n  \"Pinned.Room.SOMFY.grp.notify\": true,\n  \"Pinned.Room.Berker.grp.FileLog\": true,\n  \"Pinned.Room.Berker.grp.DOIF\": false,\n  \"Pinned.Room.Berker.grp.notify\": true,\n  \"Pinned.Room.Berker.grp.sequence\": true,\n  \"Pinned.Room.Berker.grp.CUL\": true,\n  \"Pinned.Room.Shelly.grp.MSwitch\": false,\n  \"Pinned.Room.Shelly.grp.MQTT2_SERVER\": true,\n  \"Pinned.Room.Zentrale.grp.PRESENCE\": false,\n  \"Pinned.Room.Zentrale.grp.notify\": true,\n  \"Pinned.Room.Chatten.grp.msgDialog\": false,\n  \"Pinned.Room.Chatten.grp.dummy\": true,\n  \"Pinned.Room.Shelly.grp.Licht\": false,\n  \"Pinned.Room.Shelly.grp.Esszimmer\": true,\n  \"Pinned.Room.Lichter.grp.Licht\": true,\n  \"Pinned.Room.Lichter.grp.Schrankräume\": false,\n  \"Pinned.Room.Lichter.grp.Wohnzimmer\": true,\n  \"Pinned.Room.Berker.grp.Licht\": false,\n  \"Pinned.Room.Berker.grp.IFB\": true,\n  \"Pinned.Room.Schlafzimmer.grp.Licht\": false,\n  \"Pinned.Room.Schlafzimmer.grp.LaCrosse\": false,\n  \"Pinned.Room.Schlafzimmer.grp.Rolladenstatus\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eLaCrosse.grp.FileLog\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eLaCrosse.grp.DOIF\": false,\n  \"Pinned.Room.Berker.grp.Tastenfeld\": true,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_GaestezimmerRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_GaestezimmerRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_GaestezimmerRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_GaestezimmerRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_KuecheRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_KuecheRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_KuecheRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_KuecheRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Lilly2RG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Lilly2RG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Lilly2RG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Lilly2RG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_OstRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_OstRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_OstRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_OstRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_WestRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_WestRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_WestRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_Terrasse_WestRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_WohnzimmerRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_WohnzimmerRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_WohnzimmerRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_WohnzimmerRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_SchlafzimmerRG_Radios\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_SchlafzimmerRG_Queue\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_SchlafzimmerRG_Playlists\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp. Sonos_SchlafzimmerRG_Favourites\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp.notify\": false,\n  \"Pinned.Room.Z%5fSystem%2d%3eSonos.grp.at\": false,\n  \"Pinned.Room.Shelly.grp.MQTT2_DEVICE\": true\n }\n}' data-availableJs='iconButtons,weekprofile,colorpicker,knob,iconLabel,datetime,readingsGroup,iconRadio,fbcalllist,uzsu,sortable,iconSwitch,readingsHistory' data-webName='WEB '>\n<div id=\"menuScrollArea\">\n<div><a href=\"\/fhem?\"><div id=\"logo\"><\/div><\/a><\/div>\n<div id=\"menu\">\n<table>\n<tr><td><table class=\"room roomBlock1\">\n<tr><td><div class=\"menu_Save_config\"><a href=\"\/fhem?cmd=save&fwcsrf=csrf_533753793228167\"><span>Save config<\/span><\/a> <a id=\"saveCheck\" class=\"changed\" style=\"visibility:hidden\"><span>?<\/span><\/a><\/div><\/td>\n<\/tr>\n<\/table><\/td><\/tr>\n<tr><td><table class=\"room roomBlock2\">\n<tr><td><div class=\"menu_Floorplans\"><a href=\"\/fhem\/floorplan\"><span>Floorplans<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Alarmanlage\"><a href=\"\/fhem\/?room=AlarmRoom\"><span>Alarmanlage<\/span><\/a><\/div><\/td>\n<\/tr>\n<\/table><\/td><\/tr>\n<tr><td><table class=\"room roomBlock3\">\n<tr><td><div class=\"menu_0_Testing\"><a href=\"\/fhem?room=0%5fTesting\"><span>0_Testing<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Anwesenheiten\"><a href=\"\/fhem?room=Anwesenheiten\"><span>Anwesenheiten<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Bad\"><a href=\"\/fhem?room=Bad\"><span>Bad<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Berker\"><a href=\"\/fhem?room=Berker\"><span>Berker<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Bew__sserung\"><a href=\"\/fhem?room=Bew%c3%a4sserung\"><span>Bewässerung<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_CUL_HM\"><a href=\"\/fhem?room=CUL%5fHM\"><span>CUL_HM<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Chatten\"><a href=\"\/fhem?room=Chatten\"><span>Chatten<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Einstellungen\"><a href=\"\/fhem?room=Einstellungen\"><span>Einstellungen<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Esszimmer\"><a href=\"\/fhem?room=Esszimmer\"><span>Esszimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_FS20\"><a href=\"\/fhem?room=FS20\"><span>FS20<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Ferien\"><a href=\"\/fhem?room=Ferien\"><span>Ferien<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Fernbedienung\"><a href=\"\/fhem?room=Fernbedienung\"><span>Fernbedienung<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Gaestezimmer\"><a href=\"\/fhem?room=Gaestezimmer\"><span>Gaestezimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_G__stebad\"><a href=\"\/fhem?room=G%c3%a4stebad\"><span>Gästebad<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Homekit\"><a href=\"\/fhem?room=Homekit\"><span>Homekit<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Internet\"><a href=\"\/fhem?room=Internet\"><span>Internet<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Kinderzimmer\"><a href=\"\/fhem?room=Kinderzimmer\"><span>Kinderzimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_K__che\"><a href=\"\/fhem?room=K%c3%bcche\"><span>Küche<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Lichter\"><a href=\"\/fhem?room=Lichter\"><span>Lichter<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_NotifyHandling\"><a href=\"\/fhem?room=NotifyHandling\"><span>NotifyHandling<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Plots\"><a href=\"\/fhem?room=Plots\"><span>Plots<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Rollos\"><a href=\"\/fhem?room=Rollos\"><span>Rollos<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_SOMFY\"><a href=\"\/fhem?room=SOMFY\"><span>SOMFY<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Schlafzimmer\"><a href=\"\/fhem?room=Schlafzimmer\"><span>Schlafzimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Schrankr__ume\"><a href=\"\/fhem?room=Schrankr%c3%a4ume\"><span>Schrankräume<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Shelly\"><a href=\"\/fhem?room=Shelly\"><span>Shelly<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Taubenabwehr\"><a href=\"\/fhem?room=Taubenabwehr\"><span>Taubenabwehr<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Terrasse_Ost\"><a href=\"\/fhem?room=Terrasse%5fOst\"><span>Terrasse_Ost<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Terrasse_West\"><a href=\"\/fhem?room=Terrasse%5fWest\"><span>Terrasse_West<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Unsorted\"><a href=\"\/fhem?room=Unsorted\"><span>Unsorted<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Vorzimmer\"><a href=\"\/fhem?room=Vorzimmer\"><span>Vorzimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_WCs\"><a href=\"\/fhem?room=WCs\"><span>WCs<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Weihnachten\"><a href=\"\/fhem?room=Weihnachten\"><span>Weihnachten<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Wetter\"><a href=\"\/fhem?room=Wetter\"><span>Wetter<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Wohnzimmer\"><a href=\"\/fhem?room=Wohnzimmer\"><span>Wohnzimmer<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_9_03_Tech\"><a href=\"\/fhem?room=Z%5fSystem%2d%3e9%2e03%5fTech\"><span>Z_System-&gt;9.03_Tech<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_9_99_Test\"><a href=\"\/fhem?room=Z%5fSystem%2d%3e9%2e99%5fTest\"><span>Z_System-&gt;9.99_Test<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_BatteryCheck\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eBatteryCheck\"><span>Z_System-&gt;BatteryCheck<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_CUL_HOERMANN\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eCUL%5fHOERMANN\"><span>Z_System-&gt;CUL_HOERMANN<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_DEVELOP\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eDEVELOP\"><span>Z_System-&gt;DEVELOP<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Devolo\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eDevolo\"><span>Z_System-&gt;Devolo<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_ESPEasy\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eESPEasy\"><span>Z_System-&gt;ESPEasy<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Enocean\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eEnocean\"><span>Z_System-&gt;Enocean<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_HUEDevice\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eHUEDevice\"><span>Z_System-&gt;HUEDevice<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Hyperion\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eHyperion\"><span>Z_System-&gt;Hyperion<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_IT\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eIT\"><span>Z_System-&gt;IT<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_LaCrosse\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eLaCrosse\"><span>Z_System-&gt;LaCrosse<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Sonos\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eSonos\"><span>Z_System-&gt;Sonos<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Synco\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eSynco\"><span>Z_System-&gt;Synco<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_Technik\"><a href=\"\/fhem?room=Z%5fSystem%2d%3eTechnik\"><span>Z_System-&gt;Technik<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_deCONZ\"><a href=\"\/fhem?room=Z%5fSystem%2d%3edeCONZ\"><span>Z_System-&gt;deCONZ<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Z_System__gt_fhemwidget2\"><a href=\"\/fhem?room=Z%5fSystem%2d%3efhemwidget2\"><span>Z_System-&gt;fhemwidget2<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Zeitschaltuhr\"><a href=\"\/fhem?room=Zeitschaltuhr\"><span>Zeitschaltuhr<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Zentrale\"><a href=\"\/fhem?room=Zentrale\"><span>Zentrale<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_backup\"><a href=\"\/fhem?room=backup\"><span>backup<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Everything\"><a href=\"\/fhem?room=all\"><img class='icon icoEverything' src=\"\/fhem\/images\/default\/icoEverything.png\" alt=\"icoEverything\" title=\"icoEverything\">&nbsp;<span>Everything<\/span><\/a><\/div><\/td>\n<\/tr>\n<\/table><\/td><\/tr>\n<tr><td><table class=\"room roomBlock4\">\n<tr><td><div class=\"menu_Logfile\"><a href=\"\/fhem\/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2020-06.log\"><span>Logfile<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div><a href='\/fhem\/docs\/commandref_DE.html' target=\"_blank\"><span>Commandref<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div><a href='http:\/\/fhem.de\/fhem.html#Documentation' target=\"_blank\"><span>Remote doc<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Edit_files\"><a href=\"\/fhem?cmd=style%20list\"><span>Edit files<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Select_style\"><a href=\"\/fhem?cmd=style%20select\"><span>Select style<\/span><\/a><\/div><\/td>\n<\/tr>\n<tr><td><div class=\"menu_Event_monitor\"><a href=\"\/fhem?cmd=style%20eventMonitor\"><span>Event monitor<\/span><\/a><\/div><\/td>\n<\/tr>\n<\/table><\/td><\/tr>\n<tr><td><table class=\"room roomBlock5\">\n<tr><td><div class=\"menu_REBOOT\"><a href=\"\/fhem?cmd=set%20d1%20restart&fwcsrf=csrf_533753793228167\"><span>REBOOT<\/span><\/a><\/div><\/td>\n<\/tr>\n<\/table><\/td><\/tr>\n<\/table>\n<\/div>\n<\/div>\n<div id=\"hdr\">\n<table border=\"0\" class=\"header\"><tr><td style=\"padding:0\">\n<form method=\"post\" action=\"\/fhem\">\n<input type=\"hidden\" name=\"fw_id\" value=\"69091\"\/>\n<input type=\"hidden\" name=\"fwcsrf\" value=\"csrf_533753793228167\"\/>\n<input type='text' name='cmd' class='maininput' size='40' value='' autocorrect='off' autocapitalize='off'\/>\n<\/form>\n<\/td><\/tr><\/table>\n<\/div>\n<div id='content'  ><pre class='motd'>SecurityCheck:\n  telnetPort is not password protected\n  WEB is not password protected\n  WEBapi is not password protected\n  WEBtablet is not password protected\n  WEBhook is not password protected\n  MQTT2_FHEM_Server is not password protected\n  WEBphone is not password protected\n\nProtect this FHEM installation by configuring the allowed device allowedWEBhook\nYou can disable this message with attr global motd none\nMessages collected while initializing FHEM:SecurityCheck:\n  WEBapi is not password protected\n  MQTT2_FHEM_Server is not password protected\n  WEBhook is not password protected\n  telnetPort is not password protected\n  WEBphone is not password protected\n  WEBtablet is not password protected\n  WEB is not password protected\n\nProtect this FHEM installation by configuring the allowed device allowedWEBhook\nYou can disable this message with attr global motd none\n<\/pre><\/div>\n<\/body><\/html>","HTTP_REST_SUCCESS":true}


Also habe ich die Nachricht mit "attr global motd none" ausgeschaltet:
Dann aber kommt das:
2020-06-04 21:16:09 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"STRING":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Strict\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-strict.dtd\">\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<head root=\"\/fhem\">\n<title>Home, Sweet Home<\/title>\n<link rel=\"shortcut icon\" href=\"\/fhem\/icons\/favicon\" \/>\n<meta charset=\"UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<link href=\"\/fhem\/pgm2\/style.css?v=1591183259\" rel=\"stylesheet\"\/>\n<link href=\"\/fhem\/pgm2\/jquery-ui.min.css\" rel=\"stylesheet\"\/>\n<style id='style_css'>\nbody { background-color:#FFFFE7; }\n<\/style>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery.min.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery-ui.min.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fhemweb.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/f18.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/codemirror\/fhem_codemirror.js\"><\/script>\n  <script type=\"text\/javascript\">\n    $(document).ready(function() {\n      $(\"select.set\").change(attrAct);\n      function\n      attrAct(){\n        if($(\"select.set\").val() == \"attrTemplate\") {\n          $('<div id=\"attrTemplateHelp\" class=\"makeTable help\"><\/div>')\n                .insertBefore(\"div.makeTable.internals\");\n          $(\"select.select_widget[informid$=attrTemplate]\").change(function(){\n            var cmd = \"{AttrTemplate_Help('\"+$(this).val()+\"')}\";\n            FW_cmd(FW_root+\"?cmd=\"+cmd+\"&XHR=1\", function(ret) {\n              $(\"div#attrTemplateHelp\").html(ret);\n            });\n          });\n        } else {\n          $(\"div#attrTemplateHelp\").remove();\n        }\n      }\n      attrAct();\n    });\n  <\/script>\n\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/doif.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fronthemEditor.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/fhemweb_readingsGroup.js\"><\/script>\n<\/head>\n<body name='Home, Sweet Home' fw_id='69383' generated=\"1591301768\" longpoll=\"websocket\" fwcsrf='csrf_533753793228167' data-confirmDelete='0' data-confirmJSError='1' data-addHtmlTitle='1' data-styleData='{\n \"f18\": {\n  \"Pinned.menu\": false,\n  \"cols.bg\": \"FFFFE7\",\n  \"cols.fg\": \"000000\",\n  \"cols.link\": \"278727\",\n  \"cols.evenrow\": \"F8F8E0\",\n  \"cols.oddrow\": \"F0F0D8\",\n  \"cols.header\": \"E0E0C8\",\n  \"cols.menu\": \"D7FFFF\",\n  \"cols.sel\": \"A0FFFF\",\n  \"cols.inpBack\": \"FFFFFF\",\n  \"savePinChanges\": true,\n  \"Pinned.Room.Terrasse%5fWest.grp.Rolladenstatus\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.at\": true,\n  \"Pinned.Room.Bew%c3%a4sserung.grp.switch\": true,\n  \"Pinned.Room.SOMFY.grp.FileLog\": false,\n  \"Pinned.Room.CUL%5fHM.grp.FileLog\": false,\n  \"Pinned.Room.LaCrosse.grp.FileLog\": true,\n  \"Pinned.Room.LaCrosse.grp.at\": true,\n und dann alle meine Räume

Ganz schlau werde ich daraus nicht.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 04 Juni 2020, 22:56:46
Zitat von: sepia am 04 Juni 2020, 09:42:48
Akzeptiert er die Änderungen gar nicht und es ist immer noch "Hey SEPIA" aktiv oder funktioniert gar kein WW mehr?

Ich hab nochmal ein wenig probiert. Also wenn ich den Weg Version 1.4 nehme und dein multi wakeword nehme, und sogar noch mehr einfüge z.b. auch noch navy blue etc aus dem ordner dann geht es.

Zusätzlich hab ich das ganze auch noch am Server eingetragen gefühlt nutzt er das auch mit am Client, wobei das vermutlich bei dem ganzen rumprobieren nur ein gefühl ist.

Sobald ich die 1.5 oder 1.6 einbinde direkt oder indirekt klappen die wakewords nicht und es wird gar nichts mehr erkannt.

baut er da ggf. die version und die ordner nicht richtig zusammen im hauptverzeichnis liegen ja noch zwei files mit _1.5 und _1.6

Entweder bin ich auf dem Holzweg oder es gibt noch eine Bug.

Nice To Have, erstmal muss es ja generell klappen auch mit 1.5 und 1.6:
Scheinbar, sofern die wakeword.js nicht "korrekt" ist sei es syntax fehler oder er kann was nicht laden, geht der client ja nicht in den wakeword modus.
kann man das noch irgendwie "abfangen" oder melden. gerade wenn der headless client das macht, sieht man das ja nicht unbedingt. z.B. nach einem neustart vom pi.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 05 Juni 2020, 10:56:11
Zitat von: gestein am 04 Juni 2020, 22:19:39
Hallo,

also das log.out sagt folgendes, wenn ich mich mittels "Register Sepia" mit fhem verbinden möchte:
...

Ganz schlau werde ich daraus nicht.

Hi Gerhard,

Es sieht so aus als würde SEPIA versuchen auf eine HTML Seite von FHEM zuzugreifen statt auf die REST API. Mir fallen dafür spontan zwei mögliche Gründe ein:

1) Die FHEM URL in SEPIA ist falsch. Kannst du mal die Werte für 'smarthome_hub_host' und 'smarthome_hub_name' prüfen und bestätigen, dass diese etwas so aussehen: smarthome_hub_host=http://192.168.178.13:8083/fhem und smarthome_hub_name=fhem ?

2) Aus irgendeinem Grund funktioniert das REST Interface bei FHEM nicht oder ist vielleicht deaktiviert (geht das?). Da würde ich die Frage an die Experten weiterleiten ;-)

Hoffe das bringt uns weiter :-)

Zitat von: whistler am 04 Juni 2020, 22:56:46
Ich hab nochmal ein wenig probiert. Also wenn ich den Weg Version 1.4 nehme und dein multi wakeword nehme, und sogar noch mehr einfüge z.b. auch noch navy blue etc aus dem ordner dann geht es.

Ok, das ist schon mal gut ^^.

Zitat von: whistler am 04 Juni 2020, 22:56:46
Zusätzlich hab ich das ganze auch noch am Server eingetragen gefühlt nutzt er das auch mit am Client, wobei das vermutlich bei dem ganzen rumprobieren nur ein gefühl ist.

Meinst du die App, die über den SEPIA Server gehostet werden? Auf den DIY Client (Standardeinstellung) sollte das keinen Einfluss haben, aber natürlich auf alle Orte, wo der Client vom Server direkt geladen wird.
Das wäre auch die Beste Methode zum Testen. App auf dem SEPIA Server bearbeiten und dann immer am Desktop PC laden und testen. Dort kannst du dann auch einfach in der Konsole (Dev Tools, F12) des Browsers nach Fehlern Ausschau halten.

Zitat von: whistler am 04 Juni 2020, 22:56:46
Sobald ich die 1.5 oder 1.6 einbinde direkt oder indirekt klappen die wakewords nicht und es wird gar nichts mehr erkannt.

baut er da ggf. die version und die ordner nicht richtig zusammen im hauptverzeichnis liegen ja noch zwei files mit _1.5 und _1.6

Entweder bin ich auf dem Holzweg oder es gibt noch eine Bug.

Führ mal zum Testen bitte die 'download_wasm.sh' aus und dann nutze genau diesen Inhalt in der 'wakeWords.js':

SepiaFW.wakeTriggers.porcupineVersion = "1.6";
SepiaFW.wakeTriggers.porcupineWakeWords = ["Grasshopper"];
SepiaFW.wakeTriggers.porcupineVersionsDownloaded = true;


Zitat von: whistler am 04 Juni 2020, 22:56:46
Nice To Have, erstmal muss es ja generell klappen auch mit 1.5 und 1.6:
Scheinbar, sofern die wakeword.js nicht "korrekt" ist sei es syntax fehler oder er kann was nicht laden, geht der client ja nicht in den wakeword modus.
kann man das noch irgendwie "abfangen" oder melden. gerade wenn der headless client das macht, sieht man das ja nicht unbedingt. z.B. nach einem neustart vom pi.

Ja stimmt, das wäre gut. Ich setze es mal auf die Liste.
Bis dahin würde ich empfehlen wie Oben beschrieben die richtige Einstellung zu suchen, sprich also über einen Browser zu testen, bei dem du die Dev Tools öffnen kannst. Wenn es Fehler gibt sieht man die dort.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 05 Juni 2020, 11:31:25
Hallo,

die Einträge in Sepia unter "Core Settings" lauten bei mir:
smarthome_hub_host = http://192.168.0.117:8083/fhem
smarthome_hub_name = fhem


Und ja, ich rufe auch im Webbrowser so meinen fhem auf. Die Antwort ist dann also html.

Wie ich dann auf eine "REST-Api" zugreifen kann, weiß ich leider auch nicht.
Anscheinend geht das irgendwie mit XHR=1 im Aufruf.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 05 Juni 2020, 11:55:44
Zitat von: gestein am 05 Juni 2020, 11:31:25
Hallo,

die Einträge in Sepia unter "Core Settings" lauten bei mir:
smarthome_hub_host = http://192.168.0.117:8083/fhem
smarthome_hub_name = fhem


Und ja, ich rufe auch im Webbrowser so meinen fhem auf. Die Antwort ist dann also html.

Wie ich dann auf eine "REST-Api" zugreifen kann, weiß ich leider auch nicht.
Anscheinend geht das irgendwie mit XHR=1 im Aufruf.

Das sieht eigentlich gut aus  ???
SEPIA baut die richtige URL für das REST Interface automatisch. Die sieht dann in deinem Fall z.B. so aus:

http://192.168.0.117:8083/fhem?cmd=jsonlist2%20global&XHR=1&fwcsrf=[your-token]

Kannst du das mal probieren bitte? Als Antwort müsste ein JSON Objekt kommen, SEPIA kriegt aber scheinbar nur HTML zurück.
Dein CSRF Token findest du im "WEB" device.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 05 Juni 2020, 12:43:05
Also diese URL http://192.168.0.117:8083/fhem?cmd=jsonlist2%20global&XHR=1&fwcsrf=csrf_<token> liefert anscheinend das Richtige:
{
  "Arg":"global",
  "Results": [
  {
    "Name":"global",
    "PossibleSets":"",
    "PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 altitude apiversion archivecmd archivedir archivesort:timestamp,alphanum archiveCompress autoload_undefined_devices:0,1 autosave:1,0 backup_before_update backupcmd backupdir backupsymlink blockingCallMax commandref:modular,full configfile disableFeatures:multiple-strict,attrTemplate,securityCheck dnsHostsFile dnsServer dupTimeout exclude_from_update featurelevel:6.0,5.9,5.8,5.7,5.6,5.5,99.99 genericDisplayType:switch,outlet,light,blind,speaker,thermostat holiday2we httpcompress:0,1 ignoreRegexp keyFileName language:EN,DE lastinclude latitude logdir logfile longitude maxChangeLog maxShutdownDelay modpath motd mseclog:1,0 nofork:1,0 nrarchive perlSyntaxCheck:0,1 pidfilename proxy proxyAuth proxyExclude restartDelay restoreDirs sendStatistics:onUpdate,manually,never showInternalValues:1,0 sslVersion stacktrace:1,0 statefile title updateInBackground:1,0 updateNoFileCheck:1,0 useInet6:1,0 version ASC:0,1,2 alarmDevice:Actor,Sensor cmdIcon devStateIcon devStateIcon:textField-long devStateStyle fhem_widget_channels fp_Terrasse_West genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue readingsWatcher siriName snipsMapping:textField-long snipsName snipsRoom sortby webCmd webCmdLabel:textField-long widgetOverride ASC:0,1,2 alarmDevice:Actor,Sensor cmdIcon devStateIcon devStateIcon:textField-long devStateStyle fhem_widget_channels fp_Terrasse_West genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType:text,push,mail,screen,light,audio,queue readingsWatcher siriName snipsMapping:textField-long snipsName snipsRoom sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "DEF": "no definition",
      "FD": "3",
      "FVERSION": "fhem.pl:v6.0-s22082/2020-05-31",
      "NAME": "global",
      "NR": "1",
      "STATE": "no definition",
      "TYPE": "Global",

<und so weiter und so fort>

  "totalResultsReturned":1
}


Dann stimmt bei meinen Einstellungen etwas nicht.

Ich bin so vorgegangen:
1) Core Settings
smarthome_hub_host = http://192.168.0.117:8083/fhem
smarthome_hub_name = fhem


Bei beiden Optionen habe ich das Hakerl gedrückt. In Sepia erscheint die Meldung:
{
  "serverType": "custom",
  "serverName": "SEPIA-Assist-API",
  "config": [
    "smarthome_hub_host=http://192.168.0.117:8083/fhem"
  ]
}

und
{
  "serverType": "custom",
  "serverName": "SEPIA-Assist-API",
  "config": [
    "smarthome_hub_name=fhem"
  ]
}


Dann auf "Smart Home" die Einstellung "Select System" auf "FHEM" und "Server" auf "http://192.168.0.117:8083".
Neben der URL steht ein roter Punkt und es steht in roten Buchstaben der Text "No items found or no access to smart home system.".
Dann auf "LOAD HUB INFO", der rote Punkt neben der URL für den Server wechselt auf Grün.
Es steht wieder der Text "No items found or no access to smart home system." in roten Buchstaben dort.
Dann auf "REGISTER SEPIA" und es kommt die Fehlermeldung:
{
  "result": "fail",
  "error": "Could not register SEPIA Framework inside smart home HUB. See assist-server log for errors."
}


Im log.out steht dann wieder:
2020-06-05 11:33:02 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"STRING":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Strict\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-strict.dtd\">\n<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<head root=\"\/fhem\">\n<title>Home, Sweet Home<\/title>\n<link rel=\"shortcut icon\" href=\"\/fhem\/icons\/favicon\" \/>\n<meta charset=\"UTF-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<link href=\"\/fhem\/pgm2\/style.css?v=1591339213\" rel=\"stylesheet\"\/>\n<link href=\"\/fhem\/pgm2\/jquery-ui.min.css\" rel=\"stylesheet\"\/>\n<style id='style_css'>\nbody { background-color:#FFFFE7; }\n<\/style>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery.min.js\"><\/script>\n<script attr='' type=\"text\/javascript\" src=\"\/fhem\/pgm2\/jquery-ui.min.js\"> .....

Im fhem log-file steht dann:
2020.06.05 12:37:34.824 4: Connection accepted from WEB_192.168.0.102_48310
2020.06.05 12:37:34.830 5: GET /?XHR=1 HTTP/1.1
User-Agent: Java/11.0.7
Host: 192.168.0.117:8083
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
2020.06.05 12:37:34.832 4: WEB_192.168.0.102_48310 GET /?XHR=1; BUFLEN:0
2020.06.05 12:37:34.833 4: WEB: redirecting /?XHR=1 to /fhem
2020.06.05 12:37:34.864 4: Connection closed for WEB_192.168.0.102_48310: EOF
2020.06.05 12:37:34.900 4: Connection accepted from WEB_192.168.0.102_48312
2020.06.05 12:37:34.905 5: GET /fhem HTTP/1.1
User-Agent: Java/11.0.7
Host: 192.168.0.117:8083
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
2020.06.05 12:37:34.906 4: WEB_192.168.0.102_48312 GET /fhem; BUFLEN:0
2020.06.05 12:37:34.932 4: WEB: /fhem / RL:18122 / text/html; charset=UTF-8 /  / Cache-Control: no-cache, no-store, must-revalidate

2020.06.05 12:37:34.987 4: Connection accepted from WEB_192.168.0.102_48314
2020.06.05 12:37:34.990 5: GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_<Token> HTTP/1.1
User-Agent: Mozilla/5.0
Host: 192.168.0.117:8083
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
2020.06.05 12:37:34.991 4: WEB_192.168.0.102_48314 GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_<Token>; BUFLEN:0
2020.06.05 12:37:34.991 4: WEB: redirecting /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_<Token> to /fhem
2020.06.05 12:37:34.999 4: Connection closed for WEB_192.168.0.102_48314: EOF
2020.06.05 12:37:35.006 4: Connection accepted from WEB_192.168.0.102_48316
2020.06.05 12:37:35.009 5: GET /fhem HTTP/1.1
User-Agent: Mozilla/5.0
Host: 192.168.0.117:8083
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
2020.06.05 12:37:35.010 4: WEB_192.168.0.102_48316 GET /fhem; BUFLEN:0
2020.06.05 12:37:35.024 4: WEB: /fhem / RL:18122 / text/html; charset=UTF-8 /  / Cache-Control: no-cache, no-store, must-revalidate

2020.06.05 12:37:44.796 4: Connection closed for WEB_192.168.0.102_48298: EOF
2020.06.05 12:37:44.800 4: Connection closed for WEB_192.168.0.102_48312: EOF
2020.06.05 12:37:44.803 4: Connection closed for WEB_192.168.0.102_48316: EOF


Der Aufruf von Sepia scheint also zu stimmen, aber fhem gibt nicht das Richtige zurück.
lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 05 Juni 2020, 20:03:50
Zitat von: sepia am 05 Juni 2020, 10:56:11
Führ mal zum Testen bitte die 'download_wasm.sh' aus und dann nutze genau diesen Inhalt in der 'wakeWords.js':

SepiaFW.wakeTriggers.porcupineVersion = "1.6";
SepiaFW.wakeTriggers.porcupineWakeWords = ["Grasshopper"];
SepiaFW.wakeTriggers.porcupineVersionsDownloaded = true;


Ja stimmt, das wäre gut. Ich setze es mal auf die Liste.
Bis dahin würde ich empfehlen wie Oben beschrieben die richtige Einstellung zu suchen, sprich also über einen Browser zu testen, bei dem du die Dev Tools öffnen kannst. Wenn es Fehler gibt sieht man die dort.

Das mit dem F12 hilft schon mal und das Grasshopper klappt auch bzw. wird richtig geladen. Das gleiche geht mit dem Bumblebee auch.

Jetzt wollte ich ein Multiwakeup bauen.


SepiaFW.wakeTriggers.porcupineVersion = "1.5";
SepiaFW.wakeTriggers.porcupineWakeWords = {
'raspberry': new Uint8Array([
0x21, 0x2e, 0x75, 0xad, 0xa2, 0x3b, 0xf9, 0x1f, 0xa8, 0xcc, 0x7d, 0x3c,
0xf3, 0x42, 0x33, 0x99, 0x61, 0x05, 0x57, 0x36, 0x93, 0x13, 0xc9, 0x99,
0xcb, 0xf5, 0x23, 0x27, 0x7c, 0xa1, 0x59, 0x11, 0xac, 0x54, 0x8c, 0x0e,
0xf7, 0xf7, 0x1a, 0x30, 0xda, 0x1d, 0x35, 0x04, 0x3f, 0xd2, 0x48, 0x95,
0x59, 0x94, 0x36, 0x35, 0x18, 0x1d, 0xc1, 0x36, 0x13, 0x08, 0xfa, 0x22,
0x10, 0xf7, 0x43, 0xce, 0x88, 0x9f, 0x49, 0xd0, 0x3e, 0x18, 0x89, 0xd3,
0x6d, 0xff, 0x69, 0xa2, 0xb8, 0x2d, 0x3a, 0xd8, 0xad, 0x5f, 0xb1, 0x01,
0xf6, 0xaf, 0x97, 0xa0
])
};
SepiaFW.wakeTriggers.porcupineVersionsDownloaded = true;


Aber bin erstmal nachdem alle nicht gingen 3-4 Stück auf eins zurück gegangen da es dann in der 1.5 und 1.6 zu einem Fehler kommt.


SepiaFW - LOG - WakeTriggers - Loaded wake words: ["raspberry"] sepiaFW.wakeTriggers.js:246:17
SepiaFW - LOG - WakeTriggers - Wake word sensitivities: {"0":0.20000000298023224} sepiaFW.wakeTriggers.js:247:17
SepiaFW - LOG - TTS voice set: de-DE marytts f sepiaFW.speech.js:978:19
SepiaFW - LOG - WakeTriggers - Loaded Picovoice Porcupine engine. sepiaFW.wakeTriggers.js:215:20
SepiaFW - LOG - WakeTriggers - Starting wake-word listener. sepiaFW.wakeTriggers.js:108:23
[ERROR] keyword file belongs to a different version of the library pv_porcupine_mod.js:1020:59
[ERROR] parsing keyword ID #0 failed with 'INVALID_ARGUMENT' pv_porcupine_mod.js:1020:59
Error: failed to initialize porcupine.


Funktioniert das Multiwake in der Version 1.5 bzw. 1.6 nicht mehr?


[EDIT]
ich haette noch eine idee für den headless client, da bin ich aktuell immer per vnc drauf :-)
Da wäre noch im setup.sh skript ein headless + display + debug  nice :-) heisst ohne kiosk mode, dann kann man dort ebenfalls mit F12 schauen was los ist.


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Juni 2020, 09:31:09
Zitat von: gestein am 05 Juni 2020, 12:43:05
Also diese URL http://192.168.0.117:8083/fhem?cmd=jsonlist2%20global&XHR=1&fwcsrf=csrf_<token> liefert anscheinend das Richtige:
...

Ok, das ist schon mal gut. Sind FHEM, SEPIA und das System von dem du den Test gemacht hast 3 separate Computer? Worauf ich hinaus will ist, könnte es sein dass der SEPIA Server nicht die gleichen Berechtigungen hat FHEM aufzurufen?
Ich glaube zwar das Problem liegt irgendwo anders aber das kann man mal im Hinterkopf behalten.

Zitat von: gestein am 05 Juni 2020, 12:43:05
Ich bin so vorgegangen:
[...]
Dann auf "Smart Home" die Einstellung "Select System" auf "FHEM" und "Server" auf "http://192.168.0.117:8083".
Neben der URL steht ein roter Punkt und es steht in roten Buchstaben der Text "No items found or no access to smart home system.".
Dann auf "LOAD HUB INFO", der rote Punkt neben der URL für den Server wechselt auf Grün.

Alle Schritte sind genau richtig, nur am Ende gibt es eventuell ein Problem, wobei es sich durch "LOAD HUB INFO" eigentlich selber korrigieren sollte. Für Version 2.5.0 habe ich es intuitiver gemacht aber in v2.4.1 ist das Feld "Server" etwas verwirrend. Im Grunde trägt man da nichts von Hand ein. Einfach die Seite öffnen, "LOAD HUB INFO" drücken und alle Felder sollten korrekt ausgefüllt sein. Speziell in dem Feld "Server" sollte dann "http://192.168.0.117:8083/fhem" stehen (inklusive /fhem am Ende!).

Zitat von: gestein am 05 Juni 2020, 12:43:05
Im fhem log-file steht dann:

[...]
2020.06.05 12:37:34.991 4: WEB_192.168.0.102_48314 GET /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_<Token>; BUFLEN:0
2020.06.05 12:37:34.991 4: WEB: redirecting /?cmd=jsonlist2+global&XHR=1&fwcsrf=csrf_<Token> to /fhem
2020.06.05 12:37:34.999 4: Connection closed for WEB_192.168.0.102_48314: EOF
2020.06.05 12:37:35.006 4: Connection accepted from WEB_192.168.0.102_48316
2020.06.05 12:37:35.009 5: GET /fhem HTTP/1.1


Dieses "redirecting" sieht verwirrend aus. Ich vermute hier passiert Folgendes:
- Die HUB URL ist eigentlich korrekt in SEPIA: "http://192.168.0.117:8083/fhem"
- Durch den Schritt direkt vor "LOAD HUB INFO" wird sie aber auf "http://192.168.0.117:8083" gesetzt (das "Server" Feld)
- Dann versucht SEPIA den Aufruf ohne den Pfad "/fhem" am Ende was zu dem redirect führt

Die Lösung wäre also Schlicht und einfach den "LOAD HUB INFO" Button drücken und Prüfen, dass das "Server" Feld korrekt auf "http://192.168.0.117:8083/fhem" steht.

Grüße,
Florian

Zitat von: whistler am 05 Juni 2020, 20:03:50
Jetzt wollte ich ein Multiwakeup bauen.
[...]
Aber bin erstmal nachdem alle nicht gingen 3-4 Stück auf eins zurück gegangen da es dann in der 1.5 und 1.6 zu einem Fehler kommt.


SepiaFW - LOG - WakeTriggers - Loaded wake words: ["raspberry"] sepiaFW.wakeTriggers.js:246:17
[...]
[ERROR] keyword file belongs to a different version of the library pv_porcupine_mod.js:1020:59
[ERROR] parsing keyword ID #0 failed with 'INVALID_ARGUMENT' pv_porcupine_mod.js:1020:59
Error: failed to initialize porcupine.


Funktioniert das Multiwake in der Version 1.5 bzw. 1.6 nicht mehr?

Ich teste das mal, sieht von der Konfiguration eigentlich korrekt aus.

Zitat von: whistler am 05 Juni 2020, 20:03:50
[EDIT]
ich haette noch eine idee für den headless client, da bin ich aktuell immer per vnc drauf :-)
Da wäre noch im setup.sh skript ein headless + display + debug  nice :-) heisst ohne kiosk mode, dann kann man dort ebenfalls mit F12 schauen was los ist.

Ja das könnte man machen :-)
Übrigens müsstest du den gleichen Fehler auch sehen wenn du in des SEPIA Einstellungen auf der "Hey SEPIA" Seite unten den "Debug" Button auf ON stellst. Dann kommen unten auf der Seite die Fehlermeldungen.

[EDIT] Korrektur: Der Fehler wird nicht im Debug Modus angezeigt UND ich kann ihn reproduzieren. Wenn man "raspberry" allerdings im non-multi-keyword Modus nutzt beschwert er sich nicht, komisch. Mal gucken ob ich herausfinden kann was da passiert ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 06 Juni 2020, 10:40:08
Hallo,

Danke für Deine Hilfe.
Wenn ich die "Smart Home"-Settings aufrufe, steht bei Server automatisch "http://192.168.0.117:8083" - ohne dem "/fhem".
Wenn ich händisch "/fhem" dazu schreibe, dann ist der Punkt links neben dem Textfeld rot.
Drücke ich dann "LOAD HUB INFO", verschwindet das "/fhem" wieder und der Punkt ist grün.

Wenn ich das "/fhem" stehen lassen (also nicht das "LOAD HUB INFO" drücke, sondern gleich "REGISTER SEPIA"), kommt die Meldung "{
  "result": "fail",
  "error": "host address is unknown to server and call has been blocked! Please set 'smarthome_hub_host' in your server settings first."
}

Da muss ich aber erst noch die Einträge im log.out und im fhem.log checken.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Juni 2020, 10:50:13
Zitat von: gestein am 06 Juni 2020, 10:40:08
Wenn ich die "Smart Home"-Settings aufrufe, steht bei Server automatisch "http://192.168.0.117:8083" - ohne dem "/fhem".
Wenn ich händisch "/fhem" dazu schreibe, dann ist der Punkt links neben dem Textfeld rot.
Drücke ich dann "LOAD HUB INFO", verschwindet das "/fhem" wieder und der Punkt ist grün.

Hi Gerhard,

ich glaube ich verstehe jetzt das Problem. Die Einstellungen für "smarthome_hub_host" und "smarthome_hub_name" sind zwar gespeichert aber noch nicht aktiv.
Hast du nach dem Speichern den Server neu gestartet? Falls nicht einmal bitte nachholen ^^.

Zitat von: whistler am 05 Juni 2020, 20:03:50
Funktioniert das Multiwake in der Version 1.5 bzw. 1.6 nicht mehr?

Hab den Bug gefunden und der Fix ist im Dev und Master. Release sollte Heute kommen ^^.
Danke fürs Testen!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 06 Juni 2020, 14:51:11
Halllo,

Du hattest recht. Peinlich - Anfängerfehler.
Ein Reboot nach dem Setzen der "Core Settings" und dem Setzen des "Smart Home Hub" hat die Lösung gebracht.
Daran hätte ich denken können, wäre ohne Deine Hilfe aber nie draufgekommen.

Danke und entschuldige bitte.
Jetzt kann ich wieder weiterprobieren  :)

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Juni 2020, 15:23:47
Zitat von: gestein am 06 Juni 2020, 14:51:11
Ein Reboot nach dem Setzen der "Core Settings" und dem Setzen des "Smart Home Hub" hat die Lösung gebracht.
Daran hätte ich denken können, wäre ohne Deine Hilfe aber nie draufgekommen.

Du bist nicht der Erste ;-) Ich habe versucht es für die nächste Version etwas deutlicher hervorzuheben, mal gucken ob es wirkt ^^.
Viel Spaß beim Testen!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 06 Juni 2020, 17:02:07
Zitat von: sepia am 06 Juni 2020, 10:50:13
Hab den Bug gefunden und der Fix ist im Dev und Master. Release sollte Heute kommen ^^.
Danke fürs Testen!

So also Bugfix getestet klappt auch.

Was mit aufgefallen ist vermutlich nach wie vor beim Update des Headless Client einmal aufräumen und neu Anfangen. Das bedeutet beim neu installieren:
Install erstellen download zip & unizip
install-sepia_client.sh dev (oder auch ohne)
setup.sh
download_wsma.sh
die settings für room wakeword nach editieren
wakeword.js anpassen

Hat sich den vorgehen was geändert?

Was noch schön wäre, wenn in den settings.js oder settings.json die syntax nicht passt, das es eine Meldung oder so gibt. Genau hab ich keine Idee.
ich hatte mit bei neuinstallieren irgendwie ungültige werte in zeile 1 eingefangen, und hab nun gesucht warum der client sich nicht einloggt.

Wakeword klappt bei nur nun zumindest erstmal auf 2 von 5 pi. liegt sicher an der konfiguration darunter liegend.
Am browser am Rechner funktioniert es auch.

Vielleicht wäre es Denkbar ein update_sepia_client.sh noch zu bauen. (und ein cleanup)
damit bei einem kleinen update nicht komplett neu installiert werden muss, wie z.B. in dem wakeword fix.
Vielleicht was für die todo liste.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 06 Juni 2020, 19:05:45
Zitat von: whistler am 06 Juni 2020, 17:02:07
Was mit aufgefallen ist vermutlich nach wie vor beim Update des Headless Client einmal aufräumen und neu Anfangen. Das bedeutet beim neu installieren:
Install erstellen download zip & unizip
install-sepia_client.sh dev (oder auch ohne)
setup.sh
download_wsma.sh
die settings für room wakeword nach editieren
wakeword.js anpassen

Hat sich den vorgehen was geändert?

Klingt gut soweit.
Ich bin ehrlich gesagt nicht sicher was passiert, wenn man den ganzen Installationsvorgang über eine existierende Version ausführt, aber zumindest bei der .bashrc wird vorher geguckt ob der SEPIA Eintrag schon existiert. Ein ordentliches Update Script fehlt dem DIY Client leider noch.
Die 'install_sepia_client.sh' hat jetzt noch einen neues Argument bekommen: 'skipBLE', damit kann man die ganze Bluetooth Geschichte überspringen und z.B. Installationen auf nicht-Raspberry Systemen möglich machen. Wenn man es allerdings später braucht muss man vermutlich CLEXI neu installieren weil es aus dem Build-Prozess entfernt wurde ;-)

Zitat von: whistler am 06 Juni 2020, 17:02:07
Was noch schön wäre, wenn in den settings.js oder settings.json die syntax nicht passt, das es eine Meldung oder so gibt. Genau hab ich keine Idee.
ich hatte mit bei neuinstallieren irgendwie ungültige werte in zeile 1 eingefangen, und hab nun gesucht warum der client sich nicht einloggt.

Ja das wäre nett, wüsste aber spontan auch nicht wie man es machen könnte (ohne zu viel Aufwand), denn wenn die settings.js nicht geparsed werden kann kann man über den CLEXI Server auch nichts ausgeben weil die Verbindung gar nicht erst zustande kommt. Bei der settings.json müsste eigentlich direkt ein Fehler im CLEXI Log kommen.

Zitat von: whistler am 06 Juni 2020, 17:02:07
Vielleicht wäre es Denkbar ein update_sepia_client.sh noch zu bauen. (und ein cleanup)
damit bei einem kleinen update nicht komplett neu installiert werden muss, wie z.B. in dem wakeword fix.

Ja, hehe, siehe Oben :-p
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 07 Juni 2020, 11:12:14
Moin Florian,

ja ich hab gesehen gestern war es soweit. Ich denke da ist gestern nicht mehr soviel passiert. das ich bei Gelegenheit mal update.
Vielen Dank dafür. :-)

Ich habe noch eine andere Sache. Beim Display bzw. Pseudoheadless Client. Den nutze ich ja,
wird ja der chromium Browser aufgerufen im Kiosk mode etc.

Aber entscheidend ist glaubig der Chromium an sich. Da kommt dann nach einer zeit ein Popup das der Chromium nicht aktualisiert werden konnte und daher neu installiert werden muss. Wenn man die Maske schliesst oder das "osReboot" nutzt geht es ne Zeit wieder.

Das Problem ist, wenn ich das richtig sehe, kann ich während dessen keine Eingaben mehr machen. Und die Uhr die ja oben im Screen mitläuft bleibt dann stehen. Ich wollte dir eigentlich per VNC einen Screenshot machen, aber wie es so ist, wenn man am Rechner sitzt macht man erst den Reboot :-)
Kann ich aber noch nachliefern. (Nachlieferung vom anderen Client es hatten alle die Meldung)

Wenn ich dann per ssh ein Update einspielen will. Ist es sonst und jetzt auch so, das er kein update "braucht".

$ sudo apt install chromium-browser
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
chromium-browser ist schon die neueste Version (78.0.3904.108-rpt1).


Vielleicht hast du eine Idee dazu. :-)

Schönen Sonntag.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 07 Juni 2020, 11:50:16
Zitat von: whistler am 07 Juni 2020, 11:12:14
ja ich hab gesehen gestern war es soweit. Ich denke da ist gestern nicht mehr soviel passiert. das ich bei Gelegenheit mal update.
Vielen Dank dafür. :-)

Hi Basti,

Ja, ich habs endlich durchgezogen ^^ (bevor ich wieder nen Bug finde und alles verschiebe :P). Für dich vielleicht noch relevant sind 2 kleinere Verbesserungen im DIY Client Setup, nämlich dass TTS und Wake-Word deaktiviert sind bis man sich einlogged. Die TTS Sache hatten wir ja schon diskutiert, aber das Wake-Word hatte mir auch Probleme gemacht weil es sich mit dem "Ready for Setup" Sound nicht gut verträgt ... im Grunde aber nur Kosmetik. Zusätzlich gibt es noch Event Broadcasting im Remote Terminal für Wake-Word aktiv/inaktiv, das wars.

Ich schreibe jetzt ein paar Tutorials für die neue Version und mache dann noch mal etwas "Werbung" für die neuen Features ;-)

Zitat von: whistler am 07 Juni 2020, 11:12:14
Ich habe noch eine andere Sache. Beim Display bzw. Pseudoheadless Client. Den nutze ich ja,
wird ja der chromium Browser aufgerufen im Kiosk mode etc.

Aber entscheidend ist glaubig der Chromium an sich. Da kommt dann nach einer zeit ein Popup das der Chromium nicht aktualisiert werden konnte und daher neu installiert werden muss. Wenn man die Maske schliesst oder das "osReboot" nutzt geht es ne Zeit wieder.

Ja stimmt, das hatte ich kurz verdrängt, aber das nervt mich auch. Selbst wenn man alle Update Checks deaktiviert kommt das ab und an wieder >:( . Ich gucke es mir jetzt mal genauer an.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 09 Juni 2020, 09:27:03
Hallo,

Nachdem nun die Sepia-Installation erfolgreich gemeistert habe, kommen mit dem Ausprobieren die ersten Wünsche ;)
Zuerst mal: wirklich tolle Arbeit, die Du da leistest.

Daher habe ich nun versucht, mich in die Thematik von Sepia einzulesen.
Allerdings ist die Dokumentation für mich sehr schwer zu durchschauen.

Ich hätte ein paar Fragen, die Neueinsteiger, die aus fhem kommen, vielleicht auch interessieren:
- wie kann ich Sepia updaten? Bisher habe ich "nur" Anleitungen für die Neuinstallation gefunden.
  Du bist ja sehr fleißig und jedes Mal eine Neuinstallation ist wohl nicht zielführend.
- wie kann ich einen Client (oder mehrere) installieren? Welche Parameter muss ich da wo einstellen?
  Im Endausbau wäre es wohl gut, in jedem Zimmer einen Client zu haben. Oder zumindest dort, wo man den Assistenten haben möchte. Oder?
- Kann man die Sprachrückmeldungen über Sonos ausgeben?
  Ich habe bisher alle Meldungen von fhem über meine Sonos laufen. Das funktioniert super.
- Stimmt es, dass es bei einem Raspberry (ich hätte einen Zero) Probleme im Betrieb von Bluetooth und Sepia gibt?
  Ich würde nämlich gerne einen raspberry zero als Client für Sepia (mit einem "ReSpeaker 4-Mic Array for Raspberry Pi") und Bluetooth für die Presence-Erkennung verwenden.
  Ginge das?

Vielen Dank im Voraus (und nochmals: ein wirklich tolles Projekt, dass Du da auch die Beine gestellt hast).
liebe Grüße
Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Juni 2020, 10:29:44
Zitat von: gestein am 09 Juni 2020, 09:27:03
Daher habe ich nun versucht, mich in die Thematik von Sepia einzulesen.
Allerdings ist die Dokumentation für mich sehr schwer zu durchschauen.

Ja die ist leider wirklich noch nicht so gut :-X . Ich versuche sie Schritt für Schritt zu verbessern ;)

Zitat von: gestein am 09 Juni 2020, 09:27:03
- wie kann ich Sepia updaten? Bisher habe ich "nur" Anleitungen für die Neuinstallation gefunden.
  Du bist ja sehr fleißig und jedes Mal eine Neuinstallation ist wohl nicht zielführend.

Ich nehme an du nutzt Linux? Dafür gibt es im SEPIA Ordner ein Skript "update-sepia.sh". Es lohnt sich vorher ein Update der update und backup Skripte zu ziehen. Ich habe mal schnell eine neue Sektion in den Docs erstellt dafür: https://github.com/SEPIA-Framework/sepia-docs/wiki/Update-SEPIA

Zitat von: gestein am 09 Juni 2020, 09:27:03
- wie kann ich einen Client (oder mehrere) installieren? Welche Parameter muss ich da wo einstellen?
  Im Endausbau wäre es wohl gut, in jedem Zimmer einen Client zu haben. Oder zumindest dort, wo man den Assistenten haben möchte. Oder?

Jeder Browser ist im Handumdrehen ein Client, du musst lediglich die Website der App aufrufen und beim Login auf deinen Server verweisen (die IP des Servers bei Hostname eingeben) :-) Der Server hosted die App üblicherweise auf "http://[SEPIA-SERVER-IP]:20726/sepia/assist/app/index.html" , es empfiehlt sich aber SSL Zertifikate zu installieren sonst funktioniert das Mikrofon nicht richtig. Dazu gibt es eine ganze Sektion in den Docs: https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server

Für deinen Anwendungsfall bietet sich vermutlich aber eher der autonome DIY/headless Client an. Dazu gibt es hier eine Anleitung: https://github.com/SEPIA-Framework/sepia-installation-and-setup/tree/master/sepia-client-installation/rpi

Zitat von: gestein am 09 Juni 2020, 09:27:03
- Kann man die Sprachrückmeldungen über Sonos ausgeben?
Ich habe bisher alle Meldungen von fhem über meine Sonos laufen. Das funktioniert super.

Gute Frage. Ich weiß nicht genau wie Sonos funktioniert. Wie verbindet sich Sonos denn mit FHEM?

Zitat von: gestein am 09 Juni 2020, 09:27:03
- Stimmt es, dass es bei einem Raspberry (ich hätte einen Zero) Probleme im Betrieb von Bluetooth und Sepia gibt?
  Ich würde nämlich gerne einen raspberry zero als Client für Sepia (mit einem "ReSpeaker 4-Mic Array for Raspberry Pi") und Bluetooth für die Presence-Erkennung verwenden.
  Ginge das?

Ich hatte bisher nur Probleme mit der Kombination "neustest Raspberry OS (früher Raspbian) + Rpi4". Da führte Bluetooth zu Problemen mit dem Wifi und ich weiß noch nicht warum. Raspberry Pi Zero mit neustem Raspberry OS habe ich noch nicht getestet aber mit Raspbian von letztem Monat war es kein Problem.
Wie genau planst du die "Presence-Erkennung" umzusetzen?  :)

Zitat von: gestein am 09 Juni 2020, 09:27:03
Vielen Dank im Voraus (und nochmals: ein wirklich tolles Projekt, dass Du da auch die Beine gestellt hast).

Danke! :) Grüße zurück,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 09 Juni 2020, 13:59:07
Danke für die ausführlichen Antworten.

Ja, ich nutze Linux (Raspian). Auf meinem Rpi 3 ließ sich Sepia ohne Probleme installieren.
Weil ich ein paar überflüssige Raspberry pi zero habe, wollte ich mir zuerst mal ein Mikrophon kaufen und dann damit am raspberry zero herumspielen, bevor ich noch weitere in Betracht ziehe.

Im Prinzip ist die Presence-Erkennung ein script, dass als Hintergrund-Prozess läuft und kontinuierlich über einen Bluetooth-Adapter schaut, ob ein bestimmtes Bluetooth-Gerät (z.B. ein Schlüsselanhänger, GTag) erreichbar ist.
Wenn, dann nehme ich an, dass die Person Zuhause ist, wenn das Teil nicht erreichbar ist, dann ist derjenige abwesend.
Das Ganze funktioniert auch verteilt auf mehrere Clients, so kann man mehrere Zimmer bzw. Geschoße abdecken.
Dazu gibt es im forum einige Beiträge, auch im Wiki ist einiges zu finden.
https://wiki.fhem.de/wiki/PRESENCE#.C3.9Cberwachen_mittels_Bluetooth (https://wiki.fhem.de/wiki/PRESENCE#.C3.9Cberwachen_mittels_Bluetooth)
Aber ich probier's einfach aus.

Das das lepresence-tool sehr einfach zu installieren ist, werde ich es mal mit einem headless Client versuchen.
Danke für den Tipp.

Sonos wäre momentan ein eigenes Modul in fhem, bei dem man z.B. über "set SONOS speak Text" einen Text ausgeben kann.
Man kann auch andere TTS verwenden (z.B. Amazon Polly), oder man spielt ein vorher erzeugtes mp3 ab (über set <SONOS> PlayURI bzw. PlayURITemp).
Hier hilft https://wiki.fhem.de/wiki/SONOS (https://wiki.fhem.de/wiki/SONOS)
Zur Zeit wird auch eine einfachere Schnittstelle zu Sonos über MQTT entwickelt.
https://forum.fhem.de/index.php/topic,111711.msg1059442.html#msg1059442 (https://forum.fhem.de/index.php/topic,111711.msg1059442.html#msg1059442)
Aber damit habe ich mich noch nicht beschäftigt.

Aber das sind ein bisschen viele Themen auf einmal.
Ich werde mich Schritt für Schritt vorantasten. ;)
Danke nochmal.
lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 09 Juni 2020, 17:55:38
Hallo zusammen,

da ich das Thema ja auch schonmal hatte mit der Rückmeldung etc. zwar kein Sonos nutze sondern den LMS nutze.
Ist aber ja vielleicht auch das interessant den Umweg über mqtt zu gehen.

Mir war so das wir das Thema schon hatten und ich auch schonmal was dazu gelesen hatte.
Ich hab leider direkt in den Anleitungen noch nicht wieder gefunden, das folgt sicher noch. Die 2.5.0 ist ja gerade erst fertig.

@Florian: Kannst du mir vielleicht einen Tip geben, wenn ich im Code-UI bin möchte er gerne das ich mich einlogge beim Drücken auf Upload.
Meldung erscheint: You need to be logged in to upload a service!

ich hab es sowohl mit der uid1003 und uid1007 getestet. Die1007 hat tester,smarthomeguest,developer als Rolle.
Scheinbar reicht ihm das nicht.

Vorgehen: Menü -> Code-UI -> Smart Sevice MQTT-Demo oben auswählen.
Den Code anpassen und uid1007 und mqtt broker etc.
Dann auf Upload klicken und es erscheint die Loginmeldung.

(Was mir gerade einfällt hast du ggf. am Samstag über Tag an der Stelle noch noch nen Bugfix gemacht, dann müsste ich nochmal updaten, wenn der Fehler kurz vor Release noch drin war)

Danke schön.

Gruß
Basti


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 09 Juni 2020, 18:26:21
Oder einfacher in Sepia ein Kommando definieren, dass ausgeführt wird, wenn etwas rückgemeldet werden soll.
z.B. in der Art "set <dumm-device> <Text>", wobei Text neben dem Text auch anderes enthalten könnte (wo soll ausgegeben werden etc.).

Ist natürlich nicht so fancy wie MQTT, sollte aber auch gehen.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 09 Juni 2020, 18:35:30
Zitat von: gestein am 09 Juni 2020, 18:26:21
Oder einfacher in Sepia ein Kommando definieren, dass ausgeführt wird, wenn etwas rückgemeldet werden soll.
z.B. in der Art "set <dumm-device> <Text>", wobei Text neben dem Text auch anderes enthalten könnte (wo soll ausgegeben werden etc.).

Ist natürlich nicht so fancy wie MQTT, sollte aber auch gehen.

lg, Gerhard

Hi Gehard,

ja das hab ich mir auch gedacht. Aber mein Gedanke war. Sepia Schalte Deckenlicht an. und wenn man dann den Rückmeldetext bekommt per mqtt kann man es auswerten :-)

Ob nun mqtt mehr fancy ist, ich habs nur pragmatisch gesehen. Schick wäre auch, wenn man den Payload vom Clexi Client umlenken kann. Die Ausgabe im Terminal, wenn man verbunden ist.

Wenn ich dich richtig verstanden habe meinst du das Kommando selber was man steuern will über Teach UI. Und jede Lampe/Gerät dort anlernen?
ich wollte mir den Overhead sparen :-)

Gruß Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 09 Juni 2020, 18:56:54
Hallo Basti,

da bin ich wohl noch zuwenig im Thema drinnen, um da wirklich mitdiskutieren zu können.
Ich dachte eher nur an die sprachlichen Rückmeldungen.
Für die Bestätigung von Aktionen (z.B. Statuswechsel) etc. muss dann wohl was anderes her.

Aber wie gesagt, da stehe ich noch ganz am Anfang meines Wissens.
(ich weiß ja noch nicht mal, was ein CLEXI-Server so den ganzen Tag tut ;) noch nie gehört das Wort)

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 09 Juni 2020, 19:13:30
Na ich versuche es mal zu erklären (Florian kann das bestimmt besser).

Der Clexi Server läuft im Hintergrund auf dem Headless Client um mit der Console in der Web GUI Kommunizieren zu können, bzw. dort einen User anmelden zu können.

Deine Idee war ja nicht schlecht, aber der Gedanke die "Audio Rückmeldung" generell umzulenken hatte ich auch schon länger, aber das hatte ich nach hinten geschoben bis die 2.5.0 fertig ist um nicht alle Baustellen gleichzeitig anzugehen.

Und da die Frage wieder aufkam hab ich nur das "verdrängte" Wissen wieder rausgekramt, weil ich das im Github irgendwann gelesen habe.

Und das es MQTT ist war eher Zufall, und ist nicht Zwingend das Mittel erster Wahl nur weil es alle benutzen. ;-)
Aber ich weiss wie du das meinst.

Na schauen wir mal. Vielleicht hat Florian für uns ja noch etwas Input was das Thema Broadcast umlenken angeht.
Ich glaub das steht auf der ToDo Liste für nach der 2.5.0 :-)

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Juni 2020, 21:33:34
[EDIT] Uups, 4 neue Nachrichten, die muss ich noch lesen ... unten die Antworten auf Basis von Seite 15 ^^

Zitat von: gestein am 09 Juni 2020, 13:59:07
Weil ich ein paar überflüssige Raspberry pi zero habe, wollte ich mir zuerst mal ein Mikrophon kaufen und dann damit am raspberry zero herumspielen, bevor ich noch weitere in Betracht ziehe.

Der kleine Zero hat leider zu wenig RAM für Server und Client, aber wenn du den Server auf einer anderen Maschine lauf lässt sollte der Zero als Client ganz gut laufen. Ich hatte so eine Konstruktion mit ReSpeaker 2Mic Hat mal eine Weile auf meinem Schreibtisch liegen über einen Micro:Bit via Bluetooth getriggert :-) (das Micro:Bit Skript ist auch im GitHub Repository mit dem SEPIA Installer zu finden).

Zitat von: gestein am 09 Juni 2020, 13:59:07
Im Prinzip ist die Presence-Erkennung ein script, dass als Hintergrund-Prozess läuft und kontinuierlich über einen Bluetooth-Adapter schaut, ob ein bestimmtes Bluetooth-Gerät (z.B. ein Schlüsselanhänger, GTag) erreichbar ist.
[...]
Das das lepresence-tool sehr einfach zu installieren ist, werde ich es mal mit einem headless Client versuchen.
Danke für den Tipp.

Damit das ganze gut funktioniert bräuchte man noch eine Funktion im SEPIA Client, die irgendwie auf den Status reagiert, vielleicht den Input blockiert wenn das Presence-Signal noch nicht gesendet wurde o.ä.. Die radikalere Methode, die natürlich jetzt schon geht, wäre den SEPIA Client zu starten und zu stoppen auf Basis des Signals ^^.
SEPIA hat verschiedene Schnittstellen, die dafür gut geeignet sind. Ich kann das ja mal auf die Roadmap setzen :-)

Zitat von: gestein am 09 Juni 2020, 13:59:07
Sonos wäre momentan ein eigenes Modul in fhem, bei dem man z.B. über "set SONOS speak Text" einen Text ausgeben kann.
Man kann auch andere TTS verwenden (z.B. Amazon Polly), oder man spielt ein vorher erzeugtes mp3 ab (über set <SONOS> PlayURI bzw. PlayURITemp).
Hier hilft https://wiki.fhem.de/wiki/SONOS (https://wiki.fhem.de/wiki/SONOS)
Zur Zeit wird auch eine einfachere Schnittstelle zu Sonos über MQTT entwickelt.
https://forum.fhem.de/index.php/topic,111711.msg1059442.html#msg1059442 (https://forum.fhem.de/index.php/topic,111711.msg1059442.html#msg1059442)
Aber damit habe ich mich noch nicht beschäftigt.

Interessant. In SEPIA v2.5.0 gibt es jetzt auch MQTT Support für Smart Home Geräte, vielleicht kann man damit was erreichen (ich schreibe gerade an den Docs). Alternativ gibt es noch einen MQTT Demo Service mit dem mam beliebige Szenarios bauen kann oder die Schnittstelle des DIY Clients, die jetzt schon die TTS Events überträgt an den CLEXI Server. CLEXI ist ein mini Server der über eine WebSocket Verbindung ein "Remote Terminal" Zugriff auf den Client erlaubt. Basti, weiter oben im Thread, hatte auch schon mal gefragt ob man die Events nicht an ein MQTT System durchreichen kann.
Also, etwas viele Infos auf einmal, aber wie du siehst mangelt es nicht an Ideen und Optionen ;D

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 09 Juni 2020, 21:41:57
Zitat von: sepia am 09 Juni 2020, 21:33:34
[EDIT] Uups, 4 neue Nachrichten, die muss ich noch lesen ... unten die Antworten auf Basis von Seite 15 ^^

Ok dann warte ich mal die weiteren Antworten nach deinem Lesen ab :-)

Und ja die tts events per mqtt zu verschicken wäre ja schon fast perfekt :-)

Grüße
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Juni 2020, 21:56:23
Ich schreibe lieber noch eine neue Antwort statt einen Edit zu machen sonst kommt es wahrscheinlich durcheinander ^^.

Also ich glaube wir sind ungefähr auf der selben Wellenlänge, zumindest kam das Thema 2mal zum CLEXI Server ;-)
Es gibt jetzt 4 Wege die mehr oder weniger sinnvoll sind. Ich fasse zusammen:

1) Der CLEXI Server leitet die TTS Events durch zu einem MQTT Server. Dazu müsste ich wohl am Besten ein MQTT Modul direkt in CLEXI einbauen. Der Vorteil wäre, dass man den Text von SEPIA direkt bekommt und damit dann machen kann was man will.
2) Man erstellt ein Gerät in FHEM für Sonos und schickt vorgefertigte Befehle dahin
3) Man erstellt ein MQTT Gerät über die neue "Internal HUB" Funktion und schickt vorgefertigte Befehle dorthin
4) Man bastelt sich einen eigenen Service übers SDK der Befehle per MQTT oder FHEM-Interface abschickt

Ich denke Option 1 ist am sinnvollsten für den konkreten Anwendungsfall.

Zitat von: whistler am 09 Juni 2020, 17:55:38
@Florian: Kannst du mir vielleicht einen Tip geben, wenn ich im Code-UI bin möchte er gerne das ich mich einlogge beim Drücken auf Upload.
Meldung erscheint: You need to be logged in to upload a service!

ich hab es sowohl mit der uid1003 und uid1007 getestet. Die1007 hat tester,smarthomeguest,developer als Rolle.
Scheinbar reicht ihm das nicht.
[...]
(Was mir gerade einfällt hast du ggf. am Samstag über Tag an der Stelle noch noch nen Bugfix gemacht, dann müsste ich nochmal updaten, wenn der Fehler kurz vor Release noch drin war)

Hm, eigentlich müsste es genau so klappen. Geändert wurde da am Samstag glaub nix mehr, nur kurz vorher hatte ich den "Save File" Button hinzugefügt und etwas optimiert beim Code.
Kannst du dich noch mal ausloggen und komplett neu einloggen im SEPIA Control HUB. Vielleicht ist da was durcheinander gekommen.
Ich teste auch noch mal ob es bei mir geht.

[EDIT] Also bei mir geht es. User mit den gleichen Rollen, SDK aktiviert in den Core Settings (das würde aber eh eine andere Fehlermeldung senden).
Ich würde einmal nen Logout machen, Seite neu laden und dann noch mal versuchen.
Ach so übrigens der Admin darf glaub keine Services hochladen wenn ich mich recht erinnere ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 09 Juni 2020, 22:29:37
Zitat von: sepia am 09 Juni 2020, 21:56:23
1) Der CLEXI Server leitet die TTS Events durch zu einem MQTT Server. Dazu müsste ich wohl am Besten ein MQTT Modul direkt in CLEXI einbauen. Der Vorteil wäre, dass man den Text von SEPIA direkt bekommt und damit dann machen kann was man will.
4) Man bastelt sich einen eigenen Service übers SDK der Befehle per MQTT oder FHEM-Interface abschickt

Ich denke Option 1 ist am sinnvollsten für den konkreten Anwendungsfall.

Also 1 wäre du musst in die Version was einbauen. :-) Dann wäre es im Standard. :-) Nice.
4 wäre man kann sich selber was bauen wie das Node-Red Sample vom Github. Für die ungeduldigen unter uns :-)

Zitat von: sepia am 09 Juni 2020, 21:56:23
Hm, eigentlich müsste es genau so klappen. Geändert wurde da am Samstag glaub nix mehr, nur kurz vorher hatte ich den "Save File" Button hinzugefügt und etwas optimiert beim Code.
Kannst du dich noch mal ausloggen und komplett neu einloggen im SEPIA Control HUB. Vielleicht ist da was durcheinander gekommen.
Ich teste auch noch mal ob es bei mir geht.

[EDIT] Also bei mir geht es. User mit den gleichen Rollen, SDK aktiviert in den Core Settings (das würde aber eh eine andere Fehlermeldung senden).
Ich würde einmal nen Logout machen, Seite neu laden und dann noch mal versuchen.
Ach so übrigens der Admin darf glaub keine Services hochladen wenn ich mich recht erinnere ;-)

Ja ich hab mich gerade nochmal ausgeloggt, bzw. zusätzlich einmal den Browser Task abgeschossen. Jetzt wo ich dein Edit gelesen hatte erinnerte ich mich auch das da was von wegen Admin war. aber es ging ja der 1003 und 1007 nicht. Jetzt geht es aber. Das ist dann der Output:

net.b07z.sepia.sdk.services.uid1007.MqttDemo has been uploaded! (old triggers removed: 2)


Was ist ja aber jetzt noch nicht verstehe :-)
Wenn ich das Topic jetzt abonniere müsste sich doch im MQTT schon was tun oder? Z.b. Schalte Deckenlicht ein und ich die Bestätigung erhalte.
[EDIT]
Wenn ich jetzt aber nochmal was ändern will. Und neu hochlade, dann speichert er das nicht ab. (Im ersten Muster hatte ich die "falsche" IP genommen. Die Änderung hat er scheinbar dann nicht hochgeladen. Das erklärt auch warum im MQTT Broker nichts ankommt.
Kann ich das sonst auch löschen und neu hochladen?

[EDIT]
Scheinbar "frisst" er das nicht. Ich hab es der einfachheithalber als MQTTDemo wieder gespeichert. Vielleicht war das zu einfach gedacht. und wird von den Samples wieder überschrieben.

Ich hab es der einfachheithalber mal im MQTT.fx abonniert, um erstmal zu sehen ob überhaupt was ankommt.

Achso ja in den coresettings ist das sdk enabled. Aber wir du schon sagtest wäre vermutlich eine andere Fehlermeldung gekommen :-)

[EDIT]
Ich hab mal einen Screenshot gemacht, wenn ich mich nach dem Upload auslogge und wieder anmelde.
Erhalte ich quasi eine leere Auswahlbox. Müsste da mein Eintrag nicht auftauchen?


Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 09 Juni 2020, 23:10:25
Hallo Florian,

vielen Dank für Deinen Support.

ZitatDer kleine Zero hat leider zu wenig RAM für Server und Client, aber wenn du den Server auf einer anderen Maschine lauf lässt sollte der Zero als Client ganz gut laufen. Ich hatte so eine Konstruktion mit ReSpeaker 2Mic Hat mal eine Weile auf meinem Schreibtisch liegen über einen Micro:Bit via Bluetooth getriggert :-) (das Micro:Bit Skript ist auch im GitHub Repository mit dem SEPIA Installer zu finden).
Ja, auf dem Zero würde nur der Client laufen. Der Server ist mein alter Rpi 3. Auf dem läuft sonst nix - nur der Sepia-Server.
Dafür würde im Endausbau wahrscheinlich je Zimmer ein Zero samt Microphone notwendig werden.

ZitatDamit das ganze gut funktioniert bräuchte man noch eine Funktion im SEPIA Client, die irgendwie auf den Status reagiert, vielleicht den Input blockiert wenn das Presence-Signal noch nicht gesendet wurde o.ä.. Die radikalere Methode, die natürlich jetzt schon geht, wäre den SEPIA Client zu starten und zu stoppen auf Basis des Signals ^^.
SEPIA hat verschiedene Schnittstellen, die dafür gut geeignet sind. Ich kann das ja mal auf die Roadmap setzen :-)
Das war anders gemeint.
Das lepresence sollte einfach nur parallel zum Sepia laufen. Ich bräuchte keine eigene Schnittstelle, das Ganze ist für fhem.
Cool wäre es zwar, wenn Sepia wüßte wer in welchem Zimmer ist, aber ich glaube das ist zu komplex.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Juni 2020, 23:42:21
Zitat von: whistler am 09 Juni 2020, 22:29:37
Also 1 wäre du musst in die Version was einbauen. :-) Dann wäre es im Standard. :-) Nice.
4 wäre man kann sich selber was bauen wie das Node-Red Sample vom Github. Für die ungeduldigen unter uns :-)

Ja genau. Der Vorteil ist, dass ich CLEXI Plugins unabhängig vom SEPIA release pushen kann, das sollte sich also nicht so lange ziehen diesmal ^^.

Zitat von: whistler am 09 Juni 2020, 22:29:37
Wenn ich jetzt aber nochmal was ändern will. Und neu hochlade, dann speichert er das nicht ab. (Im ersten Muster hatte ich die "falsche" IP genommen. Die Änderung hat er scheinbar dann nicht hochgeladen. Das erklärt auch warum im MQTT Broker nichts ankommt.
Kann ich das sonst auch löschen und neu hochladen?
[...]
[EDIT]
Scheinbar "frisst" er das nicht. Ich hab es der einfachheithalber als MQTTDemo wieder gespeichert. Vielleicht war das zu einfach gedacht. und wird von den Samples wieder überschrieben.

Also das Prinzip ist, dass beim erneuten Hochladen die alten Daten überschrieben werden, wenn sich die Variable "CMD_NAME"" nicht ändert (hier z.B. String CMD_NAME = "mqtt").
Es gibt auch einen Server Endpoint um Services komplett zu löschen. Dummerweise ist der noch nicht im Control HUB eingebaut :o . Habs direkt mal (wieder) auf die To-Do Liste gesetzt ^^.

Zitat von: whistler am 09 Juni 2020, 22:29:37
[EDIT]
Ich hab mal einen Screenshot gemacht, wenn ich mich nach dem Upload auslogge und wieder anmelde.
Erhalte ich quasi eine leere Auswahlbox. Müsste da mein Eintrag nicht auftauchen?

Es ist leider momentan noch so, dass in der Auswahl nur Services auftauchen die im GitHub Repository liegen (nach Druck auf "Online Repo."), sprich es gibt zur Zeit keine Möglichkeit die Daten vom SEPIA Server zu laden. Die liegen da auch nur als Java Bytecode :-X . Ein Workaround ist den Service vom online Repo zu laden, zu bearbeiten und dann vorher mit dem (neuen) Button "Save File" auf der Festplatte zu speichern und beim nächsten mal von dort zu laden.

Die Verbindung zum MQTT Broker klappte jetzt noch nicht?

Zitat von: gestein am 09 Juni 2020, 23:10:25
Ja, auf dem Zero würde nur der Client laufen. Der Server ist mein alter Rpi 3. Auf dem läuft sonst nix - nur der Sepia-Server.
Dafür würde im Endausbau wahrscheinlich je Zimmer ein Zero samt Microphone notwendig werden.

Wenn du die Zeros eh hast mach das so. Ich hatte bei mir allerdings bisher immer das Gefühl, dass die Wifi Verbindung der Kleinen deutlich instabiler ist. Ich weiß nicht ob das an der integrierten Antenne/Hardware liegt oder ob das Gerät insgesamt Performance Probleme hat. Am Besten du setzt erstmal einen auf und lässt den testweise ein paar Tage laufen.

Zitat von: gestein am 09 Juni 2020, 23:10:25
Das war anders gemeint.
Das lepresence sollte einfach nur parallel zum Sepia laufen. Ich bräuchte keine eigene Schnittstelle, das Ganze ist für fhem.
Cool wäre es zwar, wenn Sepia wüßte wer in welchem Zimmer ist, aber ich glaube das ist zu komplex.

Ach so, haha. Naja die Idee wird jetzt wachsen in meinem Kopf ... wie bei Inception ;D

Bin raus für Heute, gute Nacht wünsche ich euch :-)
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 10 Juni 2020, 00:50:38
Zitat von: sepia am 09 Juni 2020, 23:42:21
Die Verbindung zum MQTT Broker klappte jetzt noch nicht?

Nein geht immer noch nicht, so dachte ich ja auch, und hab die Datei bearbeitet (IP adresse angepasst) und hochgeladen.
Leider wird beim schalten von Lampen / Geräten über den client oder so aber nicht per mqtt verschickt, bzw. kommt nichts an.
[EDIT]
Layer 8 wie man so schön sagt :-)
das kleine Zauberwort MQTT im Satz, dann läuft es auch. Mal sehen ob deine Demo dann auch irgendwo noch die Client Antwort versteckt. :-)


Gute Nacht :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 10 Juni 2020, 12:03:59
Hallo Florian,

ich hab jetzt nochmal ein wenig mit dem MQTTDemo gespielt.
Abschicken klappt jetzt sobald man dann natürlich auch mqtt an den Anfang oder Ende schreibt. (Das könnte man per Regex ja anpassen)

Aber ich ich fände das direkte MQTT "SEPIA's MQTT Connector" sehr interessant.
Das ist vermutlich noch ein Teil wo noch Doku fehlt oder?

Das würde dann vermutlich parallel zum schalten auch MQTT Meldungen verfassen und es wäre kein RAW Text mehr.
Dein MQTT Demo schlüsselt ja schon ziemlich viel auf, bis auf den eigentlichen Namen.

defmod ej3_MQTT_Sepia expandJSON MQTT_Sepia.*:.{.*} .*

Damit lässt sich zumindest bei vorhandenem MQTT Device der empfangene JSON String direkt in Readings zerlegen im Fhem.

Wenn du schon was "wenn auch unformatiertes" für Tester hast an Doku dann teste ich auch mal den anderen MQTT weg.

Vielen Dank und Klasse Arbeit.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 11 Juni 2020, 10:23:54
Zitat von: whistler am 10 Juni 2020, 12:03:59
ich hab jetzt nochmal ein wenig mit dem MQTTDemo gespielt.
Abschicken klappt jetzt sobald man dann natürlich auch mqtt an den Anfang oder Ende schreibt. (Das könnte man per Regex ja anpassen)

Hi Basti. Ja das "mqtt" Schlüsselwort war nötig in dem Demo, um es deutlich abzutrennen von SEPIA's bereits bekannten Smart Home Befehlen.

Zitat von: whistler am 10 Juni 2020, 12:03:59
Aber ich ich fände das direkte MQTT "SEPIA's MQTT Connector" sehr interessant.
Das ist vermutlich noch ein Teil wo noch Doku fehlt oder?

Das würde dann vermutlich parallel zum schalten auch MQTT Meldungen verfassen und es wäre kein RAW Text mehr.
Dein MQTT Demo schlüsselt ja schon ziemlich viel auf, bis auf den eigentlichen Namen.

Ja, an der Doku schreibe ich gerade ;-)
Der MQTT Connector funktioniert so, dass man in der Smart Home Sektion im SEPIA Control HUB selber Geräte erstellt und mit einem MQTT Topic/Channel verknüpft. SEPIA horcht dann auf diesem Kanal nach State Änderungen um das Device intern aktuell zu halten und published State Änderungen, die via SEPIA Client reinkommen in dem Topic als z.B. {"state": "70%"} für "Lampe auf 70%". Device type und room etc. werden durch den Topic Namen bestimmt.

Zitat von: whistler am 10 Juni 2020, 12:03:59
defmod ej3_MQTT_Sepia expandJSON MQTT_Sepia.*:.{.*} .*

Damit lässt sich zumindest bei vorhandenem MQTT Device der empfangene JSON String direkt in Readings zerlegen im Fhem.

Interessant. Ich hatte mich bisher noch nicht mit MQTT + FHEM beschäftigt, es ging immer eher um NodeRED, aber vielleicht sollte ich das mal nachholen  ;D

Zitat von: whistler am 10 Juni 2020, 12:03:59
Wenn du schon was "wenn auch unformatiertes" für Tester hast an Doku dann teste ich auch mal den anderen MQTT weg.

Die Smart Home Sektion in den Docs ist schon etwas gewachsen, wichtig ist der Teil "Internal HUB". Im Laufe des Tages sollte noch mehr dazu kommen, vielleicht auch schon der MQTT Teil ;-)
https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls#tutorial-sepia-internal-multi-hub
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 11 Juni 2020, 16:39:57
Die Anleitungen für die neue "Internal HUB" Funktion inklusive simultaner Nutzung von FHEM, openHAB, ioBroker und MQTT ist nun verfügbar  :)
https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls#tutorial-sepia-internal-multi-hub
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 11 Juni 2020, 16:56:09
Zitat von: sepia am 11 Juni 2020, 16:39:57
Die Anleitungen für die neue "Internal HUB" Funktion inklusive simultaner Nutzung von FHEM, openHAB, ioBroker und MQTT ist nun verfügbar  :)
https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls#tutorial-sepia-internal-multi-hub

Kommt ja genau richtig :)

Ich hab direkt ne Frage (leider). :-)

bisher hab ich ja fhem also HUB eingerichtet. Gedanklich, weil ich aus dem Schreiben nicht ganz schlau werde.
Ich stelle um auf Internal und hänge da Interface FHEM eine ebene tiefer wieder ein und dazu parallel dann MQTT?

Muss ich dann alles neu einstellen bzgl. Fhem oder liest er dann brav alles wieder wie gewohnt aus?

Danke dir. Vom Prinzip sieht die Doku auf den ersten Blick aber gut aus :-)
[EDIT]
Okay ich habs gerade einfach ausprobiert, zwei Interfaces angelegt MQTT und FHEM.
Jedes Device kann nur einem Interface zugeordnet werden. Richtig?

Damit muss ich die Devices zwischen FHEM und SEPIA händisch herstellen oder?
Sind damit die Attribute in fhem auch ungültig? sepia-room sepia-name ....?

Und der Raum und Type ist quasi nur für Sepia interessant und taucht nicht im payload von MQTT mit auf, sondern ist nur für Sepia interessant für die Ermittlung des Geräts bei der Spracheingabe.

und über das Topic im Node-Red Beispiel wird dann der Raum etc. gesteuert.
Das war deine Diskussion in dem angesprochenen Github Issue wo es darum ging oder per topic oder payload. :-)
Hattest du über ein Sowohl als auch nachgedacht? Vielleicht auf der ToDo Liste?
Ist vermutlich Ansichtssache das Payload zu parsen geht ja fast von alleine im fhem und man erhält entsprechende Readings.

Also ich glaube das "zusätzliche" ausgeben per MQTT um die TTS Ausgabe (an Sonos LMS) im Fhem zu lösen geht dann auf dem Weg nicht so direkt.
Und wird vermutlich nur über den Clexi gehen, wie von dir schon angedeutet.

Und mal einen vorsichtigen schönen Feiertag (da ja nur teilweise heute) ;-)

[EDIT2]
Zumindest der "Rollback" auf das reine FHEM Interface klappt ohne viel Mucken.


Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 11 Juni 2020, 17:35:34
Hallo Florian,

ich hab in dem Zuge nochmal etwas mit dem Satzbau rumgespielt.
sepia-name Deckenlicht
schalte das deckenlicht im wohnzimmer ein -> EIN OK
schalte deckenlicht im wohnzimmer aus -> AUS OK
schalte deckenlicht im wohnzimmer -> TOGGLE OK
schalte decken licht im wohnzimmer ein -> UPS
schalte decken licht im wohnzimmer aus -> UPS
schalte decken licht im wohnzimmer -> UPS

sepia-name Esstisch Licht
schalte das Esstisch Licht im wohnzimmer ein -> EIN OK
schalte Esstisch Licht im wohnzimmer aus -> AUS OK
schalte Esstisch Licht im wohnzimmer -> TOGGLE OK
schalte Esstischlicht im wohnzimmer ein -> UPS
schalte Esstischlicht im wohnzimmer aus -> UPS
schalte Esstischlicht im wohnzimmer -> UPS

sepia-name Esstisch Hintergrund Licht
schalte das Esstisch Hintergrund Licht im wohnzimmer ein -> EIN OK
schalte Esstisch Hintergrund Licht im wohnzimmer aus -> AUS OK
schalte Esstisch Hintergrund Licht im wohnzimmer -> TOGGLE OK
schalte Esstisch Hintergrundlicht im wohnzimmer ein -> UPS
schalte Esstisch Hintergrundlicht im wohnzimmer aus -> UPS
schalte Esstisch Hintergrundlicht im wohnzimmer -> UPS

sepia-type ist jeweils light.

Ich hab beim einsprechen per Sprache immer das genommen, was er aufgenommen hat, als im chat deswegen die Schreibweisen.
Ist dir das Thema bekannt oder hast du eine andere Idee wie man die Namen speicher sollte.

Die UPS Einträge sind immer dann wenn man in den chat reinschreibt und dann nicht genau darauf achtet mit den leerzeichen dazwischen wie er es vorher "aufgenommen" hat.

Ich hoffe das war verständlich genug erklärt soweit. :-)

Danke & Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 11 Juni 2020, 23:04:48
Zitat von: whistler am 11 Juni 2020, 16:56:09
Okay ich habs gerade einfach ausprobiert, zwei Interfaces angelegt MQTT und FHEM.
Jedes Device kann nur einem Interface zugeordnet werden. Richtig?

Jede "Device card" im SEPIA HUB kann nur ein Interface haben aber theoretisch kannst du das selbe Gerät auch über mehrere Interfaces steuern. Ich hatte zum testen z.B. mal meine Hue Lights über FHEM, openHAB und ioBroker laufen ^^.

Zitat von: whistler am 11 Juni 2020, 16:56:09
Damit muss ich die Devices zwischen FHEM und SEPIA händisch herstellen oder?
Sind damit die Attribute in fhem auch ungültig? sepia-room sepia-name ....?

Ja und ja, leider. Das war eine bewusste Entscheidung, denn die Alternative wäre, dass ständig von jedem HUB alle Geräte geladen werden, auch wenn diese z.B. als "hidden" markiert sind (und es war einfacher umzusetzen). Es ist jetzt so, dass z.B. von FHEM nur noch der "state" geladen wird quasi "on-demand". Der ganze Rest passiert innerhalb von SEPIA. Wenn man sehr viele Geräte hat ist das sicher ärgerlich, aber der Vorteil ist, dass z.B. die "Registrierung" des FHEM Interfaces in dem Fall nicht mehr nötig ist und alles deutlich effizienter läuft.
Vielleicht gibt es aber die Möglichkeit eine "import" Funktion zu bauen, da muss ich mal drüber nachdenken :)

Zitat von: whistler am 11 Juni 2020, 16:56:09
Und der Raum und Type ist quasi nur für Sepia interessant und taucht nicht im payload von MQTT mit auf, sondern ist nur für Sepia interessant für die Ermittlung des Geräts bei der Spracheingabe.

und über das Topic im Node-Red Beispiel wird dann der Raum etc. gesteuert.
Das war deine Diskussion in dem angesprochenen Github Issue wo es darum ging oder per topic oder payload. :-)

Ja genau.

Zitat von: whistler am 11 Juni 2020, 16:56:09
Hattest du über ein Sowohl als auch nachgedacht? Vielleicht auf der ToDo Liste?
Ist vermutlich Ansichtssache das Payload zu parsen geht ja fast von alleine im fhem und man erhält entsprechende Readings.

Meinst du als MQTT payload auch "room" und "type" etc. mit zu übergeben?
Die Idee kam mir schon in den Sinn, "deviceId" wäre eventuell auch nützlich, aber ich wollte erstmal abwarten ob es wirklich nötig ist bevor ich den payload overloade ;-)

Zitat von: whistler am 11 Juni 2020, 16:56:09
Also ich glaube das "zusätzliche" ausgeben per MQTT um die TTS Ausgabe (an Sonos LMS) im Fhem zu lösen geht dann auf dem Weg nicht so direkt.
Und wird vermutlich nur über den Clexi gehen, wie von dir schon angedeutet.

Ja genau, das sind eher 2 verschiedene Theme. Man könnte allerdings das Interface "missbrauchen" für gewisse Zwecke ^^. Ich spinne mal etwas rum, aber z.B. könnte man sich Geräte namens "Broadcaster 1, 2, 3 ..." erstellen, die als "Custom Config" (set commands) bestimmte MQTT Payloads haben wie '{ "enable" : "Good Morning", "disable" : "Good Night" }' und über die Teach UI dann sowas wie "Good Morning" mit dem Befehl "Switch on Broadcaster 1 device" überschreiben. Dann hätte man daraus einen speziellen MQTT Befehl gemacht den man irgendwo weiterverarbeiten kann. Ob das sinnvoll ist überlasse ich mal dem Leser ;-) (geht vermutlich noch einfacher mit einem eigenen Service).

Zitat von: whistler am 11 Juni 2020, 16:56:09
Zumindest der "Rollback" auf das reine FHEM Interface klappt ohne viel Mucken.

Hehe ja, da sollte es keine Probleme geben. Das "Internal" Interface ist komplett nichtinvasiv ;-)

Zitat von: whistler am 11 Juni 2020, 16:56:09
ich hab in dem Zuge nochmal etwas mit dem Satzbau rumgespielt.
sepia-name Deckenlicht
schalte das deckenlicht im wohnzimmer ein -> EIN OK
schalte deckenlicht im wohnzimmer aus -> AUS OK
schalte deckenlicht im wohnzimmer -> TOGGLE OK
...
...

Cool, danke für die Tests! Das gucke ich mir Morgen mal genauer an.

Gruß und schönen Abend,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Juni 2020, 03:08:29
Guten Morgen Florian,

ich hab glaubig noch was gefunden bzw. eine Frage.

Was ist das wenn der Sepia Client (Pseudo Headless Client) erst den Roten Ring hat also zum Empfang von Sprache und dann in einen Grauen dauerkreisenden Ring umspringt?

Mir war als hätte ich das schonmal gelesen. Auf einem Headless Client ja nicht so schön. Aktuell hängen die Geräte noch am HDMI bzw. VNC.
Aber eine Aktive Rückmeldung (ich weiss noch nicht wie) wäre natürlich Nice, das der Client nicht mehr Okay ist.
Quasi ein Healthy Status :-)

Achso in dem Moment ist auch bei Online im Header dein Blinken fürs Wakeword weg, weil vermutlich das Micro sich "aufgehängt" hat.

Okay per Remote Terminal kann man noch ein Reload machen. Dort ist der Status vom Client auch noch Okay.

Gute Nacht.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 12 Juni 2020, 17:51:07
Zitat von: whistler am 12 Juni 2020, 03:08:29
Was ist das wenn der Sepia Client (Pseudo Headless Client) erst den Roten Ring hat also zum Empfang von Sprache und dann in einen Grauen dauerkreisenden Ring umspringt?
[...]
eine Aktive Rückmeldung (ich weiss noch nicht wie) wäre natürlich Nice, das der Client nicht mehr Okay ist.
Quasi ein Healthy Status :-)
[...]
Okay per Remote Terminal kann man noch ein Reload machen. Dort ist der Status vom Client auch noch Okay.

Hi,

Wenn das Mikro grau ist heißt das es gab einen Fehler beim In oder Output . Das passiert z.B. gerne mal wenn man den Client ganz normal über den Browser lädt und keine Interaktion mit dem Interface hatte (sprich irgendwas angeklickt hat) bevor das Wake-Word angeht oder die Sprachausgabe triggert. Im RPi Client wird das verhindert durch ein Browser Flag, das dieses "Sicherheitsfeature" deaktiviert. Gelegentlich kann es auch passieren, dass es ein Verbindungsproblem gab während der Ein-/Ausgabe.
Wenn man Zugriff hat auf ein Display kann man den Fehler normalerweise durch einen Long-Press auf das Mikrofon beheben. Das führt zum Audio Reset.
Wenn das im "headless" Modus passiert ist es leider wirklich zur Zeit noch ein Problem. Wie du bemerkt hast hilft da nur ein Reload via remote terminal  :'( Ich überlege zur Zeit noch was man da am besten machen könnte. Vielleicht ein automatisches Neuladen der App nach einem Timeout, aber so dass irgendwie keine Endlosschleife entsteht  ???

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Juni 2020, 18:13:54
Zitat von: sepia am 12 Juni 2020, 17:51:07
Hi,

Wenn das Mikro grau ist heißt das es gab einen Fehler beim In oder Output . Das passiert z.B. gerne mal wenn man den Client ganz normal über den Browser lädt und keine Interaktion mit dem Interface hatte (sprich irgendwas angeklickt hat) bevor das Wake-Word angeht oder die Sprachausgabe triggert. Im RPi Client wird das verhindert durch ein Browser Flag, das dieses "Sicherheitsfeature" deaktiviert. Gelegentlich kann es auch passieren, dass es ein Verbindungsproblem gab während der Ein-/Ausgabe.
Wenn man Zugriff hat auf ein Display kann man den Fehler normalerweise durch einen Long-Press auf das Mikrofon beheben. Das führt zum Audio Reset.
Wenn das im "headless" Modus passiert ist es leider wirklich zur Zeit noch ein Problem. Wie du bemerkt hast hilft da nur ein Reload via remote terminal  :'( Ich überlege zur Zeit noch was man da am besten machen könnte. Vielleicht ein automatisches Neuladen der App nach einem Timeout, aber so dass irgendwie keine Endlosschleife entsteht  ???

Grüße

Nice wäre, wenn es irgendwo "mitgeschrieben" würde und man es zumindest im ersten Schritt mitbekommen würde :-)
Langfristig natürlich ein Reset oder sowas in der Art :-)
Aber ja ich hab da auch gerade keine Schlaue Idee.

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Juni 2020, 18:22:46
Zitat von: sepia am 11 Juni 2020, 23:04:48
Jede "Device card" im SEPIA HUB kann nur ein Interface haben aber theoretisch kannst du das selbe Gerät auch über mehrere Interfaces steuern. Ich hatte zum testen z.B. mal meine Hue Lights über FHEM, openHAB und ioBroker laufen ^^.

Na dann müsstest du die Lampe z.b. drei mal im Sepia anlegen mit jeweils einem Device richtig? in dem Fall dann wohl eher eins mit MQTT und allen dreien verarbeiten :-) Aber beim testen geht natürlich alles :-)

Zitat von: sepia am 11 Juni 2020, 23:04:48
Ja und ja, leider. Das war eine bewusste Entscheidung, denn die Alternative wäre, dass ständig von jedem HUB alle Geräte geladen werden, auch wenn diese z.B. als "hidden" markiert sind (und es war einfacher umzusetzen). Es ist jetzt so, dass z.B. von FHEM nur noch der "state" geladen wird quasi "on-demand". Der ganze Rest passiert innerhalb von SEPIA. Wenn man sehr viele Geräte hat ist das sicher ärgerlich, aber der Vorteil ist, dass z.B. die "Registrierung" des FHEM Interfaces in dem Fall nicht mehr nötig ist und alles deutlich effizienter läuft.
Vielleicht gibt es aber die Möglichkeit eine "import" Funktion zu bauen, da muss ich mal drüber nachdenken :)

Ja ist vermutlich einfacher die Entscheidung, wenn man nicht schon alles einmal eingerichtet hat und jetzt anfangen würde :-)
Zum Thema Import. Vielleicht kann man "auch wenn du das natürlich sicher ungern hast" direkt in der DB ansetzen :-) oder über die API.


Zitat von: sepia am 11 Juni 2020, 23:04:48
Meinst du als MQTT payload auch "room" und "type" etc. mit zu übergeben?
Die Idee kam mir schon in den Sinn, "deviceId" wäre eventuell auch nützlich, aber ich wollte erstmal abwarten ob es wirklich nötig ist bevor ich den payload overloade ;-)

Das wäre quasi nice ja, dann müsste man nur ein Topic abonnieren und kann die Logik im MQTT Endpunkt machen, wobei das in dem TTS Szenario ja nur die halbe Miete wäre, denn man will ja das was geschaltet wurde haben, oder aber man würde davon ausgehen, das was da ankommt, bereits erledigt ist.
Dann könnte man die deviceid room type etc wieder zu einem "TTS fähigem Satz" zusammenbauen und ausgeben.

Zitat von: sepia am 11 Juni 2020, 23:04:48
Ja genau, das sind eher 2 verschiedene Theme. Man könnte allerdings das Interface "missbrauchen" für gewisse Zwecke ^^. Ich spinne mal etwas rum, aber z.B. könnte man sich Geräte namens "Broadcaster 1, 2, 3 ..." erstellen, die als "Custom Config" (set commands) bestimmte MQTT Payloads haben wie '{ "enable" : "Good Morning", "disable" : "Good Night" }' und über die Teach UI dann sowas wie "Good Morning" mit dem Befehl "Switch on Broadcaster 1 device" überschreiben. Dann hätte man daraus einen speziellen MQTT Befehl gemacht den man irgendwo weiterverarbeiten kann. Ob das sinnvoll ist überlasse ich mal dem Leser ;-) (geht vermutlich noch einfacher mit einem eigenen Service).

Man verlagert damit quasi nur die Stellen wo man schrauben muss :-)

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 12 Juni 2020, 19:52:51
Zitat von: whistler am 12 Juni 2020, 18:13:54
Nice wäre, wenn es irgendwo "mitgeschrieben" würde und man es zumindest im ersten Schritt mitbekommen würde :-)

Ja, definitiv. Wenn man die LEDs des ReSpeaker integriert (oder beliebige LEDs, ich denke da wieder an eine CLEXI extension) könnte man es zumindest visualisieren, die events für "state":"loading" gibt es ja mittlerweile.

Zitat von: whistler am 12 Juni 2020, 18:13:54
Na dann müsstest du die Lampe z.b. drei mal im Sepia anlegen mit jeweils einem Device richtig? in dem Fall dann wohl eher eins mit MQTT und allen dreien verarbeiten :-) Aber beim testen geht natürlich alles :-)

Ja, ja und ja  ;D :P

Zitat von: whistler am 12 Juni 2020, 18:13:54
Zum Thema Import. Vielleicht kann man "auch wenn du das natürlich sicher ungern hast" direkt in der DB ansetzen :-) oder über die API.

Im Grunde sind die einzelnen Komponenten schon da, FHEM Device lesen, Custom Device schreiben. Ich frage mich gerade was eigentlich passieren würde wenn man erst im "FHEM Modus" ein Gerät liest, dann auf "Internal" Umschaltet und das Gerät einfach noch mal abspeichert ... vermutlich habe ich irgendwo nen reload drin der das verhindert ... aber vielleicht auch nicht :o haha

Zitat von: whistler am 12 Juni 2020, 18:13:54
Das wäre quasi nice ja, dann müsste man nur ein Topic abonnieren und kann die Logik im MQTT Endpunkt machen ...

Man arbeitet da quasi mit zwei verschiedenen Weltanschauungen ^^. Ich glaube das MQTT Grundprinzip ist eigentlich 1 Topic pro Device aber man ist natürlich schnell in der Grauzone. Im moment gehe ich davon aus, dass man mit dem Topic Namen alles abbilden kann außer die Informationen über den Client. Vermutlich will man irgendwann wissen von welchem Client die Daten kommen und das lässt sich nicht im Topic abbilden weil die Quelle ja immer der SEPIA Server ist. Ich warte erstmal ab wie sich das Thema entwickelt ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Juni 2020, 20:59:54
Zitat von: sepia am 12 Juni 2020, 19:52:51
Ja, definitiv. Wenn man die LEDs des ReSpeaker integriert (oder beliebige LEDs, ich denke da wieder an eine CLEXI extension) könnte man es zumindest visualisieren, die events für "state":"loading" gibt es ja mittlerweile.

Gib mir mal ein Tipp wo man die Daten am besten abgreifen kann vom Client? Die landen ja nur in der Remote Console am Server, wenn man sich dahin verbunden hat.

Der MQTTDemo Service bekommt davon nichts mit richtig? Kann der denn zumindest vielleicht "Durchlauferhitzer" spielen? Heisst. Er "horcht" mit was passiert und SEPIA schaltet aber trotzdem die FHEM Lampe (Ich nenn sie nun einfach mal so).
Oder macht er wie ich vermute einen Overlaod der Klasse und damit gibt es den Weg zurück zum schalten des Clients nicht?

Nach deiner Einschätzung würde ich mich sonst mal da durch graben.
Die schon mehrfach erwähnte Clexi extension gibts da was zum selber bauen? Also wo man ansetzen kann? :-)

Und ja ich verstehe das du jetzt erstmal die Rückmeldung abwarten willst mit der neuen Version :-)

Schönes Wochenende
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 12 Juni 2020, 21:54:38
Zitat von: whistler am 12 Juni 2020, 20:59:54
Gib mir mal ein Tipp wo man die Daten am besten abgreifen kann vom Client? Die landen ja nur in der Remote Console am Server, wenn man sich dahin verbunden hat.

Ja ich fürchte im Moment geht es nicht anders als mit einem WebSocket Client für CLEXI der die dann weiterleitet (bzw. dem CLEXI Plugin von dem ich schon mal sprach). Ich überlege gerade was man am Besten machen könnte ohne dass es für den User schon wieder eine neue "settings" Datei erfordert :-|

Zitat von: whistler am 12 Juni 2020, 20:59:54
Der MQTTDemo Service bekommt davon nichts mit richtig? Kann der denn zumindest vielleicht "Durchlauferhitzer" spielen? Heisst. Er "horcht" mit was passiert und SEPIA schaltet aber trotzdem die FHEM Lampe (Ich nenn sie nun einfach mal so).
Oder macht er wie ich vermute einen Overlaod der Klasse und damit gibt es den Weg zurück zum schalten des Clients nicht?

Theoretisch geht das, es gibt eine redirect Funktion für Services, d.h. Befehl empfangen, irgendwas machen (z.B. einen MQTT broadcast) und dann weiterleiten an den originalen Smart Home Service, aber um das sauber hinzukriegen müsste ich vermutlich einiges erklären und auch selber noch mal ausprobieren.

Zitat von: whistler am 12 Juni 2020, 20:59:54
Nach deiner Einschätzung würde ich mich sonst mal da durch graben.
Die schon mehrfach erwähnte Clexi extension gibts da was zum selber bauen? Also wo man ansetzen kann? :-)

Ja, ein bisschen ^^:
Im Grunde könnte man wahrscheinlich einfach den CLEXI Broadcaster hacken ^^:
https://github.com/bytemind-de/nodejs-client-extension-interface/blob/master/xtensions/clexi-broadcaster.js
Die Funtion "broadcast" schickt die Nachricht zum CLEXI Client (SEPIA remote terminal z.B.). Man könnte da einfach den MQTT Server einbinden oder irgendeine Aktion die auf den Message Inhalt reagiert. Das Ganze ist in Node.js geschrieben ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 12 Juni 2020, 22:46:54
Zitat von: sepia am 12 Juni 2020, 21:54:38
Ja ich fürchte im Moment geht es nicht anders als mit einem WebSocket Client für CLEXI der die dann weiterleitet (bzw. dem CLEXI Plugin von dem ich schon mal sprach). Ich überlege gerade was man am Besten machen könnte ohne dass es für den User schon wieder eine neue "settings" Datei erfordert :-|

Theoretisch geht das, es gibt eine redirect Funktion für Services, d.h. Befehl empfangen, irgendwas machen (z.B. einen MQTT broadcast) und dann weiterleiten an den originalen Smart Home Service, aber um das sauber hinzukriegen müsste ich vermutlich einiges erklären und auch selber noch mal ausprobieren.

Ja, ein bisschen ^^:
Im Grunde könnte man wahrscheinlich einfach den CLEXI Broadcaster hacken ^^:
https://github.com/bytemind-de/nodejs-client-extension-interface/blob/master/xtensions/clexi-broadcaster.js
Die Funtion "broadcast" schickt die Nachricht zum CLEXI Client (SEPIA remote terminal z.B.). Man könnte da einfach den MQTT Server einbinden oder irgendeine Aktion die auf den Message Inhalt reagiert. Das Ganze ist in Node.js geschrieben ;-)

oder den MQTTDemo Service "Hacken", wenn du erlaubst, den Devicename hattest du freundlicherweise im Demo eingebaut nur auskommentiert. :-)
Evtl. würde er auch nicht "Absender" Client an der Stelle preis geben.


info.setCustomTriggerRegX("^(mqtt2)\\b.*|.*\\b(mqtt2)$", EN);
info.setCustomTriggerRegX("^(mqtt2)\\b.*|.*\\b(mqtt2)$", DE);
info.setCustomTriggerRegXscoreBoost(10); //boost service to increase priority over similar ones


Ich tippe mal hier wird die Entscheidung getroffen. (bin leider jetzt kein Java Spezi)
ich hatte das testweise auf "mqtt2" umgestellt um das zu testen.
Irgendwo weiter unten biegt er dann ab nehme ich an, wenn das regex greift oder nicht.
Kann es sei den das es mit "RegXscroeBoost" zusammen hängt? :-)
[EDIT] ja wenn man die Zeile rausnimmt geht er dran vorbei. :-)

Ansonsten mach ich das wie immer Code kürzen und gucken was passiert. viel kaputt machen kann da ja erstmal nicht :-)

Randfrage zur Python-Bridge:
Würde dir auch die Daten abfangen und "umleiten" und das eigentlich kommando würde dort ebenfalls nicht ankommen?

Aktueller Stand:
Den Text der im Payload vom MQTT Demo ankommt lässt sich automatisch in Readings runterbrechen (Hatte ich weiter vorher schonmal erwähnt).
Ich hab das Payload noch um den Devicenamen erweitert (hattest du wie erwähnt schon auskommentiert drin.
Aktuell natürlich noch alles quick und dirty. Ich könnte ihn auch direkt darüber schalten lassen und eine Rückmeldung geben. :-)

Perhaps a Bug:
Was mir aufgefallen ist beim scrollen (es fällt der Scrollbalken im Code Block zum runterscrollen. Wenn man einmal STRG + F im Firefox drückt um die Browsersuche anzuschalten wird er eingeblendet.

Noch eine Performance Frage. Vermutlich in die Richtung wo du drauf angespielt hast. Es dauert so 2-3 Sekunden bis der Befehl dann im Fhem angekommen ist, und die Meldung im Sepia Client zurück kommt.

Wenn ich das MQTT Demo laufen lasse, kommt die Meldung sofort, vermutlich liegt es daran da er ja auf keine Rückmeldung wartet.

Customizing ist was feines :-) Nur Java ... :-) (Aber ja ich kann mir die Gründe dazu denken) :-)

[EDIT]
Ich hab da noch was anderes gefunden:
https://github.com/SEPIA-Framework/sepia-python-bridge/blob/master/README.md

Der Abschlusssatz klingt doch genau nachdem was hier gebraucht wird, also der Einspringpunkt, wenn ich das nicht völlig falsch verstanden habe :-)
Zitattoo keep most of SEPIA's default functions intact ;-) .
Aber mit der eintrag in der config :-)


Vielen Dank :-)
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 13 Juni 2020, 11:17:23
Zitat von: whistler am 12 Juni 2020, 22:46:54
oder den MQTTDemo Service "Hacken", wenn du erlaubst, den Devicename hattest du freundlicherweise im Demo eingebaut nur auskommentiert. :-)

Erlaubt ist alles ;-)
Aber wollten wir nicht den Mikrofon Zustand? Den kriegst du nur von den App Events.
Also:
- Details über den ausgeführten Befehl und das NLU Ergebnis: SEPIA Server
- Details über die App Events (listening, loading, speaking): SEPIA Client

Zitat von: whistler am 12 Juni 2020, 22:46:54
[...]
Irgendwo weiter unten biegt er dann ab nehme ich an, wenn das regex greift oder nicht.
Kann es sei den das es mit "RegXscroreBoost" zusammen hängt? :-)
[EDIT] ja wenn man die Zeile rausnimmt geht er dran vorbei. :-)

Für die regular expressions ist das Modul 'getKeywordAnalyzerResult' in der NLU-Chain zuständig. Das funktioniert so:
- Erst werden alle regular expressions durchlaufen und geguckt welche davon greifen. Hier im Beispiel wären das dann alle Sätze die mit "mqtt2" anfangen oder enden.
- Für alle Services, die eine passende RegExp hatten werden dann die Parameter geprüft (device type, room, etc. in diesem Fall)
- Da sich der Smart Home Service und der MqttDemo ziemlich ähnlich sind ist die Wahrscheinlichkeit groß, dass beide gültige Treffer erzielen, deshalb wird dann für beide eine "score" berechnet, die mit dem "setCustomTriggerRegXscoreBoost" künstlich "geboosted" werden kann. 10 ist in dem Beispiel schon ziemlich hoch, weshalb es fast sicher ist, dass der Service dann am Ende gewinnt

Zitat von: whistler am 12 Juni 2020, 22:46:54
Randfrage zur Python-Bridge:
Würde dir auch die Daten abfangen und "umleiten" und das eigentlich kommando würde dort ebenfalls nicht ankommen?

Im Grunde ja nur das Problem ist, dass die Daten die du haben willst zu dem Zeitpunkt noch nicht existieren. Konkret heißt das entweder du gehst in das Python-Bridge Modul ohne die Infos zu haben (wenn es in der NLU-Chain vor 'getKeywordAnalyzerResult' kommt) oder du kommst nicht rein weil der Keyword-Analyzer schon ein Ergebnis gefunden hat.
Der sinnvollste Ort für einen MQTT publish wäre demnach direkt am Ende der NLU-Chain und vor dem Service "getResult".
Das ist eigentlich genau der Punkt, an dem der SEPIA "/understand" Endpoint sein Ergebnis ausspuckt (siehe 'Assistant Testing' Seite im Control HUB).

Zitat von: whistler am 12 Juni 2020, 22:46:54
Aktueller Stand:
Den Text der im Payload vom MQTT Demo ankommt lässt sich automatisch in Readings runterbrechen (Hatte ich weiter vorher schonmal erwähnt).
Ich hab das Payload noch um den Devicenamen erweitert (hattest du wie erwähnt schon auskommentiert drin.
Aktuell natürlich noch alles quick und dirty. Ich könnte ihn auch direkt darüber schalten lassen und eine Rückmeldung geben. :-)

Das heißt wenn du diese Funktion (NLU -> MQTT) brauchst fängst du deinen Satz einfach mit "mqtt ..." an bzw. endest mit "... via mqtt"? Oder hast du noch an der regular expression gewerkelt? :-)

Zitat von: whistler am 12 Juni 2020, 22:46:54
Perhaps a Bug:
Was mir aufgefallen ist beim scrollen (es fällt der Scrollbalken im Code Block zum runterscrollen. Wenn man einmal STRG + F im Firefox drückt um die Browsersuche anzuschalten wird er eingeblendet.

??? Browser machen mich wahnsinnig manchmal. Zum Glück ist wenigstens der IE11 mittlerweile fast komplett ausgestorben ^^.

Zitat von: whistler am 12 Juni 2020, 22:46:54
Noch eine Performance Frage. Vermutlich in die Richtung wo du drauf angespielt hast. Es dauert so 2-3 Sekunden bis der Befehl dann im Fhem angekommen ist, und die Meldung im Sepia Client zurück kommt.

Wenn ich das MQTT Demo laufen lasse, kommt die Meldung sofort, vermutlich liegt es daran da er ja auf keine Rückmeldung wartet.

Ja genau. Ich denke die 2-3 Sekunden extra kommen von dem ping-pong SEPIA -> FHEM -> SEPIA. Ist das ein RPi der im Wifi hängt?

Zitat von: whistler am 12 Juni 2020, 22:46:54
Customizing ist was feines :-) Nur Java ... :-)

Hehe, ja die Entscheidung ist vor vielen Monden gefallen im SEPIA Urvater ILA ;D ... ich habs eigentlich nie bereut, denn Java macht den Code extrem gut wartbar und ich musste über die Jahre einiges komplett aufbrechen und dann wieder flicken ^^. Es konnte ja keiner ahnen, dass ein paar Jahre später alle nur noch auf dem Python Hype-Zug sitzen :-p ... deswegen gibts auch die "Python Bridge" ^^, aber das ist noch ziemlich low-level von der Integration.

Welche Programmiersprache würdest du am liebsten nutzen?

Zitat von: whistler am 12 Juni 2020, 22:46:54
[EDIT]
Ich hab da noch was anderes gefunden:
https://github.com/SEPIA-Framework/sepia-python-bridge/blob/master/README.md
[...]

Siehe Kommentar zur Python-Bridge weiter oben ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Juni 2020, 13:30:43
Zitat von: sepia am 13 Juni 2020, 11:17:23
Erlaubt ist alles ;-)
Aber wollten wir nicht den Mikrofon Zustand? Den kriegst du nur von den App Events.
Also:
- Details über den ausgeführten Befehl und das NLU Ergebnis: SEPIA Server
- Details über die App Events (listening, loading, speaking): SEPIA Client

Wir sind ja bei zwei Sachen jetzt, erstmal das was ich selber machen kann. Dachte ich :-) also am Server.
Nicer wäre dann natürlich am Client. Oder generell vielleicht über den Server den Status abfragen welche Clients sind überhaupt da.

Zitat von: sepia am 13 Juni 2020, 11:17:23
Für die regular expressions ist das Modul 'getKeywordAnalyzerResult' in der NLU-Chain zuständig. Das funktioniert so:
- Erst werden alle regular expressions durchlaufen und geguckt welche davon greifen. Hier im Beispiel wären das dann alle Sätze die mit "mqtt2" anfangen oder enden.
- Für alle Services, die eine passende RegExp hatten werden dann die Parameter geprüft (device type, room, etc. in diesem Fall)
- Da sich der Smart Home Service und der MqttDemo ziemlich ähnlich sind ist die Wahrscheinlichkeit groß, dass beide gültige Treffer erzielen, deshalb wird dann für beide eine "score" berechnet, die mit dem "setCustomTriggerRegXscoreBoost" künstlich "geboosted" werden kann. 10 ist in dem Beispiel schon ziemlich hoch, weshalb es fast sicher ist, dass der Service dann am Ende gewinnt

Dann hab ich das System ja gestern schon richtig verstanden und komme im Code nur nicht an den Punkt, wo ich beide Gewinnen lassen kann.
Das er quasi den SmartHome Service und den MQTT Demo nacheinander laufen lässt.
Ich war sogar fast kurz davor mal Github den Code zu laden und offline nach den Stichwörtern zu suchen.
Das hatte ich zwar auch mal online direkt im repository hinbekommen, aber das geht nicht mehr (Keine Ahnung warum ist auch nicht schlimm).

Zitat von: sepia am 13 Juni 2020, 11:17:23
Im Grunde ja nur das Problem ist, dass die Daten die du haben willst zu dem Zeitpunkt noch nicht existieren. Konkret heißt das entweder du gehst in das Python-Bridge Modul ohne die Infos zu haben (wenn es in der NLU-Chain vor 'getKeywordAnalyzerResult' kommt) oder du kommst nicht rein weil der Keyword-Analyzer schon ein Ergebnis gefunden hat.
Der sinnvollste Ort für einen MQTT publish wäre demnach direkt am Ende der NLU-Chain und vor dem Service "getResult".
Das ist eigentlich genau der Punkt, an dem der SEPIA "/understand" Endpoint sein Ergebnis ausspuckt (siehe 'Assistant Testing' Seite im Control HUB).

Das heißt wenn du diese Funktion (NLU -> MQTT) brauchst fängst du deinen Satz einfach mit "mqtt ..." an bzw. endest mit "... via mqtt"? Oder hast du noch an der regular expression gewerkelt? :-)

To use the Python bridge with your SEPIA-Home installation open the properties file of your SEPIA assist server (usually found at ~/SEPIA/sepia-assist-server/Xtensions/assist.custom.properties) or use the Control-HUB to modify the line that starts with: nlu_interpretation_chain=.... This line represents the NLU interpretation chain of SEPIA. Each entry is one 'step' of the chain and steps are executed from left to right until the best NLU result is found.
If you're running the Python bridge server on the same machine as SEPIA-Home you can add it to the chain like this: ...,WEB:http\://127.0.0.1\:20731/nlu/get_nlu_result,.... Where you put it exactly is up to you but I'd recommend to place it between getPublicDbSentenceMatch (the step that takes care of custom commands defined via the Teach-UI) and getKeywordAnalyzerResult (the most flexible NLU step) too keep most of SEPIA's default functions intact ;-) .


Deswegen hatte ich mich ja über diesen Punkt Gestern Abend oder Heute Morgen gefreut, das beschreibt ja auch was du nochmal wiederholt hast, nur das ich die Einstellung bei mir nicht finden kann :-)
Also entweder noch nicht vorhanden oder schon wieder weg :-) Oder aber ich blind. :-)


Zitat von: sepia am 13 Juni 2020, 11:17:23
??? Browser machen mich wahnsinnig manchmal. Zum Glück ist wenigstens der IE11 mittlerweile fast komplett ausgestorben ^^.

Kenn ich :-) aber ich wollte es nur mitgeteilt haben. :-)

Zitat von: sepia am 13 Juni 2020, 11:17:23
Ja genau. Ich denke die 2-3 Sekunden extra kommen von dem ping-pong SEPIA -> FHEM -> SEPIA. Ist das ein RPi der im Wifi hängt?

Das war in dem Falle die Sepia App auf dem Handy und ja wifi, wobei ich mir gedacht habe soviele daten werden doch da nicht geschoben, und den text hatte ich geschrieben nicht eingesprochen :-) Ich hab mal nen Screenshot von nem Pi3 mit LAN Anbindung angehängt das sollte sogar der 3+ sein.
Vor dem Pi hab ich einmal per app an handy schalten lassen quasi die Deckenlampe an. (13:17:37 -> 13:17:56 Uhr)
Ich hab schon öfter gedacht hmmm was macht der da :-)

Und nochmal zur Klärung der Server läuft auf einer VM also kein PI sondern echte Hardware glaube 2 Kerne und 4 GB Ram. :-)

Zitat von: sepia am 13 Juni 2020, 11:17:23
Hehe, ja die Entscheidung ist vor vielen Monden gefallen im SEPIA Urvater ILA ;D ... ich habs eigentlich nie bereut, denn Java macht den Code extrem gut wartbar und ich musste über die Jahre einiges komplett aufbrechen und dann wieder flicken ^^. Es konnte ja keiner ahnen, dass ein paar Jahre später alle nur noch auf dem Python Hype-Zug sitzen :-p ... deswegen gibts auch die "Python Bridge" ^^, aber das ist noch ziemlich low-level von der Integration.

Welche Programmiersprache würdest du am liebsten nutzen?

Siehe Kommentar zur Python-Bridge weiter oben ;-)

Naja letztendlich ist es ja egal. ob Java oder Python oder whatever.
Also Programmieren eher in VB/VBA/VBScript/ASP/HTML/Javascript.
Regex hab ich irgendwann mit angefangen weil das halt im Fhem und sicher auch anderen super praktisch ist aber du weisst ja selber wie mächtig und hilfreich das sein kann.
node.js kenn ich wird ja auch immer mehr, hab ich aber nie selber mit angefangen. Wäre vermutlich ein einarbeiten.
Perl wegen Fhem :-) Php mag ich nicht so :-)
Powershell batch :-)
und python meistens da wo es mal schnell sein muss
mqtt das mittel der wahl um daten von a nach b zu schieben :-)

Du merkst da ist kein C/C++ in der Liste daher bin ich nie Tief abgetaucht in die Zeiger und Klassenwelt. Klar bekommt nam das hin aber weit weg.
und ja wenn man ne Android App programmiert gehts auch nicht ohne Java, wenns Nativ sein soll.

Also zurück zum Thema :-) da ich den Score vermutlich nicht so beeinflussen kann das der Smarthome und MQTTDemo Service parallel die Dinge durchlaufen, wäre die Frage ob der Einspringpunkt aus deiner Readme per nlu Zurück in die Zukunft oder so ähnlich?
Sprich ob ich was übersehen habe, oder es das tatsächlich bei mir nicht gibt.

Es gibt halt immer einen Unterschied muss ich auf ne neue Version warten, oder kann ich es selber einbauen. :-)
Wobei du ja schon einige Ideen in den Standard übernommen hast. ;-) Was vielleicht dem einen oder anderen ja auch helfen könnte dann bei ähnlichen Ideen. :-)

Vielen Dank für deine Antwort
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Juni 2020, 14:06:14
Zitat von: sepia am 12 Juni 2020, 21:54:38
Ja, ein bisschen ^^:
Im Grunde könnte man wahrscheinlich einfach den CLEXI Broadcaster hacken ^^:
https://github.com/bytemind-de/nodejs-client-extension-interface/blob/master/xtensions/clexi-broadcaster.js
Die Funtion "broadcast" schickt die Nachricht zum CLEXI Client (SEPIA remote terminal z.B.). Man könnte da einfach den MQTT Server einbinden oder irgendeine Aktion die auf den Message Inhalt reagiert. Das Ganze ist in Node.js geschrieben ;-)

Damit es nicht zu unübersichtlich wird. Ich versuch glaubig das mal. ob ich das per mqtt weitergeleitet bekomme :-)
Ich hab da schon eine Idee, und in der Console taucht es schon im clexi log auf :-)

[EDIT]
Da es ja nur bei mir läuft kann ich ja mit Fehlerroutinen gut ungehen :-) Ist halt nur noch nicht Update sicher :-)
meintest du mit Clexi-Extension das man eine echte Extension einbauen kann? :-)

Also aktueller Stand ist, das ich dachte ich wäre fertig :-) Aber mein Gedanke in den Settings den Voice Output auszuschalten sorgt dafür das er gar nicht mehr generiert wird, sondern nur noch der Text im Chat erzeugt wird, was am dann am Server nicht ankommt, bzw. kein Broadcast mehr erzeugt.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 13 Juni 2020, 15:53:54
Hallo zusammen,

ich hab mal einen ersten Entwurf erstellt, wie man die TTS Ausgabe per MQTT vom Client umleiten kann auf sein TTS System.

Ich hab das ganze versucht möglichst einfach zu halten und eine kurze Schritt für Schritt Anleitung als PDF angehängt.

Viel Spass damit und gerne Feedback. :-)

[EDIT]
Der Workaround für den Doppelten Sound bei der Ausgabe geht nur bedingt, denn durch das Client muten fehlt auch der coin bei der Ausgabe :-)

Schönes Wochenende.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Juni 2020, 01:27:37
Ich fürchte wir haben jetzt zu viele Punkte parallel diskutiert ::) Ich versuche mal es etwas zu reduzieren, Falls ich was wichtiges übersehen habe frag einfach noch mal ;) .

Zitat von: whistler am 13 Juni 2020, 13:30:43
Dann hab ich das System ja gestern schon richtig verstanden und komme im Code nur nicht an den Punkt, wo ich beide Gewinnen lassen kann.

Es kann nur einer gewinnen. Bei der gleichen "score" gewinnt der, der als erstes da war ;-)
Ich frage mich langsam ob der WebSocket Chat-Server nicht eigentlich der Punkt ist wo man ansetzen sollte. Der könnte vielleicht beim broadcast zum SEPIA Client die Nachricht zusätzlich zu einem MQTT Broker schicken. Das passt auch thematisch irgendwie besser als irgendwelche Hacks imr Assist-Server.

Zitat von: whistler am 13 Juni 2020, 13:30:43
Das war in dem Falle die Sepia App auf dem Handy und ja wifi, wobei ich mir gedacht habe soviele daten werden doch da nicht geschoben, und den text hatte ich geschrieben nicht eingesprochen :-) Ich hab mal nen Screenshot von nem Pi3 mit LAN Anbindung angehängt das sollte sogar der 3+ sein.
Vor dem Pi hab ich einmal per app an handy schalten lassen quasi die Deckenlampe an. (13:17:37 -> 13:17:56 Uhr)
Ich hab schon öfter gedacht hmmm was macht der da :-)

Das ist definitiv zu lang und darf höchstens bei den erstem 1-2 requests passieren wenn sich der Server noch "warm" läuft. Ich würde als erstes mal den Server neustarten. Eventuell lohnt es sich auch im Control HUB auf der "Server Connections" Seite mal die Statistiken des Assist-Servers abzurufen. Seit v2.5.0 bröselt der auch noch besser auf welche Services und API calls wie viel Zeit im Schnitt benötigen.
Wifi am Client war bei mir eigentlich nie ein Problem aber Wifi am Server sollte man vermeiden, nicht so sehr wegen der Datenmengen (die sind klein) sondern eher weil Wifi gerne mal Mikro-Aussetzer hat :-|

Zitat von: whistler am 13 Juni 2020, 13:30:43
Also Programmieren eher in VB/VBA/VBScript/ASP/HTML/Javascript. [...]

Javascript reicht für CLEXI :-) und ich hab auch schon ein paar mal versucht das irgendwie ins SDK zu integrieren, da habe ich aber noch keine gute Lösung gefunden bisher.
C++ packe ich auch nicht an übrigens :-p

Zitat von: whistler am 13 Juni 2020, 13:30:43
meintest du mit Clexi-Extension das man eine echte Extension einbauen kann?

Ursprünglich ja, aber nachdem ich in den Code geguckt habe denke ich das passt besser in die vorhandene Broadcaster Extension.

Zitat von: whistler am 13 Juni 2020, 13:30:43
ich hab mal einen ersten Entwurf erstellt, wie man die TTS Ausgabe per MQTT vom Client umleiten kann auf sein TTS System.
Ich hab das ganze versucht möglichst einfach zu halten und eine kurze Schritt für Schritt Anleitung als PDF angehängt.

Cool, gucke ich mir Morgen sofort an!

Grüße und gute Nacht :-)

[EDIT]
Ok ich war zu neugierig und hab doch direkt reingeguckt.
Auf den ersten Blick sieht das eigentlich genau so aus wie ich mir das vorgestellt hatte :-D , nice!
Ich überlege Morgen mal was man wegen der Sprachausgabe noch machen könnte.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Juni 2020, 16:12:30
Zitat von: sepia am 14 Juni 2020, 01:27:37
Ich fürchte wir haben jetzt zu viele Punkte parallel diskutiert ::) Ich versuche mal es etwas zu reduzieren, Falls ich was wichtiges übersehen habe frag einfach noch mal ;) .

Es kann nur einer gewinnen. Bei der gleichen "score" gewinnt der, der als erstes da war ;-)
Ich frage mich langsam ob der WebSocket Chat-Server nicht eigentlich der Punkt ist wo man ansetzen sollte. Der könnte vielleicht beim broadcast zum SEPIA Client die Nachricht zusätzlich zu einem MQTT Broker schicken. Das passt auch thematisch irgendwie besser als irgendwelche Hacks imr Assist-Server.

Javascript reicht für CLEXI :-) und ich hab auch schon ein paar mal versucht das irgendwie ins SDK zu integrieren, da habe ich aber noch keine gute Lösung gefunden bisher.
C++ packe ich auch nicht an übrigens :-p

Ursprünglich ja, aber nachdem ich in den Code geguckt habe denke ich das passt besser in die vorhandene Broadcaster Extension.

Cool, gucke ich mir Morgen sofort an!

Grüße und gute Nacht :-)

[EDIT]
Ok ich war zu neugierig und hab doch direkt reingeguckt.
Auf den ersten Blick sieht das eigentlich genau so aus wie ich mir das vorgestellt hatte :-D , nice!
Ich überlege Morgen mal was man wegen der Sprachausgabe noch machen könnte.

Deswegen hatte ich einen frischen Beitrag geschrieben, weil es mir auch zu unübersichtlich wurde genau. :-)

Java geht aber auch in Richtung Klassen etc. :-) da muss man sich dann immer erst wieder reindenken, wenn man das schon länger nicht genutzt hat.
Aber vielleicht ist bei dem MQTTDemo auch eher das Problem, das einen in dem Moment der Rest fehlt (also da wo die Aufrufe der Klassen stattfinden) um das Puzzle vom Code zusammenzufügen.

Aber das Thema ist ja erstmal durch und geschlossen. :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Juni 2020, 16:15:32
Zitat von: sepia am 14 Juni 2020, 01:27:37
Ursprünglich ja, aber nachdem ich in den Code geguckt habe denke ich das passt besser in die vorhandene Broadcaster Extension.

Cool, gucke ich mir Morgen sofort an!

Grüße und gute Nacht :-)

[EDIT]
Ok ich war zu neugierig und hab doch direkt reingeguckt.
Auf den ersten Blick sieht das eigentlich genau so aus wie ich mir das vorgestellt hatte :-D , nice!
Ich überlege Morgen mal was man wegen der Sprachausgabe noch machen könnte.

Ich habe wegen der Sprachausgabe noch ein wenig gespielt und ein zweites Notify gebaut, was sich um das "Mic" kümmert.
Hiermit wird sogar über listening Readings pro client (1/0) der Status Mic an aus "visualisiert".
Zusätzlich gibt es dann den "coin" direkt über das TTS mit aus, etwas verzögert, weil das Mic dann schon an ist, aber noch im Rahmen denke ich.

Ich hab auch mal die zusätzlichen sub Funktionen zumindest als "Dummy" eingehängt damit der Code durchläuft.

[EDIT]
Ein offener Todo in V1 und auch in V2 wäre noch die Readings wieder in einen definierte Status zurück zu setzen, da zu verschiedenen Action verschieden Readings bedingt durch den Aufbau der json Struktur. Ich hab schon überlegt jeweils bei den zwei notify einmal die Readings zu löschen oder zu leeren. Wobei ich eher zum leeren tendiere. Aber leer geht glaubig nicht, also ein - z.b. dann würde aber wieder das entgegengesetze notify triggern.

Allen ein schönen Sonntag und Viel Spass damit
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 14 Juni 2020, 16:27:01
Zitat von: sepia am 14 Juni 2020, 01:27:37
Das ist definitiv zu lang und darf höchstens bei den erstem 1-2 requests passieren wenn sich der Server noch "warm" läuft. Ich würde als erstes mal den Server neustarten. Eventuell lohnt es sich auch im Control HUB auf der "Server Connections" Seite mal die Statistiken des Assist-Servers abzurufen. Seit v2.5.0 bröselt der auch noch besser auf welche Services und API calls wie viel Zeit im Schnitt benötigen.
Wifi am Client war bei mir eigentlich nie ein Problem aber Wifi am Server sollte man vermeiden, nicht so sehr wegen der Datenmengen (die sind klein) sondern eher weil Wifi gerne mal Mikro-Aussetzer hat :-|

Also die Sepia VM hab ich mir gerade mal angeschaut, (Rückblick auf die letzte Stunde wo ich ja beim testen auch fleissig geschaltet habe. Idle unter 5% in allen Richtungen. Daran sollte es also nicht liegen.

Ich hab mal einen Report gezogen (Anhang) von der Statistic und hätte die bitte ob du ein drüber fliegst was die an "ungewöhnlich hohen werten" vorkommt.

Der MQTTDemo Service sollte das ja nicht beeinflussen, weil er seinen Standardweg nimmt. Zumal mir dieses Verhalten ja auch schon vorher aufgefallen ist bevor ich da angesetzt habe.

Vielen Dank fürs drüber schauen.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 16 Juni 2020, 23:56:35
Zitat von: whistler am 14 Juni 2020, 16:27:01
Also die Sepia VM hab ich mir gerade mal angeschaut, (Rückblick auf die letzte Stunde wo ich ja beim testen auch fleissig geschaltet habe. Idle unter 5% in allen Richtungen. Daran sollte es also nicht liegen.

Ich hab mal einen Report gezogen (Anhang) von der Statistic und hätte die bitte ob du ein drüber fliegst was die an "ungewöhnlich hohen werten" vorkommt.

Hi Basti,

sorry hab gerade nicht so viel Zeit, aber gucke mir die CLEXI PDF eventuell Morgen oder spätestens am Wochenende an :)

Die Server Stats sehen eigentlich solide aus, alles im grünen Bereich, lediglich drei Sachen fallen mir auf:

"API poss. errors (>2s): 34"

34 API Calls die länger als 2s gedauert haben (deswegen als "possible" errors deklariert). Das muss nichts heißen, manche APIs wie das Wetter etc. können sich schon mal etwas Zeit nehmen und >2s kann ja auch 2.1s sein ^^, aber da sollte man mal ein Auge drauf haben. Eventuell sollte ich die API calls noch weiter aufbröseln damit man genauer sieht ob es das Wetter ist oder was anderes.

"TTS Time: 956.0454545454545ms (84132ms)"

Auch das ist jetzt nicht ungewöhnlich zumal es erst relevant wird nachdem der Befehl schon ausgeführt wurde und es auch stark auf die durchschnittliche Länge der Sätze ankommt, aber da könnte man eventuell noch 500ms rausholen durch Ändern der Engine. Ist das die MaryTTS engine?

DB poss. errors (>2s): 8

8 von 587 >2s ist kaum relevant, aber ich frage mich auch hier welche Calls das wohl waren. Vielleicht war die Elasticsearch mal kurz am stottern.

Alles in Allem sehe ich nichts, was die Zeit insgesamt über 3-4s drücken sollte. Vor allem die FHEM Calls sind super schnell (370ms im Schnitt).
Was du mal machen könntest ist den SEPIA Server neu starten damit alle Statistiken auf 0 sind und dann konkret nur die Befehle ausführen, die länger dauern. Direkt danach dann wieder auf die Statistiken gucken ob es Ausreißer gibt. Dabei würde ich dem Server 3-4 Calls geben zum warm werden, aber danach sollte es zügig gehen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 17 Juni 2020, 11:08:49
Hallo,
erst einmal vielen Dank für die neue Version. Ich habe noch ein paar Verständnisfragen/ Probleme und hoffe, mir kann jemand weiterhelfen.
Ich benutze den ioBroker. Was habe ich bisher geschafft: Der Server läuft wohl und ich konnte eine Verbindung zum IoBroker herstellen. Der Test mit dem Drücken "Toogle" funktioniert.
Jetzt fangen aber meine Probleme/ Fragen an:

1. Über den Test kann ich die Lampe nur "ausschalten", aber nicht "anschalten", obwohl ich den Befehl in der "custom config" angegeben habe (s. Anhang 1). Muss ich für jeden Befehl immer wieder eine neue Karte erstellen? Wie sieht es mit dimmen aus? Wie müssen dann die Werte dort reingeschrieben werden?

2. Iobroker-Verbindung: dort gibt es die Möglichkeit der Verschlüsselung (HTTPS). Wenn ich das Einstelle, wie genau muss ich im Interface dies einstellen? Dort steht username:password --> Muss ich genau so dies eingeben oder muss ich aus dem username und passwort des ioBrokers eine Buchstaben/Zahlenkombination generieren lassen und wie geht dies?

3. SSH-Verbindung
Im "sh setup.sh" habe ich "bash setup-nginx.sh" ausgeführt. Dort NGINX (1) installiert und dann eingerichtet (3). Wenn ich nun die Adresse aufrufen möchte (meine SEPIA-Adresse nur hinten mit 20726). Leider öffnet er die SEPIA-Adresse nicht. Wann muss ich noch einstellen, dass die SSH-Verbindung klappt?

4. Verzeiht mir, aber leider finde ich die weitere Anleitung nicht. Wie bekomme ich jetzt es hin, dass ich die Sprachbefehle durchführen kann? Ich muss jetzt doch meine Sprache/ Befehle an das System anpassen?! Gibt es dazu eine Anleitung?

5. Nach einem Neustart kann ich nicht mehr auf die Adresse zugreifen: http://192.168.178.28:20721/tools/index.html#!home Es scheint so, als wäre der Server nicht gestartet. Wie kann ich diesen Starten bzw. beim booten direkt immer mitstarten lassen?

Vielen Dank für die Rückmeldungen und an den Entwickler: Tolle Arbeit bisher und danke dafür!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 18 Juni 2020, 13:42:54
Hi.

Zitat von: Jasdhewer am 17 Juni 2020, 11:08:49
1. Über den Test kann ich die Lampe nur "ausschalten", aber nicht "anschalten", obwohl ich den Befehl in der "custom config" angegeben habe (s. Anhang 1). Muss ich für jeden Befehl immer wieder eine neue Karte erstellen? Wie sieht es mit dimmen aus? Wie müssen dann die Werte dort reingeschrieben werden?

Die Befehle für AN/AUS und Zwischenwerte können von Gerät zu Gerät abweichen. Eventuell hilft es im ioBroker Interface bei dem Gerät selber mal hinten auf den Wert zu gucken was dieser anzeigt bei den verschiedenen Zuständen. Meine Hue Lampen nutzen z.B. nur Zahlen (0=AUS, 50=50%, für AN nutze ich 70) andere Geräte können aber durchaus auch Werte wie "on"/"off" oder "70pct" verwenden.

Zitat von: Jasdhewer am 17 Juni 2020, 11:08:49
2. Iobroker-Verbindung: dort gibt es die Möglichkeit der Verschlüsselung (HTTPS). Wenn ich das Einstelle, wie genau muss ich im Interface dies einstellen? Dort steht username:password --> Muss ich genau so dies eingeben oder muss ich aus dem username und passwort des ioBrokers eine Buchstaben/Zahlenkombination generieren lassen und wie geht dies?

HTTPS bezieht sich nur auf die SSL Zertifikate des Servers, sprich das Interface in SEPIA braucht kein zusätzliches Passwort aber die URL muss auf "https" geändert werden. In meinen Tests mit ioBroker waren die SSL Zertifikate dabei meistens auf den "Hostname" des Gerätes registriert, sprich wenn der Hostname z.B. "raspberry" ist dann wird die gültige URL vermutlich "https://raspberry.local:8..." sein oder "https://raspberry:8...".
Da die SSL Zertifikate von ioBroker selbst-signiert sind muss zu guter letzt noch das Zertifikat in den "Truststore" von Java aufgenommen werden, dazu gibt es ein Skript im SEPIA/scripts Ordner und eine mini-Anleitung (https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server#importing-self-signed-ssl-certificates-into-sepia)

Zitat von: Jasdhewer am 17 Juni 2020, 11:08:49
3. SSH-Verbindung
Im "sh setup.sh" habe ich "bash setup-nginx.sh" ausgeführt. Dort NGINX (1) installiert und dann eingerichtet (3). Wenn ich nun die Adresse aufrufen möchte (meine SEPIA-Adresse nur hinten mit 20726). Leider öffnet er die SEPIA-Adresse nicht. Wann muss ich noch einstellen, dass die SSH-Verbindung klappt?

Eine SSH Verbindung kann immer nur zum Betriebssystem aufgebaut werden, also z.B. zum RaspberryPi falls du sowas benutzt. Die SEPIA Adresse ist hingegen für den Zugriff auf die HTTP/Socket Schnittstellen und den Webserver gedacht.

Zitat von: Jasdhewer am 17 Juni 2020, 11:08:49
4. Verzeiht mir, aber leider finde ich die weitere Anleitung nicht. Wie bekomme ich jetzt es hin, dass ich die Sprachbefehle durchführen kann? Ich muss jetzt doch meine Sprache/ Befehle an das System anpassen?! Gibt es dazu eine Anleitung?

Meinst du ganz generell Befehle auszuführen? Dafür musst du eigentlich nichts einstellen, einfach den SEPIA Client öffnen, einloggen und sagen "Licht im Wohnzimmer" etc..
Oder meinst du vielleicht einen neuen, eigenen Befehl erstellen? Dafür gibt es verschiedene Möglichkeiten (https://github.com/SEPIA-Framework/sepia-docs/wiki/Creating-your-own-smart-service-%28aka%3A-skill-or-voice-action%29).

Zitat von: Jasdhewer am 17 Juni 2020, 11:08:49
5. Nach einem Neustart kann ich nicht mehr auf die Adresse zugreifen: http://192.168.178.28:20721/tools/index.html#!home Es scheint so, als wäre der Server nicht gestartet. Wie kann ich diesen Starten bzw. beim booten direkt immer mitstarten lassen?

Ich gehe davon aus du arbeitest mit Linux?
Am Besten prüfst du erstmal ob der Server noch läuft. Dazu gehst du in den Ordner "~/SEPIA" und rufst das test Skript auf "bash test-cluster.sh".
Falls nichts läuft kannst du den Server mit "bash run-sepia.sh" oder "bash restart-sepia.sh" starten.
Um den Server beim System Reboot automatisch zu starten empfehle ich das Skript "on-reboot.sh" via Cronjob einzubinden (crontab -e). Mein Cronjob sieht z.B. so aus:

@reboot sleep 60; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;


Der erste Teil starten den Server nach dem Boot, außerdem starte ich meinen Server alle 2 Tage neu, einfach um sicher zu gehen ;-)

Hoffe das Hilft,
Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 18 Juni 2020, 15:01:38

@Florian: könnte auch noch etwas Unterstützung gebrauchen:

1. wie lösche ich einen Service wieder aus dem System? Habe als uid1007 mal einen angelegt und diesen dann doch als assistant weiter gepflegt. Später dann per Hand das class file vom dateisystem gelöscht. Seitdem wird ständig Class not found: net.b07z.sepia.sdk.services.uid1007.SepiaDemo geloggt.

2. (Wie/Wo) Kann ich den answer pool für den bestehenden smartdevice bereich erweitern?

3. habe ähnlich wie whistler eine (teilweise) weiterleitung per MQTT eingerichtet - funktioniert auch nach Anpassung deiner Demo ganz gut.
Als Erweiterung würde ich gerne auf eine vorherige Eingabe reagieren, mit in folgendem ablauf:

Client: schalte IrgendeinGanzMerkwürdigesGerät was sepia leider nicht versteht im Wohnzimmer ein
Sepia: Tut mir leid verstehe ich leider nicht.
Client: Leite es weiter an mqtt

Sprich, ich würde gerne das letzte Kommando, bzw. Chat weiterleiten.   Guten Idee, wie man dies verwirklichen kann?

4. Da ich leider absolut nichts programmieren kann, beschränkt sich mein customizing also auf commands/answer files.  Bekomme diese aber auch nicht wie erhofft zum laufen.
Beispiel:
es ist staubig;;          command=smartdevice;;    smart_device=Staubsauger;;    action=<set>;;    smart_device_value={"value":"zone ***", "type":"custom"};;       parameter_set=***place;;         question_set=Wo denn genau?||wo soll gesaugt werden?;;      reply=ok, Robo kümmert sich||Robo ist unterwegs.

in diesem Fall wechselt sepia direkt in den Modus smartdevice  und fragt "welches gerät möchtest du steuern", anstatt meinen Weg zu nehmen. Soll das so bzw. wie bekomm ich sepia trotzdem auf meinen Weg?


Danke und Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 18 Juni 2020, 15:52:45
Ich teste mich gerade mal daran.
Bei funktioniert das Schalten aber irgendwie nicht. Also Sepia ist mit
fhem verbunden und hat auch die Devices "importiert". Schalten über die
Smart Home Oberfläche von Sepia geht auch. Wenn ich ihr aber jetzt sage "Schalte Drucker an" (dahinter
verbirgt sich eine Schaltsteckdose), sagt sie mir immer
Ich muss dir leider sagen, dass ich dir darauf grade wirklich keine Antwort geben kann.

Kann mir einer sagen wo ich da nicht aufgepasst habe ?

P.S.: Super sache das Projekt, vielen Dank dafür!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 18 Juni 2020, 16:08:32
hat dein User die Rolle"smarthomeguest"  ?

unter "user Management"
- uid eintragen
-"Get Roles"
-und ggfs. "user,smarthomeguest" / set roles
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 18 Juni 2020, 16:26:45
Zitat von: TRallala am 18 Juni 2020, 16:08:32
hat dein User die Rolle"smarthomeguest"  ?

unter "user Management"
- uid eintragen
-"Get Roles"
-und ggfs. "user,smarthomeguest" / set roles

Danke, smarthomeguest fehlte. Aber auch mit geht es leider nicht.
Habe mich in der App abgemeldet und wieder angemeldet. Leider die gleiche antwort.

Edit:
Also wenn ich in der App eingebe "Smart Home" dann antwortet sie mit:
Welches Gerät möchtest du steuern ?
Dann sage ich "Drucker" und sie antwortet:
Drucker am Standort 1 auf aus, alles klaro.
Ihre Antwort nimmt sie auch direkt wieder als Sprache an weil die SPracheingabe noch aktiviert ist.

Und dann schaltet sie den Drucker auch aus.
Ihre Antwort nimmt sie auch direkt wieder als Sprache an weil die SPracheingabe noch aktiviert ist.
Nur wenn ich ihr direkt sage "Schalte Drucker aus" bekommt sie nicht die Kurve zu fhem.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 18 Juni 2020, 16:49:17
ZitatIhre Antwort nimmt sie auch direkt wieder als Sprache an weil die SPracheingabe noch aktiviert ist.
das klingt merkwürdig. kein ahnung.

Ich glaube für das direkte schalten ist etwas mehr info nötig:

was passiert bei der eingabe "schalte das gerät drucker am standort ein" ?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 18 Juni 2020, 16:54:08
Zitat von: TRallala am 18 Juni 2020, 16:49:17

was passiert bei der eingabe "schalte das gerät drucker am standort ein" ?

Das funktioniert ohne Probleme  8)

Muss man ihr erst noch kurzbefehle beibringen ?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 18 Juni 2020, 17:07:25
ZitatMuss man ihr erst noch kurzbefehle beibringen ?

grad auch mal etwas rumgespielt - theoretisch nicht:
bei mir reicht ein   "stehlampe aus".

gesetzt sind in fhem:

sepia-room  livingroom
sepia-type  light

und in sepia noch

state-type Binary
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 18 Juni 2020, 19:08:28
Ich kläre das mal kurz auf bevor ich gleich näher auf deine Fragen von oben eingehe @Markus ;-)

"Schalte Stehlampe ein" - geht weil SEPIA Lampe erkennt und das mit dem Smart Home Service verbindet
"Schalte Drucker ein" - geht nicht, weil SEPIA die Verbindung zum Smart Home Service nicht hin bekommt
"Schalte Gerät Drucker ein" oder "Gerät Drucker einschalten" - geht weil die es wieder eindeutig ist
"Smart Home" --- "Drucker" - geht auch weil man dann schon im Smart Home Service drin ist

Ich weiß das ist nicht so optimal, aber der "Type" "Device" hat hier eine kleine Sonderstellung. Da es theoretisch unendlich viele Gerätenamen geben kann erfordert der Befehl einen eindeutigen Hinweis auf Smart Home. Bei "Drucker" fällt das besonders auf, aber bei "Schalte Radio ein" wäre es z.B. in Konflikt mit dem Radio Service. Ich überlege noch wie man das optimieren kann  ;)
Über die Teach UI kann man es aber erzwingen wenn es einen zu sehr stört.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 18 Juni 2020, 20:07:23
Zitat von: TRallala am 18 Juni 2020, 15:01:38
1. wie lösche ich einen Service wieder aus dem System? Habe als uid1007 mal einen angelegt und diesen dann doch als assistant weiter gepflegt. Später dann per Hand das class file vom dateisystem gelöscht. Seitdem wird ständig Class not found: net.b07z.sepia.sdk.services.uid1007.SepiaDemo geloggt.

Leider fehlt die Funktion noch im Control HUB :-X es gibt aber einen Server Endpoint dafür. Im Java SDK gibt es auch eine Funktion zum löschen von Services.
Wenn das Java SDK keine Option ist hilft vielleicht dieser curl Befehl:

curl -X POST \
  http://localhost:20721/delete-service \
  -d '{
"commands":["uid1007.corona_data"],
"client":"web_app"
"GUUID":"uid1007",
"PWD":"Mein Passwort im Klartext"
}'


Hier beispielhaft für den User uid1007 und den damit hochgeladenen Service "corona_data" (der command name). Statt "GUUID" und "PWD" kann man auch sein zeitlich begrenztes login token nutzen, das ist aber etwas komplizierter (Erklärung auf Anfrage ;-)).
Eventuell musst du vorher noch die alte Class Datei wiederherstellen, ich weiß jetzt nicht genau ob der den Fehler einfach ignoriert wenn er die nicht löschen kann.

Zitat von: TRallala am 18 Juni 2020, 15:01:38
2. (Wie/Wo) Kann ich den answer pool für den bestehenden smartdevice bereich erweitern?

Die einfachste Methode ist ->hier<- (https://github.com/SEPIA-Framework/sepia-docs/wiki/Adding-global-predefined-custom-sentences-and-answers) beschrieben. Theoretisch geht es auch über den Control HUB auf der Seite "Answer Manager", wenn man vorher in den core settings das Answer Modul auf "elasticsearch" stellt (was für ein Satz :o).

Zitat von: TRallala am 18 Juni 2020, 15:01:38
3. habe ähnlich wie whistler eine (teilweise) weiterleitung per MQTT eingerichtet - funktioniert auch nach Anpassung deiner Demo ganz gut.
Als Erweiterung würde ich gerne auf eine vorherige Eingabe reagieren, mit in folgendem ablauf:

Client: schalte IrgendeinGanzMerkwürdigesGerät was sepia leider nicht versteht im Wohnzimmer ein
Sepia: Tut mir leid verstehe ich leider nicht.
Client: Leite es weiter an mqtt

Sprich, ich würde gerne das letzte Kommando, bzw. Chat weiterleiten.   Guten Idee, wie man dies verwirklichen kann?

Ah, spannend :-D . Ich habe seit langer Zeit vor kontextbezogene Befehle einzubauen, es kommt aber immer was dazwischen ^^. Seit der ersten Version von SEPIA gibt es dafür zumindest schon das Feld 'lastCmd' im 'NluInput' Objekt. Grob gesagt wäre das Vorgehen so:
- einen Service erstellen, der ".* weiter .* an mqtt" versteht
- in dem Service das Feld 'input.lastCmd' auswerten
- auf basis des Input eine neue Aktion ausführen

Eigentlich könnte ich mal versuchen sowas kurzfristig auf die Beine zu stellen :-D

Zitat von: TRallala am 18 Juni 2020, 15:01:38
4. Da ich leider absolut nichts programmieren kann, beschränkt sich mein customizing also auf commands/answer files.  Bekomme diese aber auch nicht wie erhofft zum laufen.
Beispiel:
es ist staubig;;          command=smartdevice;;    smart_device=Staubsauger;;    action=<set>;;    smart_device_value={"value":"zone ***", "type":"custom"};;       parameter_set=***place;;         question_set=Wo denn genau?||wo soll gesaugt werden?;;      reply=ok, Robo kümmert sich||Robo ist unterwegs.

in diesem Fall wechselt sepia direkt in den Modus smartdevice  und fragt "welches gerät möchtest du steuern", anstatt meinen Weg zu nehmen. Soll das so bzw. wie bekomm ich sepia trotzdem auf meinen Weg?

Es sieht aus als hättest du ein paar spezielle Parameter entdeckt (question_set, parameter_set), die nur für den 'open_link' Befehl funktionieren. Kein schlechter Versuch muss ich zugeben ... eigentlich könnte ich das mal erw... ah, eins nach dem anderen ;D
Der Anwendungsfall passt gut zu einem Custom Service. Ich überlege seit Langem, wie man diese zugänglicher machen könnte mit minimaler Programmierung, leider bin ich noch nicht soweit.
Bis dahin würde ich vorschlagen die Teach UI zu nutzen für 2-3 Befehle a la "es ist staubig im Wohnzimmer" / "es ist staubig im Schlafzimmer" etc. . Theoretisch gibt es auch hier die Möglichkeit für einen Befehl "es ist staubig im <room>" ... das ist intern aber zur Zeit deaktiviert weil das schnell aus dem Ruder laufen kann :-\

Ich gucke mal was ich auf die Roadmap für v2.5.1 setzen kann von den diskutierten Sachen ;-)

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 18 Juni 2020, 21:42:52
Zitat von: sepia am 16 Juni 2020, 23:56:35
Hi Basti,

sorry hab gerade nicht so viel Zeit, aber gucke mir die CLEXI PDF eventuell Morgen oder spätestens am Wochenende an :)

Die Server Stats sehen eigentlich solide aus, alles im grünen Bereich, lediglich drei Sachen fallen mir auf:

"API poss. errors (>2s): 34"

34 API Calls die länger als 2s gedauert haben (deswegen als "possible" errors deklariert). Das muss nichts heißen, manche APIs wie das Wetter etc. können sich schon mal etwas Zeit nehmen und >2s kann ja auch 2.1s sein ^^, aber da sollte man mal ein Auge drauf haben. Eventuell sollte ich die API calls noch weiter aufbröseln damit man genauer sieht ob es das Wetter ist oder was anderes.

"TTS Time: 956.0454545454545ms (84132ms)"

Auch das ist jetzt nicht ungewöhnlich zumal es erst relevant wird nachdem der Befehl schon ausgeführt wurde und es auch stark auf die durchschnittliche Länge der Sätze ankommt, aber da könnte man eventuell noch 500ms rausholen durch Ändern der Engine. Ist das die MaryTTS engine?

DB poss. errors (>2s): 8

8 von 587 >2s ist kaum relevant, aber ich frage mich auch hier welche Calls das wohl waren. Vielleicht war die Elasticsearch mal kurz am stottern.

Alles in Allem sehe ich nichts, was die Zeit insgesamt über 3-4s drücken sollte. Vor allem die FHEM Calls sind super schnell (370ms im Schnitt).
Was du mal machen könntest ist den SEPIA Server neu starten damit alle Statistiken auf 0 sind und dann konkret nur die Befehle ausführen, die länger dauern. Direkt danach dann wieder auf die Statistiken gucken ob es Ausreißer gibt. Dabei würde ich dem Server 3-4 Calls geben zum warm werden, aber danach sollte es zügig gehen.

ich schau es mir aktuell noch an. hab noch nichts gefunden. vielleicht ein timing problem im fhem. habs etwas schneller bekommen.
reboot vom sepia server macht aber keinen grossen unterschied.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 18 Juni 2020, 21:45:33
Zitat von: sepia am 16 Juni 2020, 23:56:35
Hi Basti,

sorry hab gerade nicht so viel Zeit, aber gucke mir die CLEXI PDF eventuell Morgen oder spätestens am Wochenende an :)

Ich hab noch was gefunden in dem Zusammenhang. ein Event beim Wakeword aktivieren, bzw. deaktivieren wäre nice, denn ich hatte heute alle Clients wo das Wakeword aus war. Scheinbar schaltet das sich irgendwann von alleine ab. Mit einem Reload per Remote Console läuft es dann wieder, aber natürlich bei einem Headless client ohne Display nicht so gut, wenn man nicht weiss ob er einen nicht erkennt weil er dich nicht verstehen will, oder (wakeword Erkennung aus) er dich nicht verstehen kann.

Vielleicht hast du dafür noch eine Idee.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 18 Juni 2020, 21:50:47
Zitaturl -X POST \
  http://localhost:20721/delete-service \

ist doch vollkommen ausreichend:
{"result":"success","ignoredCommands":"[]","deletedMappings":0,"fileErrors":0,"deletedFiles":0,"deletedTriggers":0}
Nix gelöscht, aber das erfolgreich  ;D - ich beobachte mal das log.

ZitatDie einfachste Methode ist ->hier<- beschrieben
äähm, sorry, Augen auf - schon wieder - hab ich doch unter 4tens schon drin rum gebastelt.

Aber dazu kannst du vielleicht noch etwas aufklären, was genau der unterschied zwischen elastic und file bedeutet; sprich was wird in welchem modus benutzt; wie wird elastic "befüllt"?

ZitatAh, spannend :-D . Ich habe seit langer Zeit vor kontextbezogene Befehle einzubauen, es kommt aber immer was dazwischen ^^. Seit der ersten Version von SEPIA gibt es dafür zumindest schon das Feld 'lastCmd' im 'NluInput' Objekt. Grob gesagt wäre das Vorgehen so:
- einen Service erstellen, der ".* weiter .* an mqtt" versteht
- in dem Service das Feld 'input.lastCmd' auswerten
- auf basis des Input eine neue Aktion ausführen

Eigentlich könnte ich mal versuchen sowas kurzfristig auf die Beine zu stellen :-D

Das klingt sowas von einfach; ich wünscht ich könnt zumindest n bissken was programmieren und somit beisteuern.  :-\
Daher auch mein versuch den Bahn-Service bzw. open_link command zu verwursten.

ZitatTheoretisch gibt es auch hier die Möglichkeit für einen Befehl "es ist staubig im <room>" ... das ist intern aber zur Zeit deaktiviert weil das schnell aus dem Ruder laufen kann
...das kann ich mir vostellen, vor allem wenn es nicht bei <room> bleibt und auf einmal 4, 5, oder sechs "platzhalter" verstanden werden sollen.  Nur leider genau, dass was ich gerade suche  ::)

Ich muss gestehen, dass ich auch nur aus diesem Anlass die Weiterleitung per MQTT gebaut habe; um eben an fhem anzudocken und per Talk2Fhem (//http://) einiges einfach per Regex zu schalten. Hinzu kommt, dass hier auch Zeit- und Datumsangaben verstanden werden, Geräte ver-undet werden können und sogar auf events reagiert werden kann.
Schon klar, dass dieses Modul exakt auf fhem zugeschnitten wurde und sepia von Haus aus das nicht leisten kann - schön wäre es trotzdem :)
Und der komplette Bereich Antworten/Rückmeldung ist bei talk2fhem nicht sehr umfangreich.

Daher wäre für mich der Idealzustand - zwei Systeme: Sepia nimmt befehle an, versteht/verarbeitet/bereitet ggf. auf "assistiert" und fhem steuert komponenten, automatisiert das Haus. (gar nicht einfach nicht in denglische zu rutschen ;) )

ZitatIch gucke mal was ich auf die Roadmap für v2.5.1 setzen kann von den diskutierten Sachen ;-)
Was steht denn noch so drauf - habe nicht immer alles mitgelesen.

Schön' Abend


PS: Thema Headless Client: was nutzt ihr da an Hardware, Ausstattung, OS, wie ist der Stromverbrauch?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 18 Juni 2020, 23:05:55
Zitat von: whistler am 18 Juni 2020, 21:45:33
Ich hab noch was gefunden in dem Zusammenhang. ein Event beim Wakeword aktivieren, bzw. deaktivieren wäre nice, denn ich hatte heute alle Clients wo das Wakeword aus war. Scheinbar schaltet das sich irgendwann von alleine ab.

Hey Basti, ich bin jetzt gerade selber unsicher aber ich mein das Wakeword Event hatte ich kurz vor dem Release noch eingebaut :D ... oder warte mal ich glaub das war nur Wakeword brodcast nicht Wakeword ON/OFF.
Dass sich das ausschaltet ist natürlich nicht so gut :-/ . Da ich ja eh schon den "auto-reset" auf der Liste habe (wir hatten es letztens Diskutiert) gucke ich mal ob ich das direkt mit erledigen kann. Hast du einen Anhaltspunkt wann es passiert? Vielleicht nach einem Timer/Alarm? Oder nach Musik?

Zitat von: TRallala am 18 Juni 2020, 21:50:47
Nix gelöscht, aber das erfolgreich  ;D - ich beobachte mal das log.

;) bin gespannt ^^.

Zitat von: TRallala am 18 Juni 2020, 21:50:47
Aber dazu kannst du vielleicht noch etwas aufklären, was genau der unterschied zwischen elastic und file bedeutet; sprich was wird in welchem modus benutzt; wie wird elastic "befüllt"?

"file" bedeutet er liest beim Server Start alle Daten aus dem Ordner mit den Antworten (normal und "_custom") und cached die für schnellen Zugriff. "elastic" macht im Grunde das gleiche nur werden die Daten aus der Elasticsearch direkt geladen (und ebenfalls im Cache gehalten).
Bezüglich des Imports, das hatte ich vergessen zu erwähnen, es gibt im Java Code vom Teach Server eine Klasse namens "ElasticSearchImporter" die die Daten aus den "files" einlesen und in die ES schreiben kann. Ich habe das selber ewig nicht benutzt aber theoretisch kann man das per Commandline bedienen, praktisch ist es glaube ich gerade auf die "chats_en.txt" hardcoded  :-\ . Habs mal auf die To-Do Liste gesetzt.
Ansonsten kann die ES über besagten "Answer Manager" im Control HUB befüllt werden. Ist vielleicht aber nicht ganz so cool wenn die ganzen Standardantworten fehlen ^^.
Der Grund warum diese Funktion eher "brach" liegt ist, dass ich die txt-Files besser updaten kann und es sind häufiger mal Änderungen nötig. Custom Services haben auch eine eigene Sektion für Antworten, so dass es im Grunde selten nötig ist eigene, globale Antworten zu erstellen.

Zitat von: TRallala am 18 Juni 2020, 21:50:47
...das kann ich mir vostellen, vor allem wenn es nicht bei <room> bleibt und auf einmal 4, 5, oder sechs "platzhalter" verstanden werden sollen.  Nur leider genau, dass was ich gerade suche  ::)

Ja das ist genau meine Befürchtung. Am Ende geht nix mehr weil die Teach-UI überflutet ist von Wildcards :P
So ganz deaktiviert habe ich sie trotzdem nicht, der Befehl "Executes Command(s)" darf es noch nutzen ^^. In der Hilfe von dem Befehl sind einige Beispiele, vielleicht hilft das ja schon weiter. Was z.B. möglich ist "Robo <var1>" -> "Gerät Robo Cleaner <var1>". Damit deckt man dann "Robo einschalten/ausschalten" mit einem Befehl ab.

Zitat von: TRallala am 18 Juni 2020, 21:50:47
Daher wäre für mich der Idealzustand - zwei Systeme: Sepia nimmt befehle an, versteht/verarbeitet/bereitet ggf. auf "assistiert" und fhem steuert komponenten, automatisiert das Haus. (gar nicht einfach nicht in denglische zu rutschen ;) )

Ja, diese Symbiose ist definitiv erwünscht. In den einfachen Kontrollen für die "üblichen" Geräte klappt das ja auch schon ganz gut. Für "exotischere" Sachen müssen die Möglichkeiten noch erweitert werden. Die Custom Services haben ziemlich viele Standardkomponenten/Boilerplate Code. Mein Ziel ist es ein HTML Interface darüber zu setzen, was den Code abstrahiert, sprich der User definiert nur noch Antworte, Trigger Sätze, Parameter (Slots wie es mache nennen), RegExp etc. und kriegt dann ein fast fertiges Template, wo er im Besten fall nix mehr ändern muss, im schlimmsten Fall noch die komplexere Service Logik einbauen muss.
Wenn man klein anfängt und als Service Logik z.B. nur eine Hand voll Standards anbietet wie MQTT publish/HTTP call/Smart Home Hub Aktion könnte das vielleicht klappen :-)

Zitat von: TRallala am 18 Juni 2020, 21:50:47
Was steht denn noch so drauf - habe nicht immer alles mitgelesen.

Ganz oben steht zur Zeit, dass ich mal wieder was am SEPIA STT Server machen muss, sprich die open-source Spracherkennung muss zugänglicher werden und nicht nur als Docker Container laufen. Ansonsten gibt es die eben beschriebenen Sachen für die Services, inkrementelle Verbesserungen (die fehlende Löschfunktion, etc.), die MQTT Sachen + generelle Verbesserungen am DIY/headless Client (da hat Basti ja schon einen lauffähigen Demo geschafft) und wie immer: Bugs suchen und fixen :o. Es gibt noch duzende, weitere Ideen, aber das ist der realistische Teil für die nächsten Wochen ;-)

Zitat von: TRallala am 18 Juni 2020, 21:50:47
PS: Thema Headless Client: was nutzt ihr da an Hardware, Ausstattung, OS, wie ist der Stromverbrauch?

Offiziell unterstützt werden RPi Zero bis RPi4 wahlweise mit USB Mikrofon/ReSpeaker Mic-Hat/Hyperpixel Touchscreen/Klinke-Audio, theoretisch dürfte aber jedes Linux funktionieren. Stromverbrauch kommt auf die Wahl des RPi und den optionalen Touchscreen an, aber in der Spitze nicht mehr als was das Pi Netzteil hergibt (~10W).

------

Ich habe mich vorhin noch dran gesetzt und einen neuen SDK Service zum Testen gebastelt. Da es jetzt schon öfters mal diskutiert wurde habe ich mir den Roboter Staubsauger vorgenommen  ;D 8)
Im Anhang ist die Java Datei, die man über den Control Hub (Code-UI) hochladen kann und ein Screenshot, wie ich das Gerät in der Smart Home Sektion eingerichtet habe.

Das ganze läuft so:
- Der Service reagiert auf Sätze wie "sende Robo ins Wohnzimmer", "aktiviere Staubsaugerroboter", "es ist dreckig", "es ist staubig in der Garage", etc.
- Falls der Raum fehlt wird danach gefragt
- Dann sucht der Service über den Standard Smart Home Hub, also das, was ihr auf der "Smart Home" Seite des Control HUBs eingerichtet habt, nach dem Gerät mit Namen "Robo Cleaner" und "Type"='device' und schickt den Raum als Status
- Da das Gerät ganz normal über den Smart Home HUB eingerichtet ist werden die Befehle "Gerät Robo Cleaner ausschalten/einschalten" auch verstanden, das läuft unabhängig

Das Interface im Screenshot (MQTT) bietet sich an, kann aber auch FHEM direkt sein (oder alles was so unterstützt wird mittlerweile). Es muss nur am anderen Ende verarbeitet werden können, den Teil überlasse ich euch ^^.

Frohes Ausprobieren und gute Nacht ;-)
- Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 19 Juni 2020, 11:10:37
Zitat
ZitatZitat von: TRallala am Gestern um 21:50:47

    Nix gelöscht, aber das erfolgreich  ;D - ich beobachte mal das log.


;) bin gespannt ^^.

das löschen des Services hat leider nicht funktioniert.
Log wird weiter zugemüllt - auch das file neu anlegen und dann zu löschen hat nicht funktioniert.
Komischerweise bekomme ich jetzt aber auch bei jedem Service den ich als uid1007 hochladen will fehler 401 not authorized  :-/

Zitatvorhin noch dran gesetzt und einen neuen SDK Service zum Testen gebastelt
..das ging schnell.

Wenn man noch
.setRequired(true);
beim Parameter room setzt funktioniert es auch ganz gut (mit fhem).
Ohne gibt es nämlich ein
Zitat2020-06-19 09:40:09 ERROR - FHEM interface error in 'setDeviceState': no set value specified

Jetzt zu dem Problem: Er nimmt die englischen Raumbezeichner  :-\

Im Beispiel ist mir jetzt noch die rolle "smarthomeadmin" zum ersten mal aufgefallen.
Kann die schon was, oder tut die erstmal nur so?  ;)

Gruß
Markus

PS:

ZitatAh, spannend :-D . Ich habe seit langer Zeit vor kontextbezogene Befehle einzubauen, es kommt aber immer was dazwischen ^^. Seit der ersten Version von SEPIA gibt es dafür zumindest schon das Feld 'lastCmd' im 'NluInput' Objekt. Grob gesagt wäre das Vorgehen so:
- einen Service erstellen, der ".* weiter .* an mqtt" versteht
- in dem Service das Feld 'input.lastCmd' auswerten
- auf basis des Input eine neue Aktion ausführen

hab nich mal daran versucht - funktioniert auch so halb. "Problem" ist, dass lastCmd anscheinend nicht mehr den rawInput beinhaltet, sondern, was sepia draus gemacht hat:
Eingabe siehe anhang.  per mqtt kommnt an:

smartdevice;;smart_device={"value_local":"der Fernseher","found":"fernseher","device_tag":"fernseher","value":"tv"};;action={"value_local":"anschalten","value":"<on>"};;smart_device_value={"input":"15","type":"number_plain","value":"15"};;room={"value_local":"im Badezimmer","room_tag":"bad","value":"bath"};;

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 19 Juni 2020, 16:56:41
Zitat von: sepia am 18 Juni 2020, 19:08:28
Ich kläre das mal kurz auf bevor ich gleich näher auf deine Fragen von oben eingehe @Markus ;-)

"Schalte Stehlampe ein" - geht weil SEPIA Lampe erkennt und das mit dem Smart Home Service verbindet
"Schalte Drucker ein" - geht nicht, weil SEPIA die Verbindung zum Smart Home Service nicht hin bekommt
"Schalte Gerät Drucker ein" oder "Gerät Drucker einschalten" - geht weil die es wieder eindeutig ist
"Smart Home" --- "Drucker" - geht auch weil man dann schon im Smart Home Service drin ist

Ich weiß das ist nicht so optimal, aber der "Type" "Device" hat hier eine kleine Sonderstellung. Da es theoretisch unendlich viele Gerätenamen geben kann erfordert der Befehl einen eindeutigen Hinweis auf Smart Home. Bei "Drucker" fällt das besonders auf, aber bei "Schalte Radio ein" wäre es z.B. in Konflikt mit dem Radio Service. Ich überlege noch wie man das optimieren kann  ;)
Über die Teach UI kann man es aber erzwingen wenn es einen zu sehr stört.

Also irgendetwas mache ich hier noch falsch...

Mein Drucker hat in fhem die Attribute:
sepia-room unassigned
sepia-room-index 1
sepia-type light


Im Sepia
Type: Light
Room: Not assigned 1
State Type: Binary

Zitat von: sepia am 18 Juni 2020, 19:08:28
"Schalte Gerät Drucker ein" oder "Gerät Drucker einschalten" - geht weil die es wieder eindeutig ist
Geht bei mir nicht, da sagt sie dass es kein passendes Gerät gibt  :-\

EDIT:
Ich hab es jetzt über die Teach UI gelöst, funktioniert einwandfrei.

Aber noch eine Frage dazu....
Der gelernte Befehl ist jetzt nur für den User verfügbar der ihn auch
erstellt hat. Gibt es da eine Möglichkeit den allen zur Verfügung zu stellen ?

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 19 Juni 2020, 17:27:10
Zitat von: sepia am 18 Juni 2020, 23:05:55
Hey Basti, ich bin jetzt gerade selber unsicher aber ich mein das Wakeword Event hatte ich kurz vor dem Release noch eingebaut :D ... oder warte mal ich glaub das war nur Wakeword brodcast nicht Wakeword ON/OFF.
Dass sich das ausschaltet ist natürlich nicht so gut :-/ . Da ich ja eh schon den "auto-reset" auf der Liste habe (wir hatten es letztens Diskutiert) gucke ich mal ob ich das direkt mit erledigen kann. Hast du einen Anhaltspunkt wann es passiert? Vielleicht nach einem Timer/Alarm? Oder nach Musik?

Hey Florian,

Du hattest kurz vorm Release das Multiwakeword für die 1.5 und 1.6 gefixt was ich gefunden hatte.
Ein Wakeword wird nicht gebroadcastet. In meiner Erweiterung für Fhem im Clexi, Checke ich auf listening vom Mic.
Ob dem ein Wakeword vorausgegangen ist, sieht man daran nicht. :-)

Wäre also beides Tatsächlich interessant ja. (Wakeword selber und ON/OFF)

Ich kann es nicht genau sagen wann das passiert, weil steht ja auch vermutlich nichts im Log.
Oder wo sollte ich mal schauen gehen?

Hab gerade geschaut alle sind wieder ausgeschaltet (erkennbar ja am Symbol Online und dann links und rechts davon)

Danke Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 19 Juni 2020, 20:42:23
Zitat von: TRallala am 19 Juni 2020, 11:10:37
das löschen des Services hat leider nicht funktioniert.
Log wird weiter zugemüllt - auch das file neu anlegen und dann zu löschen hat nicht funktioniert.
Komischerweise bekomme ich jetzt aber auch bei jedem Service den ich als uid1007 hochladen will fehler 401 not authorized  :-/

Oh, komisch. Das klingt mir aber wie zwei unabhängige Fehler. War der alte Service vielleicht mit uid1005 hochgeladen? Hat uid1007 die Rolle "developer"?

Zitat von: TRallala am 19 Juni 2020, 11:10:37
Wenn man noch
.setRequired(true);
beim Parameter room setzt funktioniert es auch ganz gut (mit fhem).

Glatt vergessen  :o , war wohl schon spät ;D

Zitat von: TRallala am 19 Juni 2020, 11:10:37
Jetzt zu dem Problem: Er nimmt die englischen Raumbezeichner  :-\

Genau genommen ist das der sprachunabhängige, generalisierte Parameter, z.B. "Living room/Wohnzimmer -> livingroom". Wie wird der Input bei dir weiterverarbeitet? Brauchst du dafür die deutschen Namen? Dazu könnte man bei 'setDeviceState' das 'roomType' ersetzen durch roomTypeLocal.replaceAll(".*(der|dem|das|im|the)", "").

Zitat von: TRallala am 19 Juni 2020, 11:10:37
Im Beispiel ist mir jetzt noch die rolle "smarthomeadmin" zum ersten mal aufgefallen.
Kann die schon was, oder tut die erstmal nur so?  ;)

Die kann was ;-) "smarthomeadmins" dürfen im Control HUB Smart Home Geräte konfigurieren ("guests" dürfen sie nur bedienen).

Zitat von: TRallala am 19 Juni 2020, 11:10:37
hab nich mal daran versucht - funktioniert auch so halb. "Problem" ist, dass lastCmd anscheinend nicht mehr den rawInput beinhaltet, sondern, was sepia draus gemacht hat:
Eingabe siehe anhang.  per mqtt kommnt an: [...]

Ja genau, das ist der abstrahierte Befehl. Welches Format brauchst du? Dann könnte ich dir zeigen wie man es konvertiert.

Zitat von: Nitaro am 19 Juni 2020, 16:56:41
Also irgendetwas mache ich hier noch falsch...

Mein Drucker hat in fhem die Attribute:
sepia-room unassigned
sepia-room-index 1
sepia-type light


Dein Drucker steht auf "sepia-type=light", das würde mit dem Befehl "Schalte Drucker Licht ein" gehen ;-)
Was du hier bräuchtest wäre "Type" "device".

Zitat von: Nitaro am 19 Juni 2020, 16:56:41
Aber noch eine Frage dazu....
Der gelernte Befehl ist jetzt nur für den User verfügbar der ihn auch
erstellt hat. Gibt es da eine Möglichkeit den allen zur Verfügung zu stellen ?

Ja, Befehle die mit dem Assistant User (Standard: uid1005) erstellt werden sind für alle User gültig :-)

Zitat von: whistler am 19 Juni 2020, 17:27:10
Ein Wakeword wird nicht gebroadcastet. In meiner Erweiterung für Fhem im Clexi, Checke ich auf listening vom Mic.
Ob dem ein Wakeword vorausgegangen ist, sieht man daran nicht. :-)

Wäre also beides Tatsächlich interessant ja. (Wakeword selber und ON/OFF)

Ich glaube du musst doch noch mal updaten ;-) Bei mir gibt es noch das Event "sepia-wake-word" mit dem Output "state":"active/inactive/triggered"  ;D. Vielleicht hast du das Update aber auch und es fehlt nur in deiner "settings.js":

broadcast: {
"state": true,
"login": true,
"speech": true,
"wakeWord": true
}


Zitat von: whistler am 19 Juni 2020, 17:27:10
Ich kann es nicht genau sagen wann das passiert, weil steht ja auch vermutlich nichts im Log.
Oder wo sollte ich mal schauen gehen?

Ich fürchte das kann man nirgendwo ablesen :-( Es sei denn in der Konsole vom Browser gab es einen Fehler.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 19 Juni 2020, 23:42:20
Zitat von: sepia am 19 Juni 2020, 20:42:23
Ich glaube du musst doch noch mal updaten ;-) Bei mir gibt es noch das Event "sepia-wake-word" mit dem Output "state":"active/inactive/triggered"  ;D. Vielleicht hast du das Update aber auch und es fehlt nur in deiner "settings.js":

broadcast: {
"state": true,
"login": true,
"speech": true,
"wakeWord": true
}


Ich fürchte das kann man nirgendwo ablesen :-( Es sei denn in der Konsole vom Browser gab es einen Fehler.

Also jein :-) eigentlich war es schon drin, aber zumindest genau beim test pi im wohnzimmer fehlte das setting ja. ich hab aber jetzt nochmal beim server ein update laufen lassen und dann auf die clients verteilt.

Kurzfassung es geht jetzt, ich hab dazu auch schon ein neues notify gebaut, bin aber noch nicht glücklich damit.

Kurz zum Verständnis noch 2-3 Fragen die sich beim "arbeiten" immer wieder bemerkbar machen:
* wenn in der Remote Console bin, kann ich oben die URL und clexid eintragen und auf connect klicken
wenn ich das bei mehreren clients mache, sollte er dann alle verbinden? damit ich beim ping all von allen ein hello world zurück bekomme?
Wenn das so sein sollte, dann passt da noch was nicht, ich bekomme immer nur die Rückmeldung vom letzten client
Evtl. vorhanden Connects die man nicht disconnectet hat, werden beim erneuten connect aufaddiert, also ggf. doppelte Rückmeldung.

* das wakeword wird inactive, wenns getriggerd wurde, da müsste man evtl. dann nen watchdog oder timer im fhem bauen, wenn der status nicht zurück kommt.

* das mit dem logging also wenn es wakeword off geht schaue ich dann nochmal. im headless mode kriege ich mit f12 den browser auf dem client nicht auf, und kann somit da nicht reinschauen, vermutlich im kiosk mode nicht möglich.
zumindest hab ich es jetzt hinbekommen den lokalen browser einen headless client anzudocken damit ich an der console auch die events sehen kann.
aber im moment spinnt im firefox der asr und der sepia-stt da stimmt bei mir gerade was nicht, weil er nicht dran kommt.

* Android App Stichwort (Multiwakeword bzw. wakeword tauschen vermutlich auch ein Problem wie die coin.mp3 tauschen)
Dann wären zumindest alle Systeme identisch.
Planst du eine Android App zum selber compilieren?

* Thema respeaker LED, hast du da was auf der näheren Todoliste?

[EDIT]
* Wenn ich einen Timer oder eine Erinnerung setze, ist es richtig, das die nur auf dem einen Client angezeigt wird.
Auch wenn alle Systeme die gleiche uid zur Anmeldung nutzen? Beim Reload des Clients, werden dann auch abgelaufene geladen, aber nicht vorher.

Jetzt ist es doch etwas mehr geworden, aber so ist das wenn man nur mal kurz testet :-)

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 20 Juni 2020, 01:57:41
Zitat von: sepia am 19 Juni 2020, 20:42:23
Ich fürchte das kann man nirgendwo ablesen :-( Es sei denn in der Konsole vom Browser gab es einen Fehler.

Ich glaube ich habe es reproduziert.

Wakeword sagen, es wird erkannt der Mikrobutton kreist rot.
Dann nichts mehr sagen und warten. Dann geht er danach nicht automatisch wieder in den Wakeword Modus zurück.

Da es aktuell False Positive Wakeword Detections in allen Räumen gibt. Habe aber auch noch nicht rausgefunden warum.
Ich tippe mal das Alsa ist schuld :-) löst er das Wakeword aus nimmt nichts auf (da ich z.B. nicht daheim bin oder schlafe oder oder oder) Und dann macht er es aus.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 20 Juni 2020, 02:03:36
Zitat von: sepia am 19 Juni 2020, 20:42:23
Ich glaube du musst doch noch mal updaten ;-) Bei mir gibt es noch das Event "sepia-wake-word" mit dem Output "state":"active/inactive/triggered"  ;D. Vielleicht hast du das Update aber auch und es fehlt nur in deiner "settings.js":

broadcast: {
"state": true,
"login": true,
"speech": true,
"wakeWord": true
}


Ich wollte dort noch eine Erweiterung haben, nämlich die aktuelle Wakeword Liste. Also hab ich gedebugget und geschaut und wollte an der Stelle wo er im Code die "wake words: ... " ausgabe auf die Console logget mir das auch noch ausgeben lassen.

Egal was ich mache ich bekomme es nicht hin, dass es auf der Konsole auftaucht.

Folgendes hab ich mal gebaut:
SepiaFW.debug.log("WakeTriggers4 - Loaded wake words: " + JSON.stringify(ppKeywordNames));
broadcastWakeWordError("hallo hier");
broadcastWakeWordList("hallo hier");
SepiaFW.debug.log("WakeTriggers - Loaded wake words: " + JSON.stringify(ppKeywordNames));

Im Header dann noch die Error Funktion geklont:

function broadcastWakeWordList(list){
//dispatch event
var event = new CustomEvent('sepia_wake_word_list', { detail: {
msg: list,
state: "list"
}});
document.dispatchEvent(event);
}


[EDIT] Hiermit geht es dann, vermutlich wird es am Server "umgewandelt" und muss vom JSon Aufbau matchen:
function broadcastWakeWordList(list){
//dispatch event
var event = new CustomEvent('sepia_wake_word', { detail: {
msg: list,
state: "wakewordlist"
}});
document.dispatchEvent(event);
}


Eine Vermutung war, der Aufruf ist zu früh und der Clexi Server ist noch nicht da.
Aber selbst wenn ich sie ans Ende hänge passiert nichts.
[EDIT] ich habs mal mit hier reingepackt, dann passt es vom Timing
//start listening?
setTimeout(function(){


Hast du einen Tipp für mich, ich hab doch sicher nur einen kleinen Gedankenfehler gemacht.

Vielen Dank und Gute Nacht.
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 20 Juni 2020, 12:23:44
Ich habe noch ein Problem mit einem ESPRGBController.

Wenn ich diesen wie folgt an Sepia habe:
sepia-name Esstisch
sepia-room livingroom
sepia-room-index 2
sepia-state-type text_raw
sepia-type light


und dann über die Teach UI beibringen möchte auf 20% zu dimmen, sagt Sepia immer dass es einen Fehler gibt.
Wie folgt sieht der Teach UI Befehl aus:


Type jeweils extracted
When I say ... Befehl
the assistant does ... Control smart home device
Smart device (Light, Heater, ...) Esstisch
Room (living room, kitchen, ...) <livingroom>;;2
Action (on, off, set ...): <set>
Value (50%, 20°C, ...): <pct>;;20
Custom answer(s)


Auch die anderen Dimmmöglichkeiten über "dim" und "val" (anstelle von pct), funktionieren nicht.
Normales <set> <on|off> funktioniert einwandfrei.
Ich habe einen Homematic Nachbau Dimmer da funktioniert es auch mit pct einwandfrei.

Gibt es da noch irgendeinen Trick oder die Möglichkeit einen direkten Befehl an fhem zu senden wie "set <DEVICE> pct 20" ?

Edit:
Ok, Lösung gefunden:

Type jeweils extracted
When I say ... Befehl
the assistant does ... Control smart home device
Smart device (Light, Heater, ...) Esstisch
Room (living room, kitchen, ...) <livingroom>;;2
Action (on, off, set ...): <set>
Value (50%, 20°C, ...): [b]20%[/b]
Custom answer(s)


Steht ja schon im Beispiel.....
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 20 Juni 2020, 23:48:00
Zitat von: sepia am 18 Juni 2020, 13:42:54
Hi.

Die Befehle für AN/AUS und Zwischenwerte können von Gerät zu Gerät abweichen. Eventuell hilft es im ioBroker Interface bei dem Gerät selber mal hinten auf den Wert zu gucken was dieser anzeigt bei den verschiedenen Zuständen. Meine Hue Lampen nutzen z.B. nur Zahlen (0=AUS, 50=50%, für AN nutze ich 70) andere Geräte können aber durchaus auch Werte wie "on"/"off" oder "70pct" verwenden.

HTTPS bezieht sich nur auf die SSL Zertifikate des Servers, sprich das Interface in SEPIA braucht kein zusätzliches Passwort aber die URL muss auf "https" geändert werden. In meinen Tests mit ioBroker waren die SSL Zertifikate dabei meistens auf den "Hostname" des Gerätes registriert, sprich wenn der Hostname z.B. "raspberry" ist dann wird die gültige URL vermutlich "https://raspberry.local:8..." sein oder "https://raspberry:8...".
Da die SSL Zertifikate von ioBroker selbst-signiert sind muss zu guter letzt noch das Zertifikat in den "Truststore" von Java aufgenommen werden, dazu gibt es ein Skript im SEPIA/scripts Ordner und eine mini-Anleitung (https://github.com/SEPIA-Framework/sepia-docs/wiki/SSL-for-your-Server#importing-self-signed-ssl-certificates-into-sepia)

Eine SSH Verbindung kann immer nur zum Betriebssystem aufgebaut werden, also z.B. zum RaspberryPi falls du sowas benutzt. Die SEPIA Adresse ist hingegen für den Zugriff auf die HTTP/Socket Schnittstellen und den Webserver gedacht.

Meinst du ganz generell Befehle auszuführen? Dafür musst du eigentlich nichts einstellen, einfach den SEPIA Client öffnen, einloggen und sagen "Licht im Wohnzimmer" etc..
Oder meinst du vielleicht einen neuen, eigenen Befehl erstellen? Dafür gibt es verschiedene Möglichkeiten (https://github.com/SEPIA-Framework/sepia-docs/wiki/Creating-your-own-smart-service-%28aka%3A-skill-or-voice-action%29).

Ich gehe davon aus du arbeitest mit Linux?
Am Besten prüfst du erstmal ob der Server noch läuft. Dazu gehst du in den Ordner "~/SEPIA" und rufst das test Skript auf "bash test-cluster.sh".
Falls nichts läuft kannst du den Server mit "bash run-sepia.sh" oder "bash restart-sepia.sh" starten.
Um den Server beim System Reboot automatisch zu starten empfehle ich das Skript "on-reboot.sh" via Cronjob einzubinden (crontab -e). Mein Cronjob sieht z.B. so aus:

@reboot sleep 60; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;


Der erste Teil starten den Server nach dem Boot, außerdem starte ich meinen Server alle 2 Tage neu, einfach um sicher zu gehen ;-)

Hoffe das Hilft,
Grüße,
Florian

Vielen Dank erst einmal. Bin schon mal an einigen Punkten weitergekommen:
zunächst, ich habe ein Raspberry Pi4 (aktuellstes Image).

@reboot sleep 60; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;

Wie funktioniert dies genau? Ich habe im Terminal "crontab -e" ausgeführt und mittels texteditor in einem leeren Feld reinkopiert und abgespeichert. Leider hat dies keine Auswirkungen. Nach einem Neustart bleibt der Server offline.
Ich muss dann manuell den Server starten (bash restart-sepia.sh). bash run-sepia.sh geht leider nicht.

Nachdem ich den Server manuell gestartet habe, konnte ich nun über toogle (APP) die Lampen starten. Eine Frage: Ich habe "number":"50" eingegeben. Damit konnte ich den Dimmer auf 50% setzen. Kann ich auch weitere Werte angeben, z.B. dass ich sagen kann Lampe auf 30%, Lampe auf 40%, etc.?

Wie kann ich nun die Sprachbefehle ohne die App schalten? Am Raspberry auf dem der Server installiert ist, hängt ein Micro. Muss ich noch was einstellen?

Erst einmal dazu. Die anderen Probleme habe ich noch nicht in Angriff genommen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 20 Juni 2020, 23:56:21
Zitat von: whistler am 19 Juni 2020, 23:42:20
* wenn in der Remote Console bin, kann ich oben die URL und clexid eintragen und auf connect klicken
wenn ich das bei mehreren clients mache, sollte er dann alle verbinden? damit ich beim ping all von allen ein hello world zurück bekomme?
Wenn das so sein sollte, dann passt da noch was nicht, ich bekomme immer nur die Rückmeldung vom letzten client
Evtl. vorhanden Connects die man nicht disconnectet hat, werden beim erneuten connect aufaddiert, also ggf. doppelte Rückmeldung.

Es sollten sich alle verbinden, ja. Ich habe regelmäßig 2 Clients verbunden. Ich hatte allerdings auch schon mal einen komischen Bug wo irgendwas durcheinander geraten ist. Ich konnte es nicht reproduzieren aber ich vermute es passiert beim auto-reconnect wenn der CLEXI Server down war. Ein reload des Control HUB half bisher immer.
Hast du für alle Clients unterschiedliche device-IDs?

Zitat von: whistler am 19 Juni 2020, 23:42:20
* Android App Stichwort (Multiwakeword bzw. wakeword tauschen vermutlich auch ein Problem wie die coin.mp3 tauschen)
Dann wären zumindest alle Systeme identisch.
Planst du eine Android App zum selber compilieren?

Man kann die App selber kompilieren. Im sepia-html-client Repo ist alles nötige dafür da. Man muss allerdings eine Reihe von Voraussetzungen erfüllen, Android Studio z.B., Node-JS usw.. Es kann auch passieren, dass sich beim build neue Plugin Versionen installieren, die dann nicht ordentlich laufen. Ich habe da zwar die letzte, funktionierende Konfiguration der Plugins dazu gelegt, aber die muss man ggf per Hand noch mal setzen.

Zitat von: whistler am 19 Juni 2020, 23:42:20
* Thema respeaker LED, hast du da was auf der näheren Todoliste?

Gestern hatte Jemand auf GitHub folgenden Link dazu gefunden: https://github.com/snipsco/snips-skill-respeaker
Ich hätte aber eigentlich lieber was in Node-Js statt C ^^.
Hat nicht irgendjemand vielleicht mal einen MQTT Adapter gebaut dafür o.ä.? ^^

Zitat von: whistler am 19 Juni 2020, 23:42:20
* Wenn ich einen Timer oder eine Erinnerung setze, ist es richtig, das die nur auf dem einen Client angezeigt wird.
Auch wenn alle Systeme die gleiche uid zur Anmeldung nutzen? Beim Reload des Clients, werden dann auch abgelaufene geladen, aber nicht vorher.

Ja, das ist ein bekanntes Problem. Nach einer Weile müssten die auch automatisch auftauchen, weil der Client glaub alle 30min die Events neu lädt. Ich habe seit geraumer Zeit auf der To-Do Liste, dass ich da mal eine art push-update mache.

Zitat von: whistler am 20 Juni 2020, 01:57:41
Ich glaube ich habe es reproduziert.

Wakeword sagen, es wird erkannt der Mikrobutton kreist rot.
Dann nichts mehr sagen und warten. Dann geht er danach nicht automatisch wieder in den Wakeword Modus zurück.

Ok, interessant. Das müsste sich ja leicht reproduzieren lassen. Ich werde es testen :-)

Zitat von: whistler am 20 Juni 2020, 01:57:41
Hast du einen Tipp für mich, ich hab doch sicher nur einen kleinen Gedankenfehler gemacht.

Das Event sieht schon mal richtig aus, aber der "dispatch" ist ein Client internes Event.
Im Modul "sepiaFW.inputControls.cmdl.js" wird dieses Event dann wieder aufgenommen und and CLEXI gesendet.
Der short-cut wäre eventuell:

var d = {
    client: SepiaFW.config.getClientDeviceInfo(),
    deviceId: SepiaFW.config.getDeviceId()
};
d["sepia-wake-word-list"] = myList;
SepiaFW.clexi.broadcastToAll(d);


Zitat von: Nitaro am 20 Juni 2020, 12:23:44
Ich habe noch ein Problem mit einem ESPRGBController.
[...]
und dann über die Teach UI beibringen möchte auf 20% zu dimmen, sagt Sepia immer dass es einen Fehler gibt.
Wie folgt sieht der Teach UI Befehl aus:
[...]
Smart device (Light, Heater, ...) Esstisch
[/code]

Wie ich sehe hast du die Lösung schon gefunden :-) , allerdings scheint mir die Zeile oben noch falsch bei "device" müsste eigentlich "<light>;;Esstisch" stehen glaube ich. Eventuell korrigiert der da intern irgendwas wenn er den Typ "Esstisch" ablehnt. Nur so als Hinweis falls es sich komisch verhält.
Im Zweifelsfall helfen vielleicht auch die "raw" Optionen.
Falls man den Syntax nicht hinbekommt kann man auch im Control HUB auf der Seite "Assistant testing" mal rumspielen, der "Interpret" und "Understand" Button liefern ein Ergebnis aus dem man sich Sachen kopieren könnte :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 21 Juni 2020, 00:08:45
Zitat von: Jasdhewer am 20 Juni 2020, 23:48:00
@reboot sleep 60; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;

Wie funktioniert dies genau? Ich habe im Terminal "crontab -e" ausgeführt und mittels texteditor in einem leeren Feld reinkopiert und abgespeichert. Leider hat dies keine Auswirkungen. Nach einem Neustart bleibt der Server offline.
Ich muss dann manuell den Server starten (bash restart-sepia.sh). bash run-sepia.sh geht leider nicht.

Klingt erstmal richtig. Eventuell gibt es ein Problem mit dem Linux User. Hast du den Befehl mit dem selben User ausgeführt, der das Home Verzeichnis "~/SEPIA" besitzt? Vielleicht hilft ein "sudo crontab -e", das wäre aber eigentlich nicht gewollt.
"bash run-sepia.sh geht leider nicht" - oh das ist komisch, was kommt da für ein Fehler? Vielleicht hat der Cronjob doch irgendwas versucht zu starten, was dann nur halb geladen wurde.

Zitat von: Jasdhewer am 20 Juni 2020, 23:48:00
Nachdem ich den Server manuell gestartet habe, konnte ich nun über toogle (APP) die Lampen starten. Eine Frage: Ich habe "number":"50" eingegeben. Damit konnte ich den Dimmer auf 50% setzen. Kann ich auch weitere Werte angeben, z.B. dass ich sagen kann Lampe auf 30%, Lampe auf 40%, etc.?

"number": 50 steht in dem Feld "Custom Config" richtig? Mit "number": "<val>" bleibt die 50 variable. "<val>" (value) steht dabei für die erkannte User Eingabe (X %).

Zitat von: Jasdhewer am 20 Juni 2020, 23:48:00
Wie kann ich nun die Sprachbefehle ohne die App schalten? Am Raspberry auf dem der Server installiert ist, hängt ein Micro. Muss ich noch was einstellen?

Wenn du den gleichen Raspberry Pi vom Server auch für den Client nutzen willst musst du dort erst noch einen Client installieren. Das ist >hier< (https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/README.md) erklärt (nicht erschrecken es sieht komplizierter aus als es ist ^^).

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 21 Juni 2020, 00:10:39
Zitat von: sepia am 20 Juni 2020, 23:56:21
Man kann die App selber kompilieren. Im sepia-html-client Repo ist alles nötige dafür da. Man muss allerdings eine Reihe von Voraussetzungen erfüllen, Android Studio z.B., Node-JS usw.. Es kann auch passieren, dass sich beim build neue Plugin Versionen installieren, die dann nicht ordentlich laufen. Ich habe da zwar die letzte, funktionierende Konfiguration der Plugins dazu gelegt, aber die muss man ggf per Hand noch mal setzen.

Okay klingt machbar, aber ich sehe jetzt schon ein Problem bei dem ganzen customizing was ich so betreibe, vielleicht kriege ich ja das eine oder andere noch auf deine ToDo Liste, nicht weil ich mich nicht kümmern würde, aber damit es im Standard bleibt. :-) Und für andere ggf. auch sinnvoll ist.

Zitat von: sepia am 20 Juni 2020, 23:56:21
Gestern hatte Jemand auf GitHub folgenden Link dazu gefunden: https://github.com/snipsco/snips-skill-respeaker
Ich hätte aber eigentlich lieber was in Node-Js statt C ^^.
Hat nicht irgendjemand vielleicht mal einen MQTT Adapter gebaut dafür o.ä.? ^^

Ist noch nicht fertig, aber ich hab gerade hier dran gebastelt.
https://github.com/project-alice-assistant/HermesLedControl/wiki/MQTT-Topics
[EDIT]
und die Erklärung der mqtt Befehle die genutzt werden können
https://docs.snips.ai/reference/hermes#wake-word

Das nutzt das Standard hermes Protokoll per mqtt was in diversen anderen Assistenten ja drin steckt (snips / rhasspy)
da benötigt er dann Pseudo mässig die /etc/snips.toml vom snips für den mqtt connect.

dann noch per mqtt die Befehle versenden (aus meiner v2 entsprechend ins notify einschieben für Mic an und aus.

        if ($SepiaStateState eq "listening") {
fhem('set mqtt publish hermes/tts/say {"siteId": "default"}');
}
elsif ($SepiaStateState eq "idle") {
fhem('set mqtt publish hermes/tts/sayFinished {"siteId": "default"}');
}


und fertig :-)


Zitat von: sepia am 20 Juni 2020, 23:56:21
Ja, das ist ein bekanntes Problem. Nach einer Weile müssten die auch automatisch auftauchen, weil der Client glaub alle 30min die Events neu lädt. Ich habe seit geraumer Zeit auf der To-Do Liste, dass ich da mal eine art push-update mache.

würde er sie denn dann auf allen clients auch alarmieren?

Zitat von: sepia am 20 Juni 2020, 23:56:21
Ok, interessant. Das müsste sich ja leicht reproduzieren lassen. Ich werde es testen :-)

an einem zweiten client verhält es sich schon wieder anders, also nicht ganz so leicht. Zusätzlich hab ich rausgefunden, wenn man den mic knopf händisch drückt, das er danach das wakeword wieder aktiviert. :-)

Zitat von: sepia am 20 Juni 2020, 23:56:21
Das Event sieht schon mal richtig aus, aber der "dispatch" ist ein Client internes Event.
Im Modul "sepiaFW.inputControls.cmdl.js" wird dieses Event dann wieder aufgenommen und and CLEXI gesendet.
Der short-cut wäre eventuell:

var d = {
    client: SepiaFW.config.getClientDeviceInfo(),
    deviceId: SepiaFW.config.getDeviceId()
};
d["sepia-wake-word-list"] = myList;
SepiaFW.clexi.broadcastToAll(d);


Wäre die andere Variante denn Falsch bzw. bin ich ja schon im richtigen File oder?
Ich hab jetzt dein error kopiert und ein list draus gemacht, läuft einwandfrei, und gibt die Wakewords im gleichen format [ ..., ...] wie auf der console aus.

Vielleicht magst du das in den Standard übernehmen?

[EDIT]
und würde es vielleicht sinn machen, das der Broadcast die PWD nicht im Klartext ins Log schreibt :-)

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 21 Juni 2020, 09:05:20
Zitat von: sepia am 21 Juni 2020, 00:08:45
Klingt erstmal richtig. Eventuell gibt es ein Problem mit dem Linux User. Hast du den Befehl mit dem selben User ausgeführt, der das Home Verzeichnis "~/SEPIA" besitzt? Vielleicht hilft ein "sudo crontab -e", das wäre aber eigentlich nicht gewollt.
"bash run-sepia.sh geht leider nicht" - oh das ist komisch, was kommt da für ein Fehler? Vielleicht hat der Cronjob doch irgendwas versucht zu starten, was dann nur halb geladen wurde.

Wenn du den gleichen Raspberry Pi vom Server auch für den Client nutzen willst musst du dort erst noch einen Client installieren. Das ist >hier< (https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/README.md) erklärt (nicht erschrecken es sieht komplizierter aus als es ist ^^).

Grüße,
Florian

Leider hift auch kein "sudo contabe -e". Ich habe es eingetragen, aber leider nach einem Neustart startet der Server dennoch nicht.

Wenn ich für den Client die IP-Eintragen muss, wie sieht diese genau aus? Ich habe dies so eingetragen: 192.168.178.28:20721
Wenn ich nun den Clienten starten möchte, bleibt die Anzeige rot, Fehlercode 1006
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 21 Juni 2020, 11:20:12
Guten Morgen zusammen,

hch habe noch drei Fragen...

wenn ich über die Teach UI eine Aktion als User uid1005 erstelle, dann steht
diese Aktion allen zur Verfügung. Soweit so gut.
Wie kann denn ein anderer User dann einen Shortcut auf den "Homescreen" für
diese Aktion erstellen ? Im Teach UI kann man ja einen Custom Butten erstellen.
Nur taucht ja die erstellte Aktion von uid1005 nicht bei z.B. user uid1009 auf.

Gibt es einen Befehl die Aktionen von uid1007 z.B. zu uid1005 zu kopieren ?
Ich habe da eine Menge erstellt bevor ich wusste dass dies besser über 1005 gemacht wird  :-[

Der User uid1005 kann bei mir keine Smart Home Befehle umsetzen. Wenn ich einen Befehl
tippe kommt keine Antwort. Ich den User auch nicht der Rolle smarthomeguest zuordnen.
Da bekomme ich immer die Fehlermeldung:
{
  "result": "fail",
  "error": "Request is invalid, CANNOT set core-roles!"
}

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 21 Juni 2020, 20:43:27
Zitat von: whistler am 21 Juni 2020, 00:10:39
Ist noch nicht fertig, aber ich hab gerade hier dran gebastelt.
https://github.com/project-alice-assistant/HermesLedControl/wiki/MQTT-Topics
[...]
Das nutzt das Standard hermes Protokoll per mqtt was in diversen anderen Assistenten ja drin steckt (snips / rhasspy)
da benötigt er dann Pseudo mässig die /etc/snips.toml vom snips für den mqtt connect.

dann noch per mqtt die Befehle versenden (aus meiner v2 entsprechend ins notify einschieben für Mic an und aus.
[...]
und fertig :-)

Klingt cool, aber jetzt habe ich die Übersicht verloren  :o ;D
Wie genau werden diese Daten benutzt und wo wird die "snips.toml" eingebunden? Das Hermes "Protokoll" hatte ich mir übrigens auch schon mal vorsichtig angeguckt.
Ist der Weg jetzt folgender? SEPIA Client Event -> CLEXI -> MQTT -> FHEM -> ?

Zitat von: whistler am 21 Juni 2020, 00:10:39
würde er sie denn dann auf allen clients auch alarmieren?

Sobald die geladen wurden ja. Ich denke hier kommt man jetzt schnell in die Region, wo man Events über alle Clients in "real-time" synchronisieren will. Da müsste ich mal konzeptionell drüber nachdenken.

Zitat von: whistler am 21 Juni 2020, 00:10:39
an einem zweiten client verhält es sich schon wieder anders, also nicht ganz so leicht. Zusätzlich hab ich rausgefunden, wenn man den mic knopf händisch drückt, das er danach das wakeword wieder aktiviert. :-)

Das klingt nach einer harten Nuss :-/ . Wenn man das Mikrofon einmal gedrückt hat und dann wieder übers WW triggert tritt der Fehler dann erneut auf? Oder bleibt er weg?

Zitat von: whistler am 21 Juni 2020, 00:10:39
Wäre die andere Variante denn Falsch bzw. bin ich ja schon im richtigen File oder?
Ich hab jetzt dein error kopiert und ein list draus gemacht, läuft einwandfrei, und gibt die Wakewords im gleichen format [ ..., ...] wie auf der console aus.

Ja das war schon richtig nur der Rest fehlte noch ;-)

Zitat von: whistler am 21 Juni 2020, 00:10:39
Vielleicht magst du das in den Standard übernehmen?

"list" war die List mit verfügbaren Wake-Words richtig? Da das im Grunde ein fixe Einstellung des Client ist könnte ich es eventuell ins "welcome" Event des Clients packen (das was auch als "ping" Antwort kommt). Wie wäre das? :-)

Zitat von: whistler am 21 Juni 2020, 00:10:39
und würde es vielleicht sinn machen, das der Broadcast die PWD nicht im Klartext ins Log schreibt :-)

Welcher Broadcast war das?  :o ^^

Zitat von: Jasdhewer am 21 Juni 2020, 09:05:20
Leider hift auch kein "sudo contabe -e". Ich habe es eingetragen, aber leider nach einem Neustart startet der Server dennoch nicht.

Verflixt :o . Das war ein standard Raspian oder?

Zitat von: Jasdhewer am 21 Juni 2020, 09:05:20
Wenn ich für den Client die IP-Eintragen muss, wie sieht diese genau aus? Ich habe dies so eingetragen: 192.168.178.28:20721
Wenn ich nun den Clienten starten möchte, bleibt die Anzeige rot, Fehlercode 1006

Sorry, welches Feld meinst du genau? "Fehlercode 1006" klingt nach CLEXI Server?

Zitat von: Nitaro am 21 Juni 2020, 11:20:12
wenn ich über die Teach UI eine Aktion als User uid1005 erstelle, dann steht
diese Aktion allen zur Verfügung. Soweit so gut.
Wie kann denn ein anderer User dann einen Shortcut auf den "Homescreen" für
diese Aktion erstellen ? Im Teach UI kann man ja einen Custom Butten erstellen.
Nur taucht ja die erstellte Aktion von uid1005 nicht bei z.B. user uid1009 auf.

Ah, gute Frage. Diese Situation hatte ich bisher nicht ^^. Da müsste ich selber noch mal gucken. Ich glaube die momentane Antwort ist ein Button geht nur wenn der User es selber macht. Willst du, dass der Assistant User einmal den Button für alle erstellen kann?

Zitat von: Nitaro am 21 Juni 2020, 11:20:12
Gibt es einen Befehl die Aktionen von uid1007 z.B. zu uid1005 zu kopieren ?
Ich habe da eine Menge erstellt bevor ich wusste dass dies besser über 1005 gemacht wird  :-[

Sorry dafür gibt es leider kein Skript. Theoretisch kann man die Daten auf der Datenbank auslesen, modifizieren und dann zurückschreiben. Eventuelle würde man auch einen Befehl für die Datenbank finden der den User ersetzt. Aber da müsste man sich tiefer in die Materie arbeiten :-(

Zitat von: Nitaro am 21 Juni 2020, 11:20:12
Der User uid1005 kann bei mir keine Smart Home Befehle umsetzen. Wenn ich einen Befehl
tippe kommt keine Antwort. Ich den User auch nicht der Rolle smarthomeguest zuordnen.
Da bekomme ich immer die Fehlermeldung:
{
  "result": "fail",
  "error": "Request is invalid, CANNOT set core-roles!"
}


Ja, aus Sicherheitsgründen dürfen die "core" User (Admin und Assistant) diese Befehle nicht ausführen. Damit will ich auch verhindern, dass diese User irgendwo benutzt werden wo eigentlich "echte" User vorgesehen sind.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 21 Juni 2020, 21:07:32
Zitat von: sepia am 21 Juni 2020, 20:43:27
Klingt cool, aber jetzt habe ich die Übersicht verloren  :o ;D
Wie genau werden diese Daten benutzt und wo wird die "snips.toml" eingebunden? Das Hermes "Protokoll" hatte ich mir übrigens auch schon mal vorsichtig angeguckt.
Ist der Weg jetzt folgender? SEPIA Client Event -> CLEXI -> MQTT -> FHEM -> ?

Ja genau das ist der Weg. SEPIA Client Event -> CLEXI -> MQTT -> FHEM -> ? Dann wird es in Readings geschrieben. (siehe meine V2 Doku)
Danach kann man dann per notify auf das triggered oder mic listening reagieren und entsprechend ein mqtt commando wieder losschicken in richtung leds.

die snips.toml wird innerhalb des projects benötigt und liegt unter /etc/snips.toml (das ist quasi das settings files von snips, wie deine settings.js)
normale wäre der snips client installiert und die würde eh da liegen.
alternative kann man auch rhasspy als muster anbindung nehmen, da die Installation im wiki eigentlich recht gut erklärt wird, hab ich das nur als stichpunkt erklärt gehabt.

Ich bin mir gerade nicht sicher ob das der korrekte "Alexa" weg ist, sprich wie Alexa reagieren würde mit den Leds, mic geht an, leds blinken, bis zum mic idle. (Ich hab das Alexa pattern genommen).

Zitat von: sepia am 21 Juni 2020, 20:43:27
Sobald die geladen wurden ja. Ich denke hier kommt man jetzt schnell in die Region, wo man Events über alle Clients in "real-time" synchronisieren will. Da müsste ich mal konzeptionell drüber nachdenken.

War nur eine Frage, ja wäre natürlich nice, aber ich hatte den Fall das ich mal nen Timer von ner stunde hatte und der hat nur beim "ersteller" erinnert, aber nicht z.b. auch am handy oder so. (wäre ja dein 30 Minuten Timer) zum Sync lang genug gewesen.

Zitat von: sepia am 21 Juni 2020, 20:43:27
Das klingt nach einer harten Nuss :-/ . Wenn man das Mikrofon einmal gedrückt hat und dann wieder übers WW triggert tritt der Fehler dann erneut auf? Oder bleibt er weg?

Mal so mal so, also diese Wakeword dinger hören auf zu blinken, ich bin mir gerade nichtmal sicher ob sauber das wakeword inactive ausgelöst wird. Müsste ich nochmal schauen. Dann löst man das Mic aus, er nimmt auf und dann hört das mic auf, dann greift das wakeword wieder.

Zitat von: sepia am 21 Juni 2020, 20:43:27
Ja das war schon richtig nur der Rest fehlte noch ;-)
Okay es funktionierte aber komischeweise trotzdem :-)

Zitat von: sepia am 21 Juni 2020, 20:43:27
"list" war die List mit verfügbaren Wake-Words richtig? Da das im Grunde ein fixe Einstellung des Client ist könnte ich es eventuell ins "welcome" Event des Clients packen (das was auch als "ping" Antwort kommt). Wie wäre das? :-)

Das heisst während des initalisierens des Client würdest du das im "Init" mit reinladen. Ja das wäre nice, nur was sprechend das man das auch schön per json identifizieren kann im Broadcast. Ich würde auch testen dann.

Welcher Broadcast war das?  :o ^^

du machst ein "call login user uid1007 pwd xxxxxxxxx"
dann bekommst du zwei antworten. Eine davon ist loginSuccess und dann kommt die rückmeldung wo PWD inkl. dem Passwort im Klartext drin steht.

Zitat von: sepia am 21 Juni 2020, 20:43:27
Ja, aus Sicherheitsgründen dürfen die "core" User (Admin und Assistant) diese Befehle nicht ausführen. Damit will ich auch verhindern, dass diese User irgendwo benutzt werden wo eigentlich "echte" User vorgesehen sind.

ich hab dazu auch noch eine kurze Frage, sollte der uid1005 User ein Passwort haben? Vermutlich schon, wenn man sich an die GUI anmelden kann.
Kann ich das reseten? (Weil ich es scheinbar nicht aktualisiert hatte (im PW Manager) und es nicht mehr kenne, sofern man sich damit anmelden kann.
[/quote]

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 21 Juni 2020, 23:32:10
Zitat von: whistler am 21 Juni 2020, 21:07:32
die snips.toml wird innerhalb des projects benötigt und liegt unter /etc/snips.toml (das ist quasi das settings files von snips, wie deine settings.js)
normale wäre der snips client installiert und die würde eh da liegen.

Ok, verstanden :-) Nur eins noch: dieses Snips LED Tool (https://github.com/snipsco/snips-skill-respeaker) läuft quasi autonom und braucht dann nur die snips.toml?

Zitat von: whistler am 21 Juni 2020, 21:07:32
War nur eine Frage, ja wäre natürlich nice, aber ich hatte den Fall das ich mal nen Timer von ner stunde hatte und der hat nur beim "ersteller" erinnert, aber nicht z.b. auch am handy oder so. (wäre ja dein 30 Minuten Timer) zum Sync lang genug gewesen.

Gerade mal schnell geguckt. Das Auto-Update steht auf 1 Stunde ::)
Vielleicht schiebe ich den Timer-Sync mal etwas nach oben auf der To-Do Liste ^^.

Zitat von: whistler am 21 Juni 2020, 21:07:32
Mal so mal so, also diese Wakeword dinger hören auf zu blinken, ich bin mir gerade nichtmal sicher ob sauber das wakeword inactive ausgelöst wird. Müsste ich nochmal schauen.

Ich muss mich auch mal intensiver damit beschäftigen. Ich frage mich warum das bei mir bisher kein Problem war. Wobei das wahrscheinlich daran liegt, dass ich weniger "herrenlose" Wake-Word Trigger habe und wahrscheinlich auch weil ich ab und an mal den Trigger via Bluetooth auslöse :-\

Zitat von: whistler am 21 Juni 2020, 21:07:32
Das heisst während des initalisierens des Client würdest du das im "Init" mit reinladen. Ja das wäre nice, nur was sprechend das man das auch schön per json identifizieren kann im Broadcast. Ich würde auch testen dann.

Wann wurde das Event noch mal getriggert bei dir, also wann wurde die Liste gesendet?
Grundsätzlich will ich gerne das Prinzip beibehalten, dass Events nur gesendet werden, wenn sich der Status des Clients ändert und Konfigurationen auf Abfrage bereitstehen.

Zitat von: whistler am 21 Juni 2020, 21:07:32
du machst ein "call login user uid1007 pwd xxxxxxxxx"
dann bekommst du zwei antworten. Eine davon ist loginSuccess und dann kommt die rückmeldung wo PWD inkl. dem Passwort im Klartext drin steht.

Ach so ja, das Login Event ;D ... und das wird jetzt bei dir auch via MQTT weitergegeben? :-X
Bisher war das nicht kritisch, weil der CLEXI Server selber kein Log führt.

Zitat von: whistler am 21 Juni 2020, 21:07:32
ich hab dazu auch noch eine kurze Frage, sollte der uid1005 User ein Passwort haben? Vermutlich schon, wenn man sich an die GUI anmelden kann.
Kann ich das reseten? (Weil ich es scheinbar nicht aktualisiert hatte (im PW Manager) und es nicht mehr kenne, sofern man sich damit anmelden kann.

Ja, das Passwort wird beim SEPIA Server Setup definiert, direkt nach dem Admin Passwort. Im Setup Skript ist auch die Reset Option.

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 21 Juni 2020, 23:38:49
Zitat von: TRallala am 18 Juni 2020, 21:50:47
Aber dazu kannst du vielleicht noch etwas aufklären, was genau der unterschied zwischen elastic und file bedeutet; sprich was wird in welchem modus benutzt; wie wird elastic "befüllt"?

Mir ist dazu gerade noch was eingefallen, als ich selber was im SEPIA Setup gesucht habe.
Bei dem ersten Setup vom SEPIA Server werden alle Antworten in die Elasticsearch importiert. Ich hatte vorher fälschlicherweise gesagt, dass die ES leer ist. Das stimmt nicht!
Man kann die Initialisierung des "answers" Indexes auch manuell neu triggern. Falls da noch Interesse besteht kann ich mal den Commandline Befehl raussuchen ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 22 Juni 2020, 07:53:32
Ah, gute Frage. Diese Situation hatte ich bisher nicht ^^. Da müsste ich selber noch mal gucken. Ich glaube die momentane Antwort ist ein Button geht nur wenn der User es selber macht. Willst du, dass der Assistant User einmal den Button für alle erstellen kann?

Ja, genau. Ich dachte der Assistant User erstellt über die Teach UI eine Aktion und wenn damit ein Button angelegt wird, dass der dann auch allen Usern zur Verfügung steht.
Gut wäre auch, wenn die anderen User eine Übersicht der möglichen Befehle hätten. Aber das kann ja mal auf die nice to have Liste.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 22 Juni 2020, 08:17:02
Zitat von: Nitaro am 22 Juni 2020, 07:53:32
Ja, genau. Ich dachte der Assistant User erstellt über die Teach UI eine Aktion und wenn damit ein Button angelegt wird, dass der dann auch allen Usern zur Verfügung steht.
Gut wäre auch, wenn die anderen User eine Übersicht der möglichen Befehle hätten. Aber das kann ja mal auf die nice to have Liste.

Macht Sinn! Habs mal für die nächste Version auf die To-Do Liste gesetzt :-)
Ich überlege auch mal wie man das mit der Übersicht hinkriegen könnte. Es gibt einen Server Endpoint, der eigentlich dazu gedacht war aus den eigenen Befehlen das Sprachmodell für die offene Spracherkennung zu trainieren ... vielleicht kann ich den etwas anpassen und dann auch dafür nutzen ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 22 Juni 2020, 10:55:50
Zitat von: sepia am 21 Juni 2020, 20:43:27

Verflixt :o . Das war ein standard Raspian oder?

Sorry, welches Feld meinst du genau? "Fehlercode 1006" klingt nach CLEXI Server?


Genau, ein ganz normales Raspbian Image mit Desktop Variante.
Was mir aufgefallen ist. Nachdem ich den Pi neugestartet habe, konnte ich den server nicht starten (run.server.bat?!) Kam ein Fail. Nach einigen Minuten habe ich es noch mal versucht und es ging danach. Kann es sein, dass einige Komponenten beim Neustart noch nicht geladen sind, sodass die Module von SEPIA ebenfalls nicht geladen werden kann? Könnte vielleicht eine zeitverzögerung beim Laden der Module abhilfe schaffen? Wie würde dies aussehen? Habe leider keine Ahnung davon...

"Run SEPIA Client Setup

    Run bash setup.sh from the ~/sepia-client folder
    Set SEPIA server host address (as you would inside your SEPIA app login box)
    Optional: Define a unique device ID (default is 'o1', Android apps have 'a1' and browsers 'b1' by default)
    Optional: Define a new CLEXI-ID (this can be used as password for the remote terminal later, default is: clexi-123)
    Finish your setup by setting automatic login via sudo raspi-config (Boot options - Desktop/CLI - Console Autologin)
    Reboot your system
    Your headless client should automatically start and notify you via a short audio message that he'll be "right there"
"

Nach dieser Anleitung bin ich vorgegangen. Beim Punkt "Set SEPIA server host address" soll ich die Adresse eintragen und meine Frage war, wie genau soll dies aussehen. So?: http://192.168.178.28:20721/tools/index.html#!home
Bei "Boot optionen" habe ich "Console Desktop Autologin" eingestellt.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 22 Juni 2020, 11:20:18
Zitat
ZitatZitat von: TRallala am 19 Juni 2020, 11:10:37

    das löschen des Services hat leider nicht funktioniert.
    Log wird weiter zugemüllt - auch das file neu anlegen und dann zu löschen hat nicht funktioniert.
    Komischerweise bekomme ich jetzt aber auch bei jedem Service den ich als uid1007 hochladen will fehler 401 not authorized  :-/


Oh, komisch. Das klingt mir aber wie zwei unabhängige Fehler. War der alte Service vielleicht mit uid1005 hochgeladen? Hat uid1007 die Rolle "developer"?

gut möglich, dass ich versucht habe den alten service 2x hochzuladen.
Mittlerweilse bin ich alles:  user,smarthomeguest,developer,chiefdev,seniordev
macht nur leider keinen Unterschied.

ZitatroomTypeLocal.replaceAll(".*(der|dem|das|im|the)", "")
jap, so ähnlich hab ichs dann auch gelöst:

roomTypeLocal = roomTypeLocal.replaceAll(".*(der|dem|das|in|auf|dem|am|im|the)\\b\\s", "");
roomType_new = ("zone" + " " + roomTypeLocal);



Zitat
ZitatZitat von: TRallala am 19 Juni 2020, 11:10:37

    hab nich mal daran versucht - funktioniert auch so halb. "Problem" ist, dass lastCmd anscheinend nicht mehr den rawInput beinhaltet, sondern, was sepia draus gemacht hat:
    Eingabe siehe anhang.  per mqtt kommnt an: [...]


Ja genau, das ist der abstrahierte Befehl. Welches Format brauchst du? Dann könnte ich dir zeigen wie man es konvertiert.

"einfach" wieder in die ursprungsform. also quasi NluInput.textRaw.


und noch ein Vorschlag für die toDo Liste: würde gerne die action "in/decrease" (die ja schon erfolgreich als aktion erkannt wird) als smart_device_value nutzen können.
something like:

"action": {
      "value_local": "runtersetzen",
      "value": "<decrease>"
    },

==>
    "smart_device_value": {
      "input": "runtersetzen",
      "type": "text_raw",
      "value": "down"
    },


über sepia-set-cmds dann so etwas wie

{"number":"pct <val>","enable":"laut","disable":"leise","increase":"lauter","decrease":"leiser"}
{"number":"pct <val>",increase":"open","decrease":"closed"}


es sei denn ich steh mal wieder auf dem schlauch und das geht schon (ausser über die teach ui)

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 22 Juni 2020, 18:41:42
Zitat von: sepia am 21 Juni 2020, 23:32:10
Ok, verstanden :-) Nur eins noch: dieses Snips LED Tool (https://github.com/snipsco/snips-skill-respeaker) läuft quasi autonom und braucht dann nur die snips.toml?

ja genau, ich hatte mir das auch nur aus dem wiki zusammen gezogen. ich hab dir mal ne config mit zwei kommentaren (###) angehängt.
[EDIT]
Oder das hier als Beispiel:
https://forum.iobroker.net/topic/28411/rhasspy-offline-sprachsteuerung/87
brauch nur etwas python, und ist sogar anpassbar, vorteil man kann verschieden patterns mixen und ausgeben

Zitat von: sepia am 21 Juni 2020, 23:32:10
Gerade mal schnell geguckt. Das Auto-Update steht auf 1 Stunde ::)
Vielleicht schiebe ich den Timer-Sync mal etwas nach oben auf der To-Do Liste ^^.

wo wird es denn eingestellt? :-)

Zitat von: sepia am 21 Juni 2020, 23:32:10
Ich muss mich auch mal intensiver damit beschäftigen. Ich frage mich warum das bei mir bisher kein Problem war. Wobei das wahrscheinlich daran liegt, dass ich weniger "herrenlose" Wake-Word Trigger habe und wahrscheinlich auch weil ich ab und an mal den Trigger via Bluetooth auslöse :-\

na so herrenlos sind sie auch nicht, spannend ist, es löst auch aus im bad, auch während ich schlafe :-) da ist also keine quelle vorhanden :)
spannend ist, es wird auch immer das letzte wakeword dann ausgelöst, das heisst, nicht irgendeins der (5) sondern immer das was ich zuletzt gesprochen hatte.
du broadcastest ja auch das letzte getriggerte word mit.

Zitat von: sepia am 21 Juni 2020, 23:32:10
Wann wurde das Event noch mal getriggert bei dir, also wann wurde die Liste gesendet?
Grundsätzlich will ich gerne das Prinzip beibehalten, dass Events nur gesendet werden, wenn sich der Status des Clients ändert und Konfigurationen auf Abfrage bereitstehen.

Ich hab es uns mal einfacher gemacht, dann kannst du sehen was ich da verbrochen habe. Mir ist noch nicht ganz klar, was dann besser oder anders läuft, mit dem zusatz :-) Ausser das es vermutlich Code Design mässig schöner ist :-)
Ich hab dir die broadcaster auch nochmal mitgeschickt, wo der mqtt zauber stattfindet.
Damit werden alle events die du so auslöst per mqtt verschickt. im fhem wird dann das json in readings (stichwort ej3) zerlegt.

[EDIT]
das list sollte wohl auch ein eigentes "objekt" kriegen, da es beim gleichzeitigen auslösen von active oder so zu schnell durchläuft und er kriegt das json nicht extrahiert. aktuell überspringt er schon mal das active, weil die zwei direkt hintereinander kommen.

Zitat von: sepia am 21 Juni 2020, 23:32:10
Ach so ja, das Login Event ;D ... und das wird jetzt bei dir auch via MQTT weitergegeben? :-X
Bisher war das nicht kritisch, weil der CLEXI Server selber kein Log führt.

ich gebe alles weiter was es gibt, da ich mich ja in deine broadcast funktion einfach eingehängt habe.

Daher hatte ich ja auch die Idee beim MQTTDemo, einfach alles parallel weitergeben.
Ich hab allerdings die aktuelle mqtt sample der anderen Mitstreiter nicht genau verfolgt und den überblick verloren.

Zitat von: sepia am 21 Juni 2020, 23:32:10
Ja, das Passwort wird beim SEPIA Server Setup definiert, direkt nach dem Admin Passwort. Im Setup Skript ist auch die Reset Option.

Dann schau ich mal ob ich das resetted kriege damit ich den user wieder im griff habe.

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 22 Juni 2020, 23:48:43
Zitat von: Jasdhewer am 22 Juni 2020, 10:55:50
Was mir aufgefallen ist. Nachdem ich den Pi neugestartet habe, konnte ich den server nicht starten (run.server.bat?!) Kam ein Fail. Nach einigen Minuten habe ich es noch mal versucht und es ging danach.

War das wirklich die .bat Datei? Die ist eigentlich für Windows und sollte generell nicht funktionieren. Ich vermute aber du meinst die .sh.

Zitat von: Jasdhewer am 22 Juni 2020, 10:55:50
Kann es sein, dass einige Komponenten beim Neustart noch nicht geladen sind, sodass die Module von SEPIA ebenfalls nicht geladen werden kann? Könnte vielleicht eine zeitverzögerung beim Laden der Module abhilfe schaffen? Wie würde dies aussehen? Habe leider keine Ahnung davon...

Der vorgeschlagene Cronjob von SEPIA sieht eine 60s Wartezeit vor nach dem Reboot. Ob die wirklich nötig ist habe ich ehrlich gesagt nie getestet, aber alle RPis kamen damit bisher klar. Bei der Desktop Variante bin ich nicht sicher. Vielleicht lädt da noch mehr.

Zitat von: Jasdhewer am 22 Juni 2020, 10:55:50
[...]
Your headless client should automatically start and notify you via a short audio message that he'll be "right there"

Nach dieser Anleitung bin ich vorgegangen. Beim Punkt "Set SEPIA server host address" soll ich die Adresse eintragen und meine Frage war, wie genau soll dies aussehen. So?

Ach so bei diesem Schritt :-) . Das ist die gleiche Adresse, die du z.B. auch in der App benutzt um auf den SEPIA Server zu zeigen. Im einfachsten Fall z.B.: "192.168.0.10" (also die einfache IP des SEPIA Servers) oder in vollem Betrieb (Hostname + Proxy + SSL) z.B.: "https://sepia.local:20726/sepia". Kleinere Abweichungen korrigiert der Server Check automatisch.

Zitat von: TRallala am 22 Juni 2020, 11:20:18
gut möglich, dass ich versucht habe den alten service 2x hochzuladen.
Mittlerweilse bin ich alles:  user,smarthomeguest,developer,chiefdev,seniordev
macht nur leider keinen Unterschied.

Alle diese Rollen und trotzdem kommt beim Service Upload ein 401? :o Gibt es noch irgendeinen Kommentar dazu oder einen Log Eintrag (Assist-Server)?
Kannst du mit einem frischen User (+ developer Rolle) einen Service hochladen?

Zitat von: TRallala am 22 Juni 2020, 11:20:18
"einfach" wieder in die ursprungsform. also quasi NluInput.textRaw.

Der raw text ist da leider nicht mehr drin, nur noch der verarbeitete Befehl :-X

Zitat von: TRallala am 22 Juni 2020, 11:20:18
und noch ein Vorschlag für die toDo Liste: würde gerne die action "in/decrease" (die ja schon erfolgreich als aktion erkannt wird) als smart_device_value nutzen können.
something like:
[...]
über sepia-set-cmds dann so etwas wie
[...]
{"number":"pct <val>","enable":"laut","disable":"leise","increase":"lauter","decrease":"leiser"}
{"number":"pct <val>",increase":"open","decrease":"closed"}


Stimmt, ja. Ich glaube das steht sogar noch als "TODO" mitten im Smart Home Service ;D
Ist notiert.

Zitat von: whistler am 22 Juni 2020, 18:41:42
ja genau, ich hatte mir das auch nur aus dem wiki zusammen gezogen. ich hab dir mal ne config mit zwei kommentaren (###) angehängt.
[EDIT]
Oder das hier als Beispiel:
https://forum.iobroker.net/topic/28411/rhasspy-offline-sprachsteuerung/87
brauch nur etwas python, und ist sogar anpassbar, vorteil man kann verschieden patterns mixen und ausgeben

Cool, danke. Ich komme gerade nicht nach mit ausprobieren :-[ aber habs auf der Roadmap! ;-)

Zitat von: whistler am 22 Juni 2020, 18:41:42
wo wird es denn eingestellt? :-)

Im UI Client Modul. Habs gerade nicht im Kopf, aber sowas ähnliches wie "SepiaFW.ui.myViewUpdateDelay".

Zitat von: whistler am 22 Juni 2020, 18:41:42
spannend ist, es wird auch immer das letzte wakeword dann ausgelöst, das heisst, nicht irgendeins der (5) sondern immer das was ich zuletzt gesprochen hatte.
du broadcastest ja auch das letzte getriggerte word mit.

Ok das ist echt kurios oO.

Zitat von: whistler am 22 Juni 2020, 18:41:42
Ich hab es uns mal einfacher gemacht, dann kannst du sehen was ich da verbrochen habe. Mir ist noch nicht ganz klar, was dann besser oder anders läuft, mit dem zusatz :-) Ausser das es vermutlich Code Design mässig schöner ist :-)
Ich hab dir die broadcaster auch nochmal mitgeschickt, wo der mqtt zauber stattfindet.
Damit werden alle events die du so auslöst per mqtt verschickt. im fhem wird dann das json in readings (stichwort ej3) zerlegt.
[...]

Habs mir alles abgespeichert, danke :-)

[EDIT]
@Basti:

Können wir die Themen "CLEXI -> MQTT" und "ReSpeaker LED" in zwei GitHub Issues verschieben? Ich habe etwas Schwierigkeiten gerade die Themen ordentlich zu strukturieren ;-)
Du kannst da gerne auch auf Deutsch schreiben, machen eh schon viele ^^.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 23 Juni 2020, 00:15:08
Zitat von: sepia am 22 Juni 2020, 23:48:43
Habs mir alles abgespeichert, danke :-)

[EDIT]
@Basti:

Können wir die Themen "CLEXI -> MQTT" und "ReSpeaker LED" in zwei GitHub Issues verschieben? Ich habe etwas Schwierigkeiten gerade die Themen ordentlich zu strukturieren ;-)
Du kannst da gerne auch auf Deutsch schreiben, machen eh schon viele ^^.

ich hatte vorhin so einen ähnlichen gedanken. :-) Ja dann muss ich mir da wohl doch mal nen account anlegen :-)

Eins noch damit ich es nicht bis morgen vergessen :-)
du hast ein listening dann idle / speaking dann idle -> Das Problem das kommt als idle an und ich weiss nicht welches.
Meinst du es macht sinn das idle nochmal zu teilen, sonst muss ich mir was im fhem überlegen.

Danke und Gute Nacht :-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 23 Juni 2020, 10:41:36
@sepia

ich habe gestern noch mal den Raspberry Pi neugestartet und direkt den Befehl ausgeführt. Bekomme dann folgenden Fehler:

Waiting for Elasticsearch on port 20724 ...
...............................TIMEOUT - process took too long!
Checking Elasticsearch setup ...
Elasticsearch is NOT yet setup (or not running with default settings)! Run setup.sh first.

Wenn ich dann einige Zeit warte, dann kann ich mit dem selben Befehl (run...sh) den Server starten. Ich versuche später mal die Zeit auf 5 Minuten zu verändern. Vlt. sollte dann der Server beim reboot starten.
Die Einstellungen dafür würden dann so aussehen?

@reboot sleep 300; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;

Nun zum Clienten. Leider geht es immer noch nicht. Hier mal genau die Schrittfolge, die ich durchlaufen habe:

Ich gehe zunächst auf "http://192.168.178.28:20721/tools/index.html#!home" (controll Hub). Dort sehe ich dann Authentication Server
Assist Server
Teach Server
jeweils mit der Adresse "http://192.168.178.28:20721" (hinten jeweils nur ein anderen Port).

Im Terminal dann "bash setup.sh" gestartet und dort bekomme ich dann folgendes angezeigt:

1: Change CLEXI ID (in CLEXI config and SEPIA Client settings.js)
2: Set SEPIA Client mode to 'headless'
3: Set SEPIA Client mode to 'pseudo-headless' (headless settings + display)
4: Set SEPIA Client mode to 'display'
5: Enter hostname of your SEPIA Server
6: Set SEPIA Client device ID
7: Activate CLEXI Bluetooth support

Unter Punkt 5 habe ich dann 192.168.178.28 eingetragen. Sonst habe ich hier nichts ein verändert.

Dann sudo raspi-config ausgeführt und dort "Boot options - Desktop/CLI - Desktop Autologin" eingestellt.

Wieder in den Controll Hub gewechselt und unter Client folgendes eingestellt:

URL: ws://192.168.178.28:9090/clexi
ID: clexi-123

Aber leider geht es nicht.

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 23 Juni 2020, 14:41:53
ZitatAlle diese Rollen und trotzdem kommt beim Service Upload ein 401? :o Gibt es noch irgendeinen Kommentar dazu oder einen Log Eintrag (Assist-Server)?
Kannst du mit einem frischen User (+ developer Rolle) einen Service hochladen?

nope. neuen user uid1009 angelegt, developer rolle verpasst, error 401. 
das Log zeigt NULL an.  die änderung der Rolle ist noch drin, dannach kommt nichts.  :-\

ZitatDer raw text ist da leider nicht mehr drin, nur noch der verarbeitete Befehl :-X
das habe ich befürchtet. damit ists leider unbrauchbar  :(

___

@Jasdhewer

Ich habe gestern Abend auch mal angefangen einen headless client zu testen.
und stoße ebenfalls auf ein paar Probleme.

- welchen pi nutzt du?
- hast du ein display/monitor an deinem sepia server/client?
- hast du den client modus geändert? (0: display, 1: headless, 2: pseudo-headless)
- nach
ZitatUnter Punkt 5 habe ich dann 192.168.178.28 eingetragen.
startest du den client wie genau? wie ist die ausgabe im terminal?
- wie ist die ausgabe von /home/pi/sepia-client/status.sh ?

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 23 Juni 2020, 19:54:25
Zitat von: TRallala am 23 Juni 2020, 14:41:53
nope. neuen user uid1009 angelegt, developer rolle verpasst, error 401. 
das Log zeigt NULL an.  die änderung der Rolle ist noch drin, dannach kommt nichts.  :-\
das habe ich befürchtet. damit ists leider unbrauchbar  :(

___

@Jasdhewer

Ich habe gestern Abend auch mal angefangen einen headless client zu testen.
und stoße ebenfalls auf ein paar Probleme.

- welchen pi nutzt du?
- hast du ein display/monitor an deinem sepia server/client?
- hast du den client modus geändert? (0: display, 1: headless, 2: pseudo-headless)
- nach    startest du den client wie genau? wie ist die ausgabe im terminal?
- wie ist die ausgabe von /home/pi/sepia-client/status.sh ?

Hi,
- Raspberry Pi4
- Ich habe zwei Monitore angeschlossen.
- Am Client modus habe ich nichts geändert
- Zum starten komme ich ja leider nicht. Ich versuche über die Adresse "http://192.168.178.28:20721/tools/index.html#!client-connections" am Raspberry die Verbindung herzustellen (button "connect") --> der button wird kurz gelb, springt dann aber wieder auf Rot.
- Habe im Terminal folgendes eingegeben:
pi@raspberrypi:~ $ cd /home/pi/sepia-client
pi@raspberrypi:~/sepia-client $ status.sh
-bash: status.sh: Kommando nicht gefunden.

Die Datei ist vorhanden und mittels Texteditor konnte ich sehen, dass auch Inhalte in der Datei geschrieben sind.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 23 Juni 2020, 20:28:37
Zitatpi@raspberrypi:~/sepia-client $ status.sh
-bash: status.sh: Kommando nicht gefunden.

führe mal aus:
chmod +x ~/sepia-client/*.sh  hilft.
oder
bash /home/pi/sepia-client/status.sh
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 23 Juni 2020, 22:46:45
Zitat von: TRallala am 23 Juni 2020, 20:28:37
führe mal aus:
chmod +x ~/sepia-client/*.sh  hilft.
oder
bash /home/pi/sepia-client/status.sh

gebe ich zweiten Befehl ein, bekomme ich folgendes:

"Chromium with SEPIA is: active
Xvfb server is: active
CLEXI server is: active"
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 24 Juni 2020, 08:48:58
Zitat von: Jasdhewer am 23 Juni 2020, 10:41:36
Wenn ich dann einige Zeit warte, dann kann ich mit dem selben Befehl (run...sh) den Server starten. Ich versuche später mal die Zeit auf 5 Minuten zu verändern. Vlt. sollte dann der Server beim reboot starten.
Die Einstellungen dafür würden dann so aussehen?

@reboot sleep 300; ~/SEPIA/on-reboot.sh;
30 4 1-31/2 * * ~/SEPIA/cronjob.sh;

Korrekt. Wie läuft das genau bei dir, du bootest in den Desktop um den RPi dann dort weiter zu nutzen oder läuft alles eigentlich nur im Hintergrund?
Statt einen Crontab anzulegen könnte man auch die '~/.bashrc' editieren, die wird geladen nach dem User Login.

Zitat von: Jasdhewer am 23 Juni 2020, 10:41:36
Nun zum Clienten. Leider geht es immer noch nicht. Hier mal genau die Schrittfolge, die ich durchlaufen habe:
[...]
Im Terminal dann "bash setup.sh" gestartet und dort bekomme ich dann folgendes angezeigt:
[...]
5: Enter hostname of your SEPIA Server
6: Set SEPIA Client device ID
7: Activate CLEXI Bluetooth support

Unter Punkt 5 habe ich dann 192.168.178.28 eingetragen. Sonst habe ich hier nichts ein verändert.

Dann sudo raspi-config ausgeführt und dort "Boot options - Desktop/CLI - Desktop Autologin" eingestellt.

Wieder in den Controll Hub gewechselt und unter Client folgendes eingestellt:

URL: ws://192.168.178.28:9090/clexi
ID: clexi-123

Aber leider geht es nicht.

Wie war das noch mal, Server und Client laufen bei dir beide auf dem selben RPi4?
Falls ja, dann kannst du bei "5: Enter hostname of your SEPIA Server" am besten "localhost" nehmen.  Deine aktuelle Einstellung müsste aber auch gehen.
Lädst du den Control HUB über den Desktop vom selben RPi4? Oder über einen anderen PC? Falls es der Selbe ist kannst du hier auch mal "localhost" versuchen.
Das Problem scheint zu sein, dass die Verbindung zum CLEXI Server nicht klappt. Welche Fehlermeldung kam da zurück?

Zitat von: Jasdhewer am 23 Juni 2020, 10:41:36
gebe ich zweiten Befehl ein, bekomme ich folgendes:

"Chromium with SEPIA is: active
Xvfb server is: active
CLEXI server is: active"

Das sieht schon mal gut aus. Eventuell lohnt sich noch ein Blick in die '~/clexi/log.out'.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 24 Juni 2020, 09:17:40
Zitat von: TRallala am 23 Juni 2020, 14:41:53
nope. neuen user uid1009 angelegt, developer rolle verpasst, error 401. 
das Log zeigt NULL an.  die änderung der Rolle ist noch drin, dannach kommt nichts.  :-\

Oh ha, ich frage mich was da wohl im Argen liegt. 401 deutet eigentlich auf ein Einstellungsproblem hin. Wenn es eine Folge ist von dem fehlgeschlagenen Löschprozess würde ich 500 erwarten und einen Error im Log. Wenn absolut gar nichts im Log steht kann das eigentlich nur heißen er bricht schon bei der User Authentifizierung ab, sprich der "uid1009" war gar nicht erst aktiv :o . Nach der Änderung der Rolle hattest du dich vom Admin ausgeloggt und dann frisch eingeloggt mit "uid1009" was auch geklappt hatte?

Zitat von: TRallala am 23 Juni 2020, 14:41:53
das habe ich befürchtet. damit ists leider unbrauchbar  :(

Habs auf dem Schirm ;-)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 24 Juni 2020, 09:21:04
Zitat von: whistler am 23 Juni 2020, 00:15:08
ich hatte vorhin so einen ähnlichen gedanken. :-) Ja dann muss ich mir da wohl doch mal nen account anlegen :-)

Ja mach das mal  ;D

Zitat von: whistler am 23 Juni 2020, 00:15:08
Eins noch damit ich es nicht bis morgen vergessen :-)
du hast ein listening dann idle / speaking dann idle -> Das Problem das kommt als idle an und ich weiss nicht welches.
Meinst du es macht sinn das idle nochmal zu teilen, sonst muss ich mir was im fhem überlegen.

Hast du die Information nicht im Empfänger, welches Event vor "idle" kam? Inwiefern ist das relevant für die Aktion?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 24 Juni 2020, 21:07:27
Zitat von: sepia am 24 Juni 2020, 09:21:04
Ja mach das mal  ;D

Hast du die Information nicht im Empfänger, welches Event vor "idle" kam? Inwiefern ist das relevant für die Aktion?

Es kommt einmal speaking dann idle und einmal mic dann idle

relevant wenn mic idle löse ich den led blinken auf. beim speaking könnte man nicht was auslösen und beim passenden idle wieder auflösen.

Und ja ich kann zur not was tricksen. aber die json strings werden auch schön im fhem ins log geschrieben. ist für die fehlersuche recht nice :-)

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 24 Juni 2020, 21:44:14
Zitat von: sepia am 24 Juni 2020, 08:48:58
Korrekt. Wie läuft das genau bei dir, du bootest in den Desktop um den RPi dann dort weiter zu nutzen oder läuft alles eigentlich nur im Hintergrund?
Statt einen Crontab anzulegen könnte man auch die '~/.bashrc' editieren, die wird geladen nach dem User Login.

Wie war das noch mal, Server und Client laufen bei dir beide auf dem selben RPi4?
Falls ja, dann kannst du bei "5: Enter hostname of your SEPIA Server" am besten "localhost" nehmen.  Deine aktuelle Einstellung müsste aber auch gehen.
Lädst du den Control HUB über den Desktop vom selben RPi4? Oder über einen anderen PC? Falls es der Selbe ist kannst du hier auch mal "localhost" versuchen.
Das Problem scheint zu sein, dass die Verbindung zum CLEXI Server nicht klappt. Welche Fehlermeldung kam da zurück?

Das sieht schon mal gut aus. Eventuell lohnt sich noch ein Blick in die '~/clexi/log.out'.

Heute konnte ich noch mal einiges testen:

Das Neustart-Problem ist schon mal gelöst. Es lag wohl daran, dass so viele Dienste im Hintergrund geladen werden, sodass der Server beim Start wohl verhungert und nicht hinterherkommt. Die Zeit auf 5 Minuten hat das Problem gelöst und der Server wird gestartet! 8)

Endlich konnte ich auch die Verbindung zum Clexi-Client herstellen. Der entscheidende Hinweis (sollte vlt. in der ReadMe mit aufgenommen werden) war in die Log-Datei zu schauen ('~/clexi/log.out'.). Dort ist mir aufgefallen, dass der Standardport 9090 nicht stimmt.
Der iobroker hat den Port 8081, Simple-API 8087 und der Clexi-Client laut der LOG-Datei 8080!
Ich habe nun entsprechend die 127.0.0.1:8080 genommen und damit geht es mit der vorherigen Einstellung ,,localhost".
Jetzt wollte ich testen, ob ich localhost durch die Adresse des Pi4 ersetzen kann (192.168.178.28). Wie schon mal beschrieben beim Punkt 5 eingetragen, aber nach einem neustart geht es nicht. In der Log datei bleibt die 127....
Warum übernimmt er nicht die neue Adresse? Ohne diese kann ich ja nicht von anderen Geräten (Clienten) auf den Server, der auf dem RP4 installiert ist zugreifen?!

Weiterhin habe ich folgenden Fehler:
Nachdem ich mit der Anleitung durch bin, soll ich den Raspberry neu starten. Tue ich das, sind beim Clienten auf dem RPI4 wieder alle Einstellungen gelöscht bzw. zurückgesetzt. Wie kann ich es erreichen, dass er das nicht tut?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 25 Juni 2020, 23:02:34
Zitat von: whistler am 24 Juni 2020, 21:07:27
Es kommt einmal speaking dann idle und einmal mic dann idle

relevant wenn mic idle löse ich den led blinken auf. beim speaking könnte man nicht was auslösen und beim passenden idle wieder auflösen.

Und ja ich kann zur not was tricksen. aber die json strings werden auch schön im fhem ins log geschrieben. ist für die fehlersuche recht nice :-)

Ich könnte ja bei dem Event ein Feld "previousState" o.Ä. einfügen ... dann muss ich den nur selber erstmal tracken :-p ... sollte aber nicht so schwer sein ;-)

Zitat von: Jasdhewer am 24 Juni 2020, 21:44:14
Heute konnte ich noch mal einiges testen:

Das Neustart-Problem ist schon mal gelöst. Es lag wohl daran, dass so viele Dienste im Hintergrund geladen werden, sodass der Server beim Start wohl verhungert und nicht hinterherkommt. Die Zeit auf 5 Minuten hat das Problem gelöst und der Server wird gestartet! 8)

Das ist schon mal gut :-) 5min scheint mir allerdings arg viel  :o ;D , vielleicht kann man sich Schritt für Schritt runterarbeiten ^^.

Zitat von: Jasdhewer am 24 Juni 2020, 21:44:14
Endlich konnte ich auch die Verbindung zum Clexi-Client herstellen. Der entscheidende Hinweis (sollte vlt. in der ReadMe mit aufgenommen werden) war in die Log-Datei zu schauen ('~/clexi/log.out'.). Dort ist mir aufgefallen, dass der Standardport 9090 nicht stimmt.
Der iobroker hat den Port 8081, Simple-API 8087 und der Clexi-Client laut der LOG-Datei 8080!
Ich habe nun entsprechend die 127.0.0.1:8080 genommen und damit geht es mit der vorherigen Einstellung ,,localhost".
Jetzt wollte ich testen, ob ich localhost durch die Adresse des Pi4 ersetzen kann (192.168.178.28). Wie schon mal beschrieben beim Punkt 5 eingetragen, aber nach einem neustart geht es nicht. In der Log datei bleibt die 127....
Warum übernimmt er nicht die neue Adresse? Ohne diese kann ich ja nicht von anderen Geräten (Clienten) auf den Server, der auf dem RP4 installiert ist zugreifen?!

Der CLEXI Localhost läuft auf 8080, das ist korrekt, der 9090 Port kommt aber vom Nginx Proxy. Die Config dazu ist in '/etc/nginx/sites-enabled/sepia-client-nginx.conf'.
In der CLEXI Settings muss unbedingt 'localhost' stehen, damit der Client ohne Probleme darauf zugreifen kann. Das ist außerdem noch ein zusätzlicher Sicherheitslayer, da der direkte Zugriff auf CLEXI NUR über den selben Rechner geht.
Nach Außen hin freigegeben wird der CLEXI Server über den Nginx Proxy. Die Nginx Config kannst du nach belieben bearbeiten. Danach muss einmal der Nginx neugestartet werden. Der Pfad von irgendeinem PC über den Control HUB zum Client sollte also so aussehen: http://[SEPIA-Client-IP]:9090/clexi

Zitat von: Jasdhewer am 24 Juni 2020, 21:44:14
Weiterhin habe ich folgenden Fehler:
Nachdem ich mit der Anleitung durch bin, soll ich den Raspberry neu starten. Tue ich das, sind beim Clienten auf dem RPI4 wieder alle Einstellungen gelöscht bzw. zurückgesetzt. Wie kann ich es erreichen, dass er das nicht tut?

:o meinst du, dass der Login rausfliegt beim Client oder werden tatsächlich die Einstellungen in der "settings.js" (~/clexi/www/sepia/) rückgängig gemacht?

[EDIT]
Für die Node-RED Fans ein kleiner Teaser im Anhang ^^
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 26 Juni 2020, 23:48:22
Zitat von: sepia am 25 Juni 2020, 23:02:34

:o meinst du, dass der Login rausfliegt beim Client oder werden tatsächlich die Einstellungen in der "settings.js" (~/clexi/www/sepia/) rückgängig gemacht?


Ich habe mal die Datei hochgeladen:
Zu der Datei habe ich noch Fragen:
"clexiSocketURI": "ws://localhost:8080","
Wenn ich hier einfach localhost mit 128.168.178.28 ersetze, kann ich dann auch mit anderen Geräten, die im gleichen WLan sind, auf den Server zugreifen? Es geht darum, dass ich später mit anderen Pi's auf den server zugreifen möchte. Oder ist es sinnvoller, auf jedem Pi einen eigenen server zu installieren?

Muss ich in den Einstellungen noch folgendes ändern?
"useWakeWord": false, --> Hier ändere ich auf "Hey SEPIA" ab.
"autoloadWakeWord": false, --> dies stelle ich auf true

Im selben Ordner kann ich das wakeword testen (mit der Änderung der Farbe des Logos). Drücke ich auf start und sage "Hey Sepia" passiert leider nichts. Woher weiß ich, dass das Mikrofon richtig funktioniert? (Es ist aber neu)
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 27 Juni 2020, 17:34:13
Zitat von: Jasdhewer am 26 Juni 2020, 23:48:22
Ich habe mal die Datei hochgeladen:
Zu der Datei habe ich noch Fragen:
"clexiSocketURI": "ws://localhost:8080","
Wenn ich hier einfach localhost mit 128.168.178.28 ersetze, kann ich dann auch mit anderen Geräten, die im gleichen WLan sind, auf den Server zugreifen? Es geht darum, dass ich später mit anderen Pi's auf den server zugreifen möchte. Oder ist es sinnvoller, auf jedem Pi einen eigenen server zu installieren?

"clexiSocketURI" ist die URL mit der der Client auf den CLEXI Server zugreift. Das ist die gleiche Einstellung, die du in der Client App auch beim CLEXI Feld in den Settings eingeben kannt. Den Port kann man zur Not ändern, falls es Konflikte gibt mit anderen Servern auf dem Raspberry Pi, ist aber nicht zu empfehlen (es gibt dazu einen längeren Chat in den GitHub Issues). "localhost" muss man hier unbedingt beibehalten sonst gibt es Probleme mit dem "secure context" des Clients.
Wichtig ist der Unterschied zwischen CLEXI Server + HTML App (das ist quasi eine Einheit, der CLEXI Server hostet die HTML App) und SEPIA Server (das ist das zentrale Backend für den Client). Auf den CLEXI Server können theoretisch auch mehrere Client Apps zugreifen (das läuft über den Nginx Proxy der bei der Client Installation erstellt wird), ist aber eigentlich nicht zu empfehlen (CLEXI = CLient EXtension Interface ;-)). Auf den SEPIA Server können beliebig viele Clients zugreifen (Einstellung "host-name": "192.168.178.28").

Zitat von: Jasdhewer am 26 Juni 2020, 23:48:22
Muss ich in den Einstellungen noch folgendes ändern?
"useWakeWord": false, --> Hier ändere ich auf "Hey SEPIA" ab.
"autoloadWakeWord": false, --> dies stelle ich auf true

Beides auf "true" bitte :-). Der "Name" des Wake-Word wird anders konfiguriert: Wake-Word Einstellungen (https://github.com/SEPIA-Framework/sepia-html-client-app/blob/master/www/xtensions/picovoice/README.md)

Zitat von: Jasdhewer am 26 Juni 2020, 23:48:22
Im selben Ordner kann ich das wakeword testen (mit der Änderung der Farbe des Logos). Drücke ich auf start und sage "Hey Sepia" passiert leider nichts. Woher weiß ich, dass das Mikrofon richtig funktioniert? (Es ist aber neu)

Meinst du mit "im Ordner" die Einstellungsseite "Hey SEPIA" in den Client Settings? Dort gibt es unten einen Button "Debug". Wenn du diesen auf "an" stellst und dann oben auf Start müsstest du einen Fehler sehen falls das Mikrofon generell nicht erkannt wurde.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 28 Juni 2020, 14:34:50
Zitat von: sepia am 27 Juni 2020, 17:34:13
"clexiSocketURI" ist die URL mit der der Client auf den CLEXI Server zugreift. Das ist die gleiche Einstellung, die du in der Client App auch beim CLEXI Feld in den Settings eingeben kannt. Den Port kann man zur Not ändern, falls es Konflikte gibt mit anderen Servern auf dem Raspberry Pi, ist aber nicht zu empfehlen (es gibt dazu einen längeren Chat in den GitHub Issues). "localhost" muss man hier unbedingt beibehalten sonst gibt es Probleme mit dem "secure context" des Clients.
Wichtig ist der Unterschied zwischen CLEXI Server + HTML App (das ist quasi eine Einheit, der CLEXI Server hostet die HTML App) und SEPIA Server (das ist das zentrale Backend für den Client). Auf den CLEXI Server können theoretisch auch mehrere Client Apps zugreifen (das läuft über den Nginx Proxy der bei der Client Installation erstellt wird), ist aber eigentlich nicht zu empfehlen (CLEXI = CLient EXtension Interface ;-)). Auf den SEPIA Server können beliebig viele Clients zugreifen (Einstellung "host-name": "192.168.178.28").

Beides auf "true" bitte :-). Der "Name" des Wake-Word wird anders konfiguriert: Wake-Word Einstellungen (https://github.com/SEPIA-Framework/sepia-html-client-app/blob/master/www/xtensions/picovoice/README.md)

Meinst du mit "im Ordner" die Einstellungsseite "Hey SEPIA" in den Client Settings? Dort gibt es unten einen Button "Debug". Wenn du diesen auf "an" stellst und dann oben auf Start müsstest du einen Fehler sehen falls das Mikrofon generell nicht erkannt wurde.

Grüße,
Florian

Ok. Das habe ich nun abgeändert. Nach der weiteren Anleitung habe ich dann folgendes geändert:
SepiaFW.wakeTriggers.porcupineVersion = "1.5";
SepiaFW.wakeTriggers.porcupineWakeWords = ["Hey Sepia"];

Danach soll ich den Download starten. Das geht nicht. Nach dieser Anleitung "https://github.com/SEPIA-Framework/sepia-wakeword-tools/tree/master/Porcupine" soll ich nun den entsprechenden Ordner clonen. Das habe ich gemacht und in meinem Downloadordner wieder entpackt. Aber am folgenden Punkt hänge ich:

Open the folder and setup your SEPIA server and account first:
python -m sepia.account --id=[sepia-user-id] --host=[sepia-server-url]

Welche Datei soll ich hier genau öffnen und wie kann ich die Änderungen vornehmen?
Sry, dass ich immer wieder nachfragen muss. Es scheint doch alles ein bisschen komplizierter, als ich das erst gedacht habe, als ich das Projekt in Angriff genommen habe....

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 28 Juni 2020, 21:31:53
Zitat von: Jasdhewer am 28 Juni 2020, 14:34:50
Ok. Das habe ich nun abgeändert. Nach der weiteren Anleitung habe ich dann folgendes geändert:
SepiaFW.wakeTriggers.porcupineVersion = "1.5";
SepiaFW.wakeTriggers.porcupineWakeWords = ["Hey Sepia"];

Hi,
ich glaube hier sind jetzt ein paar Sachen durcheinander gekommen. Wenn du "Hey SEPIA" nutzen willst ist dazu keine weitere Konfiguration nötig als die beiden "true" Werte in der "settings.js". Falls du eines der anderen Wake-Words nutzen willst, dann wird diese "wakeWords.js" Datei angepasst, dazu muss die Version (z.B. 1.5) aber zum WW passen (siehe Unterordner "keywords"). Ich würde vorschlagen wir ignorieren diesen Teil erstmal.

Zitat von: Jasdhewer am 28 Juni 2020, 14:34:50
Danach soll ich den Download starten. Das geht nicht.

Meinst du den Hinweis "You can use the download_wasm.sh or download_wasm.bat file to download them directly to your folder"?
Das ist optional und nur relevant wenn du oben "Hey SEPIA" änderst bzw. ein Wake-Word wählst, dass nicht die "v1.4" Engine benutzt.

Zitat von: Jasdhewer am 28 Juni 2020, 14:34:50
Nach dieser Anleitung "https://github.com/SEPIA-Framework/sepia-wakeword-tools/tree/master/Porcupine" soll ich nun den entsprechenden Ordner clonen. Das habe ich gemacht und in meinem Downloadordner wieder entpackt. Aber am folgenden Punkt hänge ich:

Open the folder and setup your SEPIA server and account first:
python -m sepia.account --id=[sepia-user-id] --host=[sepia-server-url]

Welche Datei soll ich hier genau öffnen und wie kann ich die Änderungen vornehmen?

Wie bist du denn auf das "sepia-wakeword-tools" Repository gekommen? ^^ Das ist eine alternative Methode das Wake-Word unabhängig vom Client zu nutzen und war die erste Implementierung eines Wake-Words in SEPIA. In der Standardkonfiguration ist es momentan nicht vorgesehen, theoretisch kann man damit aber beliebige Wake-Words für x86 64bit Betriebssysteme (z.B. Windows) erstellen, die dann über den SEPIA Server einen Client triggern. Ich empfehle aber auch das erstmal zu ignorieren :-)

Zitat von: Jasdhewer am 28 Juni 2020, 14:34:50
Sry, dass ich immer wieder nachfragen muss. Es scheint doch alles ein bisschen komplizierter, als ich das erst gedacht habe, als ich das Projekt in Angriff genommen habe....

Irgendwo sind wir falsch abgebogen und haben uns vom vorgesehen Pfad entfernt :-[
Ich kann nicht mehr genau nachvollziehen wo, aber hier ist noch mal eine kurze Checkliste.

SEPIA Installation + FHEM + DIY Client + Wake-Word:

Ich hoffe das hilft um etwaige Problemchen zu klären  :)

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 29 Juni 2020, 10:51:35
Zitat von: sepia am 28 Juni 2020, 21:31:53
Hi,
ich glaube hier sind jetzt ein paar Sachen durcheinander gekommen. Wenn du "Hey SEPIA" nutzen willst ist dazu keine weitere Konfiguration nötig als die beiden "true" Werte in der "settings.js". Falls du eines der anderen Wake-Words nutzen willst, dann wird diese "wakeWords.js" Datei angepasst, dazu muss die Version (z.B. 1.5) aber zum WW passen (siehe Unterordner "keywords"). Ich würde vorschlagen wir ignorieren diesen Teil erstmal.

Meinst du den Hinweis "You can use the download_wasm.sh or download_wasm.bat file to download them directly to your folder"?
Das ist optional und nur relevant wenn du oben "Hey SEPIA" änderst bzw. ein Wake-Word wählst, dass nicht die "v1.4" Engine benutzt.

Wie bist du denn auf das "sepia-wakeword-tools" Repository gekommen? ^^ Das ist eine alternative Methode das Wake-Word unabhängig vom Client zu nutzen und war die erste Implementierung eines Wake-Words in SEPIA. In der Standardkonfiguration ist es momentan nicht vorgesehen, theoretisch kann man damit aber beliebige Wake-Words für x86 64bit Betriebssysteme (z.B. Windows) erstellen, die dann über den SEPIA Server einen Client triggern. Ich empfehle aber auch das erstmal zu ignorieren :-)

Irgendwo sind wir falsch abgebogen und haben uns vom vorgesehen Pfad entfernt :-[
Ich kann nicht mehr genau nachvollziehen wo, aber hier ist noch mal eine kurze Checkliste.

SEPIA Installation + FHEM + DIY Client + Wake-Word:

  • SEPIA Server installieren (https://github.com/SEPIA-Framework/sepia-docs#quick-start-for-makers) (Kurz: Zip runterladen, entpacken, Setup starten, Server starten)
  • Im SEPIA Control HUB via Admin einloggen um einen neuen User zu erstellen (https://github.com/SEPIA-Framework/sepia-docs/wiki/Create-and-Edit-Users)
  • Im selben Control HUB FHEM einrichten (https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls#tutorial-fhem)
  • Einen frischen Raspberry Pi aufsetzen für die DIY Client installation, der dann als "Smart Speaker" fungieren soll (optional einen existierenden nehmen und hoffen das man keine Konflikte mit den installierten Sachen bekommt)
  • Client Installationsskript runterladen + ausführen und den Anweisungen folgen (https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/README.md)
  • In der "~/clexi/www/sepia/settings.js" bei "host-name" die IP vom Server aus Schritt 1 eintragen
  • In der selben settings.js "useWakeWord" und "autoloadWakeWord" auf true setzen
  • Den Raspberry Pi mit Client neu starten und dann über den Control HUB via "Client Connections" auf den Client zugreifen (ws://[IP-des RPi]:9090/sepia)

Ich hoffe das hilft um etwaige Problemchen zu klären  :)

Grüße,
Florian

Hi,
da ich jemand bin, der eine Schritt für Schritt Anleitung benötigt, habe ich für mich etwas zusammengeschrieben. Ich habe es mal angehängt.

Ich höre beim Start ein paar Sachen, z.B. "ready for setup", aber wenn ich sage, "hey Sepia, schalte Wohnzimmerlicht an" funktioniert es leider nicht.
Das Mikrofon an sich funktioniert --> "arecord -l" --> "arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav" funktioniert. Ich kann meine Stimme aufnehmen und mit dem Befehl höre ich meine aufgenommene Stimme.
Zum Microfon: Ich habe ein Amazon-Microfon.
Was mich bisher stutzig macht: Wenn ich beim Controll Hub die Client Daten eingebe und einen Pi Neustart mache, dann sehe ich wieder die alten Daten: Das Symbol ist nicht auf grün, sondern grau, der Client ist nicht auf "localhost" sondern auf "raspberryhost", etc. Läuft da etwas schief? Auch die Client URL: ws://192.168.178.28:9090/clexi funktioniert nicht. Es geht nur mit der "localhost.8080" url. Auch sollte man ja ein Geräusch am Ende der Konfiguration hören. Das höre ich ebenfalls nicht.
Das System neu aufzusetzen bringt mir glaube ich nicht viel, da ich ja wieder genau nach der angehängten Anleitung vorgehen würde...?! Es funktioniert ja an sich mit der APP (toggle Sprachbefehl), aber leider nicht mit dem PI mit Microfon ohne APP.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 30 Juni 2020, 12:17:09
Zitateinen Pi Neustart mache, dann sehe ich wieder die alten Daten: Das Symbol ist nicht auf grün, sondern grau, der Client ist nicht auf "localhost" sondern auf "raspberryhost", etc. Läuft da etwas schief?
Das ist bei mir genauso. Allerdings würde ich es höchstens als Schönheitsfehler einstufen. Im Normalfall muss man da ja nicht jedesmal/oft dran.

Nach dem Neustart verbindest du dich über "/tools/#!client-connections" wieder mit dem CLEXI server, wie ist denn dann der Status deines (lokalen) Clients?
Bei mir lag es vermutlich an Ungeduld: Es ist wichtig, dass die Neustarts exakt eingehalten werden, sonst hat der client (wie in der Anleitung beschrieben) kein Zugriff auf das Mic.

Damit bin ich nun aber an an einem ähnlichen Punkt:

PI Pseudo-Headless funktionierte ganz gut.
Heute wieder angeschmissen, mit folgendem Status/Ergebnis:

1. active user: setup  - unschön, aber okay:
2. call login -> success -> reboot
3. active user: uid1007 - soweit so gut; jetzt kommter aber nicht mehr ans mic:
Broadcaster event: {"broadcast":{"client":"o1_chrome_app_v0.22.0","deviceId":"o1","sepia-speech":{"type":"asr_error","msg":"Mikrofon nicht richtig erkannt oder Zugriff  verweigert."}}}

4. also noch ein reboot:  active user: setup  :(
5. call login -> success -> call test -> success -> set wakeword active -> success -> reboot
6. active user: setup  :(  :(

rekursion, siehe rekursion..

gute Idee(n)?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 01 Juli 2020, 18:27:56
Zitat von: Jasdhewer am 29 Juni 2020, 10:51:35
Hi,
da ich jemand bin, der eine Schritt für Schritt Anleitung benötigt, habe ich für mich etwas zusammengeschrieben. Ich habe es mal angehängt.

Sehr gut! Ich würde das noch mal in ruhe durchgehen und dann irgendwo in den SEPIA Docs als PDF ablegen, wenn das ok ist? :-)
Es gab jetzt schon 2-3 solcher User-Tutorials auf Deutsch. Werde mal überlegen wo ich die zentral sammeln könnte.

Zitat von: Jasdhewer am 29 Juni 2020, 10:51:35
Ich höre beim Start ein paar Sachen, z.B. "ready for setup", aber wenn ich sage, "hey Sepia, schalte Wohnzimmerlicht an" funktioniert es leider nicht.
Das Mikrofon an sich funktioniert --> "arecord -l" --> "arecord -D plughw:1,0 -d 3 test.wav && aplay test.wav" funktioniert. Ich kann meine Stimme aufnehmen und mit dem Befehl höre ich meine aufgenommene Stimme.
Zum Microfon: Ich habe ein Amazon-Microfon.

Kannst du im CLEXI Remote Terminal (Control HUB -> Client Connections) irgendwelche Fehlermeldungen sehen? Der Client ist zu diesem Zeitpunkt schon eingeloggt ja?
P.S.: Ich habe ein Amazon Basics USB Kondensatormikrofon, das funktioniert sehr gut.

Zitat von: Jasdhewer am 29 Juni 2020, 10:51:35
Was mich bisher stutzig macht: Wenn ich beim Control Hub die Client Daten eingebe und einen Pi Neustart mache, dann sehe ich wieder die alten Daten: Das Symbol ist nicht auf grün, sondern grau, der Client ist nicht auf "localhost" sondern auf "raspberryhost", etc. Läuft da etwas schief?

s.U.

Zitat von: TRallala am 30 Juni 2020, 12:17:09
Bei mir lag es vermutlich an Ungeduld: Es ist wichtig, dass die Neustarts exakt eingehalten werden, sonst hat der client (wie in der Anleitung beschrieben) kein Zugriff auf das Mic.

Ja, da muss man genau aufpassen, denn beim ersten Start wird das User Verzeichnis im Chromium angelegt und erst beim bzw. vor dem zweiten Start können diese dann überschrieben werden.

Zitat von: TRallala am 30 Juni 2020, 12:17:09
Damit bin ich nun aber an an einem ähnlichen Punkt:

PI Pseudo-Headless funktionierte ganz gut.
Heute wieder angeschmissen, mit folgendem Status/Ergebnis:

1. active user: setup  - unschön, aber okay:
2. call login -> success -> reboot
3. active user: uid1007 - soweit so gut; jetzt kommter aber nicht mehr ans mic:
[...]
gute Idee(n)?

Ich fasse noch mal kurz zusammen: Ihr habt beide das Problem, dass der Client nach einem Neustart den Login verliert?
Ich werde mal überlegen woran das liegen könnte. Im Grunde würde das bedeuten der Chromium Userfolder wird zurückgesetzt :-[
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 01 Juli 2020, 21:19:26
Zitat von: sepia am 01 Juli 2020, 18:27:56
Ich fasse noch mal kurz zusammen: Ihr habt beide das Problem, dass der Client nach einem Neustart den Login verliert?
Ich werde mal überlegen woran das liegen könnte. Im Grunde würde das bedeuten der Chromium Userfolder wird zurückgesetzt :-[

Ich melde mich auch mal kurz, ja zudem das die Wakeword Erkennung "verschwindet", kann ich heute bestätigen das Aufgrund eines Stromausfalls der Server nicht erreichbar war, aber auch die Clients die den Server noch erreichen konnten sind geflogen.

Sie standen alle im Demomodus und haben auf einen Login gewartet. Ich hatte das beim rumprobieren schon öfter, aber erstmal auf mein Setup geschoben,
aber muss sagen es ist nicht schön.

PS: Mit github hab ich noch nicht geschafft, aber da andere ebenfalls ja hier einen nutzen haben, sollten wir den rest vielleicht auch wie alles andere hier besprechen, ich überlege mal.

Btw, aktuell flippen wieder die Clients mit Wakeword ohne wakeword aus :-)

Schönen Abend Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 02 Juli 2020, 09:55:23
Zitat von: whistler am 01 Juli 2020, 21:19:26
Ich melde mich auch mal kurz, ja zudem das die Wakeword Erkennung "verschwindet", kann ich heute bestätigen das Aufgrund eines Stromausfalls der Server nicht erreichbar war, aber auch die Clients die den Server noch erreichen konnten sind geflogen.

Hm das könnte vielleicht der entscheidenden Hinweis sein. Wenn der Client neustartet und der Server noch nicht läuft hängt der Client im Login Modus und springt dann vermutlich nach 8s in den Auto-Setup Modus wobei der alte Login verloren geht :o
Ich habe schon eine Idee wie man das verbessern könnte. Bei der Handy App hat mich das auch ein paar mal gestört, wenn der Server down war. Da ist es nicht ganz so schlimm weil man die App einfach neustarten kann und die nicht in den Auto-Setup Modus springt, aber bessere wäre wohl wenn der Client einfach auf den Server oder einen Manuellen Logout Request wartet.
Übrigens wenn Server bei laufendem Client abschmiert versucht der Client sich mit immer größer werdenden Abständen automatisch wieder zu verbinden, das kann im Maximalfall aber hoch gehen bis auf 5min.

Zitat von: whistler am 01 Juli 2020, 21:19:26
PS: Mit github hab ich noch nicht geschafft, aber da andere ebenfalls ja hier einen nutzen haben, sollten wir den rest vielleicht auch wie alles andere hier besprechen, ich überlege mal.

Ja, kein Problem. Nutzt du eigentlich Node-RED? ^^

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 03 Juli 2020, 14:40:36
Zitat von: sepia am 01 Juli 2020, 18:27:56
Sehr gut! Ich würde das noch mal in ruhe durchgehen und dann irgendwo in den SEPIA Docs als PDF ablegen, wenn das ok ist? :-)
Es gab jetzt schon 2-3 solcher User-Tutorials auf Deutsch. Werde mal überlegen wo ich die zentral sammeln könnte.

Kannst du im CLEXI Remote Terminal (Control HUB -> Client Connections) irgendwelche Fehlermeldungen sehen? Der Client ist zu diesem Zeitpunkt schon eingeloggt ja?
P.S.: Ich habe ein Amazon Basics USB Kondensatormikrofon, das funktioniert sehr gut.

s.U.

Ja, da muss man genau aufpassen, denn beim ersten Start wird das User Verzeichnis im Chromium angelegt und erst beim bzw. vor dem zweiten Start können diese dann überschrieben werden.

Ich fasse noch mal kurz zusammen: Ihr habt beide das Problem, dass der Client nach einem Neustart den Login verliert?
Ich werde mal überlegen woran das liegen könnte. Im Grunde würde das bedeuten der Chromium Userfolder wird zurückgesetzt :-[

Hi,
du darfst gerne die word Datein benutzen und zur Verfügung stellen. GGf. findest du ja noch Fehler, die mein Problem verursachen. Fehler mein Clienten werden erst einmal nicht angezeigt.
Ich werde am Wochenende mich noch mal hinsetzen und den Clienten noch mal versuchen einzurichten. Sonst gibt es ja bisher keine Lösung für mein Problem?!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 05 Juli 2020, 14:55:31
Hallo Florian,

ich versuch mal gesammelt einmal deine offenen und Antworten zu durchlaufen (Vollständig nicht unbedingt gegeben :-)).
Ich hänge an zwei drei stellen, daher brauchte Sepia eine Pause (oder ich ;-)).

Zitat von: sepia am 02 Juli 2020, 09:55:23
Hm das könnte vielleicht der entscheidenden Hinweis sein. Wenn der Client neustartet und der Server noch nicht läuft hängt der Client im Login Modus und springt dann vermutlich nach 8s in den Auto-Setup Modus wobei der alte Login verloren geht :o
Ich habe schon eine Idee wie man das verbessern könnte. Bei der Handy App hat mich das auch ein paar mal gestört, wenn der Server down war. Da ist es nicht ganz so schlimm weil man die App einfach neustarten kann und die nicht in den Auto-Setup Modus springt, aber bessere wäre wohl wenn der Client einfach auf den Server oder einen Manuellen Logout Request wartet.
Übrigens wenn Server bei laufendem Client abschmiert versucht der Client sich mit immer größer werdenden Abständen automatisch wieder zu verbinden, das kann im Maximalfall aber hoch gehen bis auf 5min.

Grüße,
Florian
Gerne immer, wenns beim Fehlersuchen/finden hilft.
Wenn ich das hier richtig sehe, dann broadcastet er natürlich auch nicht mehr dann :-)
Sowas wie ein heartbeat wäre nice :-) (z.b. alle 60 Sekunden, ob der Client noch da ist.

Zitat von: sepia am 02 Juli 2020, 09:55:23
Ja, kein Problem. Nutzt du eigentlich Node-RED? ^^

Nein bisher kein Note-Red, aber sieht immer interessant aus. :-)

Zitat von: sepia am 25 Juni 2020, 23:02:34
Ich könnte ja bei dem Event ein Feld "previousState" o.Ä. einfügen ... dann muss ich den nur selber erstmal tracken :-p ... sollte aber nicht so schwer sein ;-)
Ich hab dir zum tracken mal ein "Log" anlegt, ich hab das tracken quasi fhem überlassen (MQTT Device dahinter ein log, json wird ja per 98_jsonExpansion extrahiert)
Dann siehst du vielleicht besser was ich mit Status meine und hast ein gefühl dafür wie es am besten zu integrieren ist.

Zitat von: sepia am 25 Juni 2020, 23:02:34
Für die Node-RED Fans ein kleiner Teaser im Anhang ^^

Nur fürs Verständnis, kann das parallel zu fhem laufen dann? oder als entweder oder? :-) Ich nehme an du sprichst dort MQTT in Richtung Node-Red :)
Du kennst meine Vorstellung ja, per Interface (z.B. fhem) alles machen lassen und parallel per MQTT broadcasten :-)


So jetzt zu den aktuellen Problemen / Infos nochmal in Kurzform und ich hoffe wir sind dann wieder auf dem gleichen Stand der vom Standard abweichenden Standards:
* Im Log erkennst du ja das ich noch nicht vor einer Stunde getestet habe, und nun ist das Wakeword schon wieder ausgegangen (knapp 45 Minuten nach Letzter Interaktion).
  Im Log siehst du auch gesprochenendes, das dann zu unvollständigen sätzen wird, meistens kann man erkennen, was ich eigentlich hätte sagen wollten (z.b. link anstatt links)
* Ich hab mir jetzt mal noch nen TTS Ausgabe gemacht die mit mir spricht, wenn das Wakeword ausschaltet (als Telegram Message geht das schonmal unter :-))
  Dieser hat nach 45 Minuten nach letzter Interaktion ausgelöst
  Wenn ich nun ein Reload mache, ist es wieder an. Zu sehen ist aber am Client nichts.

* Kann ich das "Reload" am Clexi auch remote machen? Gedanke: Ich löse vom fhem aus den reload aus (per api aufruf), hast du hier ein Beispiel. Ich bin auf die schnelle nicht fündig geworden.

* Ich hab ja die besondere Konstellation das ich einen Squeezeplayer laufen lassen und auch den Sepia Client, hab sogar den Client um eine weitere USB Karte erweitert, zu Verbesserung
  Ich hab nach wie vor noch nicht 100% verstanden, wo Sepia sich das "Ausgabe Device" zieht und wie ich das anpassen kann :-) (Vielleicht hast du da noch einen Tipp)
  PS: Das Wakeword spinnt sowohl wenn der Squeezeplayer aus, und er spinnt auch, wenn ich "Hey Sepia" einstelle etwas weniger aber trotzdem.
* es gibt noch was, was vielleicht etwas verwirrt, wenn auch Gedanklich vielleicht nicht falsch, das wakeword geht auch inactive, wenn das mic angeht. das geht auch auf inactive, wenn es inactive wird. (es gibt auch keine Unterscheid zwischen "bewusst" oder "unbewusst" aus.
  Aktuell hab ich nen Timer von 2 Minuten laufen, sofern das active nicht kommt, was den Timer löscht. (Nicht schön, aber naja :-))

* Zum Thema Heartbeat (Kann man vielleicht diesen Status aus der Übersicht am Client abgreifen, hier werden ja die aktiven Clients angezeigt.

* Dann zum Schluss, noch einmal kurz zur Handy App, weil du es kürzlich als Randthema angesprochen hast. Kurz nochmal zusammengefasst das "Problem".
* Sepia Client ist gestartet und auch als Default (Anstatt Google definiert)
Da ich mein Handy nicht gerootet habe, kann Tasker die App nicht beenden. Vielleicht kannst du ihr noch ein intent spendieren, wo Tasker (oder auch weitere) das dann doch dürfen.
Bin nicht 100% sicher, ob das Gedanklich so richtig gedacht ist.

Also Sepia ist auf, Ich steige ins Auto ein, Tasker startet Spotify beim Bluetooth connect.
Wenn Sepia wird gestartet ist passiert folgendes: Er stellt sepia als Anruf da, macht er eigentlich die ganze Zeit und es gibt keinen Ton am Radio sondern direkt am Handy,
wenn ich die App beende, hab ich direkt den Ton im Radio. (Alternativ stellt er den Stream als Anruf da, was erstens leider ist, und kein Steuern (Skip etc. zulässt)
Beides nicht schön. zudem Übersteuert er scheinbar (zumindest bei Xiaomi) die Volumetasten, und er macht das Mic lauter leiser und nicht mehr Lautstärke.
Es gibt scheinbar verschiedene Möglichkeiten einen Audio zu starten, als stream als call. (Hatte ich beim Tasker mal gesehen, was man einstellen kann wie er "Vorlesen" soll.)

Das Ergänzung zum Wunsch des Custom Pling Tons, da hab ich überlegt. vielleicht kannst du im Code einbauen, wenn an einer bestimmten stelle im Handyspeicher eine custom_coin.mp3 liegt lädt er die beim starten.
Ob die gleiche Logik auch beim Wakeword geht vermutlich nicht so einfach.

Die PS3 Eye hab ich bisher zwar zum sprechen ans Laufen bekommen, aber das wakeword macht es nicht so. Heisst wenn ich das knöpfchen drücke, dann kann ich dann ohne Probleme sprechen.

Kann man irgendwie den wakeword erkennungsstream "mitschneiden" damit man mal hören kann, was er da so "hört".

[EDIT]
Das Performance Schaltproblem ist immer noch da, kannst du evtl. auch im Log sehen, im Server keine auffälligkeiten (dauert bis zu 7 Sekunden :-(()


Hallo zusammen,

wie es denn eure Erfahrung bzgl. Wakeword Erkennung läuft die Eindwandfrei, wahlweise mit Hey Sepia oder den Custom words?

Vielen Dank und einen schönen Sonntag.
Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 09 Juli 2020, 13:50:36
Zitat von: Jasdhewer am 03 Juli 2020, 14:40:36
Hi,
du darfst gerne die word Datein benutzen und zur Verfügung stellen. GGf. findest du ja noch Fehler, die mein Problem verursachen. Fehler mein Clienten werden erst einmal nicht angezeigt.
Ich werde am Wochenende mich noch mal hinsetzen und den Clienten noch mal versuchen einzurichten. Sonst gibt es ja bisher keine Lösung für mein Problem?!

Hi,
hattest du noch was erreicht oder besteht das Problem mit dem Mikrofon weiterhin?
Ich hatte mal etwas Zeit um deine Anleitung Schritt für Schritt durchzugehen, dabei sind mir ein paar Sachen aufgefallen:

Noch mal kurz zum Verständnis, bei dir laufen SEPIA Server und Raspberry Pi Client auf dem selben RPi4 richtig?

Zitat von: whistler am 05 Juli 2020, 14:55:31
Ich hänge an zwei drei stellen, daher brauchte Sepia eine Pause (oder ich ;-)).

Hi Basti, verstehe ich. Ich komme auch gerade nicht immer sofort dazu, detailliert auf Fragen einzugehen. Dafür bin ich aber dran die einzelnen Problemchen Schritt für Schritt abzuarbeiten und neue Features einzubauen ;-)

Zitat von: whistler am 05 Juli 2020, 14:55:31
Sowas wie ein heartbeat wäre nice :-) (z.b. alle 60 Sekunden, ob der Client noch da ist.

Ja, das steht auch schon auf der Liste (sowohl für die Client -> CLEXI Verbindung als auch Client -> SEPIA Chat Server). Mit Node-RED kann man sowas auch gut machen, sobald ich die Client Node fertig habe ^^.

Zitat von: whistler am 05 Juli 2020, 14:55:31
Ich hab dir zum tracken mal ein "Log" anlegt, ich hab das tracken quasi fhem überlassen (MQTT Device dahinter ein log, json wird ja per 98_jsonExpansion extrahiert)
Dann siehst du vielleicht besser was ich mit Status meine und hast ein gefühl dafür wie es am besten zu integrieren ist.

Cool, danke.

Zitat von: whistler am 05 Juli 2020, 14:55:31
Nur fürs Verständnis, kann das parallel zu fhem laufen dann? oder als entweder oder? :-) Ich nehme an du sprichst dort MQTT in Richtung Node-Red :)
Du kennst meine Vorstellung ja, per Interface (z.B. fhem) alles machen lassen und parallel per MQTT broadcasten :-)

Das läuft komplett unabhängig. Die Nodes für SEPIA haben verschiedene Funktionen, eine davon ist z.B. die Verbindung zum Client über den CLEXI Server. Sprich es wird dann möglich sein die ganzen Events des CLEXI Servers in Node-RED auszulesen und weiter zu verarbeiten. Andere Nodes greifen z.B. direkt auf die SEPIA Server Endpoints zu, können Befehle ausführen ("Stelle den Wecker für 7 Uhr"), Nachrichten in SEPIA Chat Kanäle schicken oder Remote-Actions ausführen. Ich glaube das wird ziemlich cool weil man weniger im SEPIA Code rumfummeln muss um selber Ideen umzusetzen ;D

Zitat von: whistler am 05 Juli 2020, 14:55:31
So jetzt zu den aktuellen Problemen / Infos nochmal in Kurzform und ich hoffe wir sind dann wieder auf dem gleichen Stand der vom Standard abweichenden Standards:
* [...] Dieser hat nach 45 Minuten nach letzter Interaktion ausgelöst
  Wenn ich nun ein Reload mache, ist es wieder an. Zu sehen ist aber am Client nichts.

Da gab es scheinbar wieder dieses Problem, dass kein Text erkannt wurde und deshalb irgendwie der Restart des Wake-Word Listeners nicht klappt. Ich versuche gleich noch mal das zu reproduzieren, scheint aber nicht trivial zu sein irgendwie :-/

Zitat von: whistler am 05 Juli 2020, 14:55:31
* Kann ich das "Reload" am Clexi auch remote machen? Gedanke: Ich löse vom fhem aus den reload aus (per api aufruf), hast du hier ein Beispiel. Ich bin auf die schnelle nicht fündig geworden.

Theoretisch ja, praktisch braucht man aber irgendeine Form des CLEXI Clients um die WebSocket Verbindug herzustellen und dann den Trigger Befehl über den Broadcast-Kanal zu schicken. Das ist auch ein schönes Beispiel für die zukünftigen Node-RED Möglichkeiten (weil man da die Endpoints schön per Drag-n-Drop verbinden und bedienen kann via CLEXI Node).

Zitat von: whistler am 05 Juli 2020, 14:55:31
* Ich hab ja die besondere Konstellation das ich einen Squeezeplayer laufen lassen und auch den Sepia Client, hab sogar den Client um eine weitere USB Karte erweitert, zu Verbesserung
  Ich hab nach wie vor noch nicht 100% verstanden, wo Sepia sich das "Ausgabe Device" zieht und wie ich das anpassen kann :-) (Vielleicht hast du da noch einen Tipp)
  PS: Das Wakeword spinnt sowohl wenn der Squeezeplayer aus, und er spinnt auch, wenn ich "Hey Sepia" einstelle etwas weniger aber trotzdem.

Mit "Ausgabe Device" meinst du quasi den Lautsprecher des Clients? Was genau ist hier noch mal die Aufgabe des Squeezeplayer, die Ausgabe auf ein anderes Gerät zu streamen? Oder generell Musik abzuspielen, die dann auf das Gerät gestreamt wird?
Das Ausgabegerät von SEPIA ist über die ALSA Einstellungen "konfiguriert". Im Besten Fall ist es einfach die Standardeinstellung des Systems oder was in der '~/.asoundrc' steht.

Zitat von: whistler am 05 Juli 2020, 14:55:31
* Zum Thema Heartbeat (Kann man vielleicht diesen Status aus der Übersicht am Client abgreifen, hier werden ja die aktiven Clients angezeigt.

Im Grunde wäre der zentrale Anlaufpunkt der SEPIA Chat Server. Der weiß welche User und DeviceIds online sind. Abfragen kann man die aber noch nicht, da wäre ein Endpoint durchaus sinnvoll :-)
Ansonsten müsste man sich mit jedem CLEXI Server des jeweiligen Clients verbinden und den "ping" request senden (wieder ein möglicher Anwendungsfall für Node-RED ^^).

Zitat von: whistler am 05 Juli 2020, 14:55:31
* Dann zum Schluss, noch einmal kurz zur Handy App, weil du es kürzlich als Randthema angesprochen hast. Kurz nochmal zusammengefasst das "Problem".
* Sepia Client ist gestartet und auch als Default (Anstatt Google definiert)
Da ich mein Handy nicht gerootet habe, kann Tasker die App nicht beenden. Vielleicht kannst du ihr noch ein intent spendieren, wo Tasker (oder auch weitere) das dann doch dürfen.
Bin nicht 100% sicher, ob das Gedanklich so richtig gedacht ist.

Ich guck mal dass ich dem Client eine "App exit" Aktion spendiere :-) Background reicht nicht? Das müsste doch gehen oder? Die App macht eh nichts im Hintergrund und bei einem hard-exit dauert der Neustart länger.

Zitat von: whistler am 05 Juli 2020, 14:55:31
Also Sepia ist auf, Ich steige ins Auto ein, Tasker startet Spotify beim Bluetooth connect.
Wenn Sepia wird gestartet ist passiert folgendes: Er stellt sepia als Anruf da, macht er eigentlich die ganze Zeit und es gibt keinen Ton am Radio sondern direkt am Handy,
wenn ich die App beende, hab ich direkt den Ton im Radio. (Alternativ stellt er den Stream als Anruf da, was erstens leider ist, und kein Steuern (Skip etc. zulässt)
Beides nicht schön. zudem Übersteuert er scheinbar (zumindest bei Xiaomi) die Volumetasten, und er macht das Mic lauter leiser und nicht mehr Lautstärke.
Es gibt scheinbar verschiedene Möglichkeiten einen Audio zu starten, als stream als call. (Hatte ich beim Tasker mal gesehen, was man einstellen kann wie er "Vorlesen" soll.)

Uh das klingt echt nervig :-[ Irgendwo kam dieses Problem schon mal (hatten wir das diskutiert?). Kommt der "Anruf" Status durch das Wake-word oder auch ohne? Ich hatte schon mal versucht ob es möglich ist die Audio-Kanäle in Android konkret auszuwählen aber das ist ziemlich schwierig bis unmöglich (zur Zeit). Die Kombination Wake-Word + Audio Output ist auch deshalb standardmäßig deaktiviert. Wenn Audio aus einer anderen App kommt kann SEPIA das aber nicht verhindern vermute ich.

Zitat von: whistler am 05 Juli 2020, 14:55:31
Das Ergänzung zum Wunsch des Custom Pling Tons, da hab ich überlegt. vielleicht kannst du im Code einbauen, wenn an einer bestimmten stelle im Handyspeicher eine custom_coin.mp3 liegt lädt er die beim starten.
Ob die gleiche Logik auch beim Wakeword geht vermutlich nicht so einfach.

Hmm ja theoretisch müsste das gehen. Jede App hat ja einen Ort in Android wo sie Dateien ablegen und auch lesen darf. Das wird etwas tricky aber klingt nach einer guten Idee :-)
Bezüglich Wake-Word ... es gibt ein undokumentiertes Feature im Client ^^ guck mal hier: https://github.com/SEPIA-Framework/sepia-docs/issues/52

Zitat von: whistler am 05 Juli 2020, 14:55:31
Die PS3 Eye hab ich bisher zwar zum sprechen ans Laufen bekommen, aber das wakeword macht es nicht so. Heisst wenn ich das knöpfchen drücke, dann kann ich dann ohne Probleme sprechen.
Kann man irgendwie den wakeword erkennungsstream "mitschneiden" damit man mal hören kann, was er da so "hört".

Mit der PS3 Eye wurde ich auch nicht glücklich damals, der Sound war immer viel zu leise wenn ich mich recht erinnere. Mitschneiden wäre wirklich praktisch, ist aber (Stand jetzt) ziemlich umständlich einzubauen :-/ dazu muss man irgendwie den Audio-Buffer abgreifen, duplizieren und dann wieder abspielbar machen :-[

Zitat von: whistler am 05 Juli 2020, 14:55:31
Das Performance Schaltproblem ist immer noch da, kannst du evtl. auch im Log sehen, im Server keine auffälligkeiten (dauert bis zu 7 Sekunden :-(()

Uff 7s ist hart. Kommt das eigentlich auch wenn du den trigger button im Control HUB benutzt? Wenn ich mich recht erinnere wurde das auch weniger wenn man mehrere Befehle in kurzem Abstand benutzt hat oder? Geht da vielleicht irgendein Empfänger in den sleep-mode?

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 10 Juli 2020, 01:15:55
Zitat von: sepia am 09 Juli 2020, 13:50:36
Hi Basti, verstehe ich. Ich komme auch gerade nicht immer sofort dazu, detailliert auf Fragen einzugehen. Dafür bin ich aber dran die einzelnen Problemchen Schritt für Schritt abzuarbeiten und neue Features einzubauen ;-)

ich antworte zumindest mal kurz. :-)

Zitat von: sepia am 09 Juli 2020, 13:50:36
Ja, das steht auch schon auf der Liste (sowohl für die Client -> CLEXI Verbindung als auch Client -> SEPIA Chat Server). Mit Node-RED kann man sowas auch gut machen, sobald ich die Client Node fertig habe ^^.

Das läuft komplett unabhängig. Die Nodes für SEPIA haben verschiedene Funktionen, eine davon ist z.B. die Verbindung zum Client über den CLEXI Server. Sprich es wird dann möglich sein die ganzen Events des CLEXI Servers in Node-RED auszulesen und weiter zu verarbeiten. Andere Nodes greifen z.B. direkt auf die SEPIA Server Endpoints zu, können Befehle ausführen ("Stelle den Wecker für 7 Uhr"), Nachrichten in SEPIA Chat Kanäle schicken oder Remote-Actions ausführen. Ich glaube das wird ziemlich cool weil man weniger im SEPIA Code rumfummeln muss um selber Ideen umzusetzen ;D

Okay das hört sich aber nicht nach MQTT in Richtung Node-Red an oder? sondern ein Node?
Mein gedanke war, ich schicke ein Kommanda "Reload" zum Client oder Server und lasse, wenn er ein event inactive schickt ihn einrach einen Reload machen.
Nicht schön, aber dann steht man zumindest nicht doof davor und fragt sich, will er mich gerade nicht verstehen, oder kann er mich nicht verstehen. :-)

Zitat von: sepia am 09 Juli 2020, 13:50:36
Da gab es scheinbar wieder dieses Problem, dass kein Text erkannt wurde und deshalb irgendwie der Restart des Wake-Word Listeners nicht klappt. Ich versuche gleich noch mal das zu reproduzieren, scheint aber nicht trivial zu sein irgendwie :-/

Also entweder du hast selber einen Geheimtrick, hast das Mikro so gut versteckt, das es den "Fernseher" etc. nicht findet. Aber du stimmst mir zu Musik hören oder Fernsehen sollte wohl drin sein. :-)
Und ja es ist scheinbar so, das er das Wakeword erkannt hat (warum auch immer) und dann gehts los. Witzig (naja eigentlich nicht), wenn er "fehlauslöst" und der Fernseher läuft, dann "zeichnet" er erstmal Fleissig auf, Hatte mal ne ganze Tagesthemen Reportage dann als Text, (Ich glaub ich wiederhole mich gerade) :-)

Und er löst wieder öfter aus, das hört erst auf, wie sollte es sein, wenn er sich verschluckt hat. und dann das wakeword aus ist. So auf den abendverteilt wenn alle clients frisch aktiviert sind, so 5-6 oder öfter male, für falsch Auslösung. und ja noch nichtmal unbedingt in dem Raum wo dann der Fernseher läuft.

Zitat von: sepia am 09 Juli 2020, 13:50:36
Theoretisch ja, praktisch braucht man aber irgendeine Form des CLEXI Clients um die WebSocket Verbindug herzustellen und dann den Trigger Befehl über den Broadcast-Kanal zu schicken. Das ist auch ein schönes Beispiel für die zukünftigen Node-RED Möglichkeiten (weil man da die Endpoints schön per Drag-n-Drop verbinden und bedienen kann via CLEXI Node).

Das ist vermutlich genau das, was ich ja teilweise, wenn auch nicht so schön, per client und mqtt versucht habe, aber aufgehört habe, weil das ja mit updates nicht mehr wirklich pflegbar wäre. :-)
Aber meine Lösung gefällt mir bisher ganz gut.

Zitat von: sepia am 09 Juli 2020, 13:50:36
Mit "Ausgabe Device" meinst du quasi den Lautsprecher des Clients? Was genau ist hier noch mal die Aufgabe des Squeezeplayer, die Ausgabe auf ein anderes Gerät zu streamen? Oder generell Musik abzuspielen, die dann auf das Gerät gestreamt wird?
Das Ausgabegerät von SEPIA ist über die ALSA Einstellungen "konfiguriert". Im Besten Fall ist es einfach die Standardeinstellung des Systems oder was in der '~/.asoundrc' steht.

Der Logitech Media Server, ist quasi der Zentrale Dienst, der Squeezeplayer (Linux/Windows/Android/...) läuft dann jeweils als Player der den Multiroom Stream empfängt und dann an die lokale Soundkarte ausgibt. Ich nehme aber nicht direkt die Karte sondern das playback, bzw. ist dimex, also quasi das seeed voice sample. da hat er ja noch zwei Zwischenschritte.
Ich benötigte aber natürlich nur das play device, das record device nehme ich dort gar nicht. (Deswegen trage ich auch nicht das default ein). Damit sollten sie sich nicht in die quere kommen.
ich habs global unter /etc/asound.conf liegen, was aber im Endeffekt keinen Unterschied macht.


Zitat von: sepia am 09 Juli 2020, 13:50:36
Im Grunde wäre der zentrale Anlaufpunkt der SEPIA Chat Server. Der weiß welche User und DeviceIds online sind. Abfragen kann man die aber noch nicht, da wäre ein Endpoint durchaus sinnvoll :-)
Ansonsten müsste man sich mit jedem CLEXI Server des jeweiligen Clients verbinden und den "ping" request senden (wieder ein möglicher Anwendungsfall für Node-RED ^^).

Okay vielleicht im Node-Red einfacher. Vorteil wäre, so der Gedanke, das du du im Standard einbaust, muss sich nicht jeder am Ende einzelnd ausdenken. Und je weniger kann "daneben" gehen, wenn du mal was anpasst bei einem Update.

Zitat von: sepia am 09 Juli 2020, 13:50:36
Ich guck mal dass ich dem Client eine "App exit" Aktion spendiere :-) Background reicht nicht? Das müsste doch gehen oder? Die App macht eh nichts im Hintergrund und bei einem hard-exit dauert der Neustart länger.

Naja der Neustart ist vielleicht gar nicht schlecht. Denn, wenn ich aus dem Auto austeige, in der Tiefgarage bin keinen Empfang habe, gibts das nächste Problem :-)
Und ja ein Hintergrund reicht wohl nicht, weil die App ist normal im Hintergrund offen, und nicht als Always on. mit Wakeword aus, müsse ich mal testen, aber das wäre ja vom Prinzip unpraktisch.
Vorschlag, damit jeder sich was passendes, bzw. Situationsabhängiges hat und wenn die Stelle im Code hast, vermutlich "wenig" Mehraufwand.
"App Exit" "App Background" dann bist du für alle eventualitäten gewappnet. Sobald die app offen ist macht sie "zicken".

Zitat von: sepia am 09 Juli 2020, 13:50:36
Uh das klingt echt nervig :-[ Irgendwo kam dieses Problem schon mal (hatten wir das diskutiert?). Kommt der "Anruf" Status durch das Wake-word oder auch ohne? Ich hatte schon mal versucht ob es möglich ist die Audio-Kanäle in Android konkret auszuwählen aber das ist ziemlich schwierig bis unmöglich (zur Zeit). Die Kombination Wake-Word + Audio Output ist auch deshalb standardmäßig deaktiviert. Wenn Audio aus einer anderen App kommt kann SEPIA das aber nicht verhindern vermute ich.

ja am Anfang hatten wir das Diskutiert, ich hatte das aber zugunsten des DIY 2.5.0 Releases auf der Problemliste bei mir nach hinten geschoben, aber da der Fall in der letzten Zeit öfter vorkam, hab ich es wieder ausgegraben. Nach dem Release ist vor dem Release. :-) Das mit und ohne müsste ich probieren. Mit den Kanälen hatte ich mal im Tasker gesehen, das man ihm das mitgeben kann.


Zitat von: sepia am 09 Juli 2020, 13:50:36
Hmm ja theoretisch müsste das gehen. Jede App hat ja einen Ort in Android wo sie Dateien ablegen und auch lesen darf. Das wird etwas tricky aber klingt nach einer guten Idee :-)
Bezüglich Wake-Word ... es gibt ein undokumentiertes Feature im Client ^^ guck mal hier: https://github.com/SEPIA-Framework/sepia-docs/issues/52

Zitat von: sepia am 09 Juli 2020, 13:50:36
Mit der PS3 Eye wurde ich auch nicht glücklich damals, der Sound war immer viel zu leise wenn ich mich recht erinnere. Mitschneiden wäre wirklich praktisch, ist aber (Stand jetzt) ziemlich umständlich einzubauen :-/ dazu muss man irgendwie den Audio-Buffer abgreifen, duplizieren und dann wieder abspielbar machen :-[

Der Gedanke mit der PS3 Eye war ganz charmant, da der PI hinterm 3D Drucker hängt. WebCam für den Drucker und Mikro für die Spracherkennung. Spannend ist ja. Wakeword mag er nicht, sobal das Mik läuft versteht er mich wie eine eins.


Zitat von: sepia am 09 Juli 2020, 13:50:36
Uff 7s ist hart. Kommt das eigentlich auch wenn du den trigger button im Control HUB benutzt? Wenn ich mich recht erinnere wurde das auch weniger wenn man mehrere Befehle in kurzem Abstand benutzt hat oder? Geht da vielleicht irgendein Empfänger in den sleep-mode?

Grüße,
Florian

Ich hab es ja mit verschiedene Gerätetypen probiert. Also gerade nochmal über den Control HUB getestet und geklickt. Also er benötigt einen Moment nachdem ich auf das Symbol geklickt habe, umintern den state von off/on zu wechseln. Aber der Klick auf den Powerbutton, lässt quasi mit Mauszeiger loslassen das Licht an bzw. ausgehen. Ich muss dann nur Zwischen den Schaltvorgängen zwei Sekunden warten. (Also Lampen an und direkt wieder aus geht nicht), aber das war ja auch erstmal nicht das Problem. also da betellt das Problem wohl eher nicht. Dann muss es ein anderes Problem sein.

Und das mit dem kürzeren Abständen hatten wir schonmal, aber das funktioniert so auch nicht. Bzw. lässt sich nicht bestätigen.
Wenn ich mal eine Vermutung äussern kann/darf wie auch immer. Ich spreche den Text, dann wertet er den Text aus, baut den Befehl zusammen und schickt dann die Antwort zurück und dabei schaltet er.
Kann es sein, das die "Auswertung" vom Text so lange dauert? Wie gesagt, ich würde gerne suchen ich weiss nur nicht wo :-)

Das Log hatte ich dir ja mitgeschickt, dann siehst du ja eigentlich ganz gut, was er so abschickt und in welchem Abstand zurück bekommt.

Vielleicht hast du ja noch eine Idee, und ja so ist es nicht nutzbar ernsthaft, denn da hab ich ja schon 3 Schalter geklickt in der Zeit. :-) Wenn nicht eh der Bewegungsmelder oder Radarsensor der schnellste von allen ist. :-)
[/quote]

Gruß
Basti

PS: Naja mal kurz antworten geht nicht, wenn mal einmal antwortet. :-)

[EDIT] Noch ein kleiner Wunsch für deine Liste (sofern ich das noch nicht gefragt habe) du hast doch das Testskript wo du die Ports und zugriffe testest (test-cluster.sh), kannst du da noch einen Proxy Check einbauen?. Manchmal nach dem Neustart startet er ihn nicht mit, hab noch nicht gefunden warum. Dann hab ich ja das portmapping im Windows für localhost.
Nach einem grösseren Windows Update ist das auch schonmal weg, dann geht die suche los wer schuld ist. da wäre das test skript wenn das den proxy direkt mit checkt schon gold wert.

Danke.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 12 Juli 2020, 11:52:31
Zitat von: whistler am 10 Juli 2020, 01:15:55
Okay das hört sich aber nicht nach MQTT in Richtung Node-Red an oder? sondern ein Node?

Ja, im Grunde läuft es so: Die neue Node.js Library für SEPIA baut die Verbindung zum CLEXI Server auf und Node-RED ist nur eine Möglichkeit diese Verbindung via Drag & Drop Funktionen zu verarbeiten. Z.B. kann man alle CLEXI Events auslesen und via Node-RED MQTT Node irgendwo anders hinschicken :-)

Zitat von: whistler am 10 Juli 2020, 01:15:55
Mein gedanke war, ich schicke ein Kommando "Reload" zum Client oder Server und lasse, wenn er ein event inactive schickt ihn einrach einen Reload machen.
Nicht schön, aber dann steht man zumindest nicht doof davor und fragt sich, will er mich gerade nicht verstehen, oder kann er mich nicht verstehen. :-)

Theoretisch geht das, praktisch ist es aber mmn momentan noch zu kompliziert, weil man die authentifizierte Verbindung zu entweder CLEXI oder SEPIA Server benötigt und dann auf einem der Kanäle auf eine Antwort warten muss.
Für die nächste Version füge ich dem SEPIA Chat-Server einen Endpoint hinzu, der alle aktiven Clients ausgibt.

Zitat von: whistler am 10 Juli 2020, 01:15:55
... wenn er "fehlauslöst" und der Fernseher läuft, dann "zeichnet" er erstmal Fleissig auf, Hatte mal ne ganze Tagesthemen Reportage dann als Text, (Ich glaub ich wiederhole mich gerade) :-)

Alexa scheint da ziemlich robust zu sein, aber bei meinem Google Home hatte ich genau das gleiche Problem. Der hatte so viele Fehlzündungen beim TV gucken und auch generell, dass ich ihn irgendwann komplett rausgeschmissen habe :-/. Alexa erkennt dafür manchmal meine Zurufe nicht wenn der Fernseher läuft. Bei Musik haben die allerdings den unschlagbaren Vorteil, dass das was aus dem eigenen Lautsprecher kommt automatisch aus dem Mikrofonkanal rausgefiltert wird (ist zumindest meine Beobachtung).

Für SEPIA nutze ich zur Zeit ein Mikrofon, das Geräusche hauptsächlich aus einer bestimmten Richtung aufnimmt (Samson GoMic, lässt sich umschalten) um dieses Problem zu reduzieren. P.S.: Je mehr Wake-Words du gleichzeitig einstellst desto mehr Fehlalarme wirst du natürlich auch bekommen ;-)
Eventuell macht es auch Sinn ein System zu etablieren, das alle Wake-Words ausschaltet wenn man den Raum verlässt. Sowas wurde hier irgendwann ja auch schon mal kurz angesprochen über Bluetooth Beacons oder Wifi. Die Schnittstellen dafür vervollständige ich gerade.

Zitat von: whistler am 10 Juli 2020, 01:15:55
Das ist vermutlich genau das, was ich ja teilweise, wenn auch nicht so schön, per client und mqtt versucht habe, aber aufgehört habe, weil das ja mit updates nicht mehr wirklich pflegbar wäre. :-)
Aber meine Lösung gefällt mir bisher ganz gut.

Ja, im Grunde wird dadurch das Feature vom Client entkoppelt, so dass jeder einbauen kann was er braucht ohne am Source-Code zu spielen. Wer kein Node-RED nutzen will kann auch die Node.js Funktionen so laufen lassen. Node.js ist ja eh schon installiert für CLEXI.

Zitat von: whistler am 10 Juli 2020, 01:15:55
Ich benötigte aber natürlich nur das play device, das record device nehme ich dort gar nicht. (Deswegen trage ich auch nicht das default ein). Damit sollten sie sich nicht in die quere kommen.
ich habs global unter /etc/asound.conf liegen, was aber im Endeffekt keinen Unterschied macht.

SEPIA nimmt als Sound-Output einfach das was Linux als "default" definiert, es könnte allerdings sein, dass deine globale 'asound.conf' durch die im User Ordner überschrieben wird (die müsste höhere Priorität haben).

Zitat von: whistler am 10 Juli 2020, 01:15:55
Wakeword aus, müsse ich mal testen, aber das wäre ja vom Prinzip unpraktisch.

Ich mache es im Auto manchmal so: Handy in Halterung, SEPIA in Always-On Mode und dann für die Eingabe kurzer Tap auf das SEPIA Gesicht :-) Wake-word bleibt aus, das klappt bei mir eh nicht wegen zu hoher Geräuschkulisse :-/

Zitat von: whistler am 10 Juli 2020, 01:15:55
Vorschlag, damit jeder sich was passendes, bzw. Situationsabhängiges hat und wenn die Stelle im Code hast, vermutlich "wenig" Mehraufwand.
"App Exit" "App Background" dann bist du für alle eventualitäten gewappnet. Sobald die app offen ist macht sie "zicken".

Ich habe da noch mal drüber nachgedacht und mir ist dabei eingefallen, dass "App Exit" gar nicht existiert ... sowohl iOS als auch Android kennen Design bedingt nur "App Background". Es gibt Workarounds die mit entsprechenden System Rechten den Prozess killen können oder man bringt die App vorsätzlich zum Crash ... leider beides nicht wirklich Optionen für die App, sorry :-(

Zitat von: whistler am 10 Juli 2020, 01:15:55
Wenn ich mal eine Vermutung äussern kann/darf wie auch immer. Ich spreche den Text, dann wertet er den Text aus, baut den Befehl zusammen und schickt dann die Antwort zurück und dabei schaltet er.
Kann es sein, das die "Auswertung" vom Text so lange dauert? Wie gesagt, ich würde gerne suchen ich weiss nur nicht wo :-)

In den Server Stats und in der API Antwort kannst du die NLU Zeit sehen. Die ist bei mir im Schnitt 200-400ms auf einem RPi3. Es gibt eine Stelle, an der es etwas länger dauern könnte, da liest er alle Gerätenamen vom Smart Home HUB (FHEM) in den Cache. Wenn der Cache aus irgendeinem Grund leer ist und du viele Geräte hast könnte das etwas länger dauern. Was eventuell mal einen Versuch wert wäre ist beim Smart Home Service auf "Internal HUB" umzustellen und das besagte Gerät dort einrichten um zu gucken ob sich die Reaktionszeit ändert.
Im Assist-Server Log standen keine Warnungen bezüglich fehlender Verbindungen (MQTT Server die nicht mehr benutzt werden etc.) oder Funktion die zu lange gebraucht haben?

Zitat von: whistler am 10 Juli 2020, 01:15:55
[EDIT] Noch ein kleiner Wunsch für deine Liste (sofern ich das noch nicht gefragt habe) du hast doch das Testskript wo du die Ports und zugriffe testest (test-cluster.sh), kannst du da noch einen Proxy Check einbauen?

Kann ich machen, ja ;-) Ein möglicher System Befehl ist übrigens "sudo service nginx status".

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 14 Juli 2020, 20:36:01
Hey Florian,

kurze zwischenfrage aml ohne smarthome/mqtt service bezug:  hast du eine doku für den TTS endpoint, die ich nicht gefunden habe?
Würde den gerne weiter benutzen, wenn möglich.

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 14 Juli 2020, 23:01:33
Zitat von: TRallala am 14 Juli 2020, 20:36:01
Hey Florian,

kurze zwischenfrage aml ohne smarthome/mqtt service bezug:  hast du eine doku für den TTS endpoint, die ich nicht gefunden habe?
Würde den gerne weiter benutzen, wenn möglich.

Gruß
Markus

Hi Markus,

es gibt eine knappe aber nützliche Übersichtsseite für die Endpoints (https://github.com/SEPIA-Framework/sepia-docs/blob/master/API/assist-server.md). Dort ist auch ein TTS Beispiel. Der "/tts" Endpoint liefert einen Link zur Audiodatei. Eine Node.js (https://github.com/SEPIA-Framework/sepia-node-js-client/tree/dev) Library ist auch in Arbeit, falls dir das weiterhelfen würde.

Grüße
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 15 Juli 2020, 13:07:11
Mahlzeit,

danke. Funktioniert. Und doch auch wieder nicht. Ist der API nur eine "voice" zugeordnet, oder erlaubt?
Über "Tools" kann ich die picotts voice  "voice": "de-DE pico f" auswählen und nutzen.
Mach ich das manuell, per
curl -X POST -d "text='Hello World'&lang=de&voice='de-DE pico f'&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts
bekomm ich im Log:
ERROR - TTS FAILED: voice NOT found!

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 16 Juli 2020, 14:02:22
Zitat von: TRallala am 15 Juli 2020, 13:07:11
danke. Funktioniert. Und doch auch wieder nicht. Ist der API nur eine "voice" zugeordnet, oder erlaubt?
[...]
curl -X POST -d "text='Hello World'&lang=de&voice='de-DE pico f'&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts

Hi Markus,

die Anfrage sieht auf den ersten Blick korrekt aus und der Endpoint bedient auch alle Clients sprich das Ergebnis sollte identisch sein zu z.B. der Testseite aus dem Control HUB und der App (falls der Server identisch ist).
Versuch mal den "/tts-info" Endpoint um zu testen welche Stimmen angeblich verfügbar sind.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 17 Juli 2020, 10:59:17
Moin,

jetzt funzt's.
Problem:  bei "text" scheint der parser kulant zu sein und den übermittelten Wert 'Hello World' selbst zu (url) de/en-coden.
bei voice tut er das nicht und  man muss sich selbst drum kümmern.

also:
funktioniert NICHT:
curl -X POST -d "text='Hello World'&lang=de&voice='de-DE pico f'&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts

funktioniert:
curl -X POST -d "text='Hello World'&lang=de&voice='de-DE+pico+f'&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts
besser:
curl -X POST -d "text='Hello World'&lang=de&voice=de-DE%20pico%20f&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts
imho best:
curl -X POST -d "text=Hello%20World%20&lang=de&voice=de-DE%20pico%20f&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts

GrußMarkus

edit:
Bei Text darf nicht  encodiert werden.
Funktioniert auch nicht:
curl -X POST -d "text=Hello%20World%20&lang=de&voice=de-DE%20pico%20f&gender=default&mood=5&GUUID=uid1007&PWD=password" 1.2.3.4:20721/tts
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 25 Juli 2020, 20:48:10
Zitat von: sepia am 12 Juli 2020, 11:52:31
Ja, im Grunde läuft es so: Die neue Node.js Library für SEPIA baut die Verbindung zum CLEXI Server auf und Node-RED ist nur eine Möglichkeit diese Verbindung via Drag & Drop Funktionen zu verarbeiten. Z.B. kann man alle CLEXI Events auslesen und via Node-RED MQTT Node irgendwo anders hinschicken :-)

Theoretisch geht das, praktisch ist es aber mmn momentan noch zu kompliziert, weil man die authentifizierte Verbindung zu entweder CLEXI oder SEPIA Server benötigt und dann auf einem der Kanäle auf eine Antwort warten muss.
Für die nächste Version füge ich dem SEPIA Chat-Server einen Endpoint hinzu, der alle aktiven Clients ausgibt.

Das klingt vielversprechend, nach weniger Selbstumbau, und mehr wieder im Standard. :-) Customizing macht ja immer da sind, wo nix überschrieben wird, wie du ja schon die Cust Teach eingebaut hast. Wo ich auch mal weiter probieren könnte :-)

Zitat von: sepia am 12 Juli 2020, 11:52:31
Alexa scheint da ziemlich robust zu sein, aber bei meinem Google Home hatte ich genau das gleiche Problem. Der hatte so viele Fehlzündungen beim TV gucken und auch generell, dass ich ihn irgendwann komplett rausgeschmissen habe :-/. Alexa erkennt dafür manchmal meine Zurufe nicht wenn der Fernseher läuft. Bei Musik haben die allerdings den unschlagbaren Vorteil, dass das was aus dem eigenen Lautsprecher kommt automatisch aus dem Mikrofonkanal rausgefiltert wird (ist zumindest meine Beobachtung).

Ich bastel gerade eine Loopback, aber eher um passend zur Musik die Ausgabe abzufangen fürs Ambilight :-) Wieder eine andere Baustelle. Aber das mit dem Rausfiltern klingt spannend.
Ähnlich wie in der Höherpreisigen Autos, die Filtern auch die Geräusche vom aussenbereich damit es innen schönen Leise ist :-)

Zitat von: sepia am 12 Juli 2020, 11:52:31
Für SEPIA nutze ich zur Zeit ein Mikrofon, das Geräusche hauptsächlich aus einer bestimmten Richtung aufnimmt (Samson GoMic, lässt sich umschalten) um dieses Problem zu reduzieren. P.S.: Je mehr Wake-Words du gleichzeitig einstellst desto mehr Fehlalarme wirst du natürlich auch bekommen ;-)
Eventuell macht es auch Sinn ein System zu etablieren, das alle Wake-Words ausschaltet wenn man den Raum verlässt. Sowas wurde hier irgendwann ja auch schon mal kurz angesprochen über Bluetooth Beacons oder Wifi. Die Schnittstellen dafür vervollständige ich gerade.

Ja ich hatte tatsächlich überlegt die Wakewors mal wieder zu reduzieren, deswegen fand ich ja ursprünglich den gedanken nett, das er die Wakewords als Audio ablegen könnte. Dann könnte man sich das anhören, wenns läuft interessiert das natürlich nicht mehr. Also ich merke immer indirekt wenn es keine Fehlzündungen mehr gibt. Heisst das für mich das "Wakeword" ist abgestürzt.
Gutes Beispiel dafür, ich lasse ihn Restarten, geht ja auch gut per VNC, Reiter 3 Interface neu laden, das geht auch gut in der Mittagspause Remote. Das ich danach Telegram Meldungen fürs Hotword kriege so 1-2 Stunden aus allen unterschiedlichen Räumen. Wohlgemerkt es ist keiner daheim und alles Still und aus.


Zitat von: sepia am 12 Juli 2020, 11:52:31
Ja, im Grunde wird dadurch das Feature vom Client entkoppelt, so dass jeder einbauen kann was er braucht ohne am Source-Code zu spielen. Wer kein Node-RED nutzen will kann auch die Node.js Funktionen so laufen lassen. Node.js ist ja eh schon installiert für CLEXI.

Also das Problem ist vielleicht auch, das es mehr möglichkeiten gibt die du vielleicht ja kennst, weil du sie eingebaut hast, aber der rest nicht :-)
Aber ja so würde ich mir das wünschen, ich bin sicher nicht der einzige. (Hast du schon was DEV Test mässiges? ) :)

Zitat von: sepia am 12 Juli 2020, 11:52:31
SEPIA nimmt als Sound-Output einfach das was Linux als "default" definiert, es könnte allerdings sein, dass deine globale 'asound.conf' durch die im User Ordner überschrieben wird (die müsste höhere Priorität haben).

ich habe nur die globale, die scheint zu tun. es scheint auch damit nicht zusammen zu hängen. einmal sieht es so aus als gäbe es einen Zusammenhang dafür die nächsten 9 male nicht mehr :-) (1/10) ist ja nur nicht direkt reproduzierbar :-)

Zitat von: sepia am 12 Juli 2020, 11:52:31
Ich mache es im Auto manchmal so: Handy in Halterung, SEPIA in Always-On Mode und dann für die Eingabe kurzer Tap auf das SEPIA Gesicht :-) Wake-word bleibt aus, das klappt bei mir eh nicht wegen zu hoher Geräuschkulisse :-/

Ich habe da noch mal drüber nachgedacht und mir ist dabei eingefallen, dass "App Exit" gar nicht existiert ... sowohl iOS als auch Android kennen Design bedingt nur "App Background". Es gibt Workarounds die mit entsprechenden System Rechten den Prozess killen können oder man bringt die App vorsätzlich zum Crash ... leider beides nicht wirklich Optionen für die App, sorry :-(

Also ich hab das Wakeword mal ausgemacht, ich hatte den Verdacht auch schon. Aber du kennst das zwischen ja wird vermutlich so sein und eigentlich will ich das aber nicht so haben. :-)
Also damit ist zumindest das Lautstärke "Problem" weg.

Hast du denn ein Intent was Sepia direkt in den Always On Mode schicken kann, bzw. könntest du das einbauen?
Dann könnte ich das Triggern per Tasker. Das wäre dann vielleicht auch ein Kompromiss, ich weiss das der Absturz etc. keine Option ist, keine Frage.


Zitat von: sepia am 12 Juli 2020, 11:52:31
In den Server Stats und in der API Antwort kannst du die NLU Zeit sehen. Die ist bei mir im Schnitt 200-400ms auf einem RPi3. Es gibt eine Stelle, an der es etwas länger dauern könnte, da liest er alle Gerätenamen vom Smart Home HUB (FHEM) in den Cache. Wenn der Cache aus irgendeinem Grund leer ist und du viele Geräte hast könnte das etwas länger dauern. Was eventuell mal einen Versuch wert wäre ist beim Smart Home Service auf "Internal HUB" umzustellen und das besagte Gerät dort einrichten um zu gucken ob sich die Reaktionszeit ändert.
Im Assist-Server Log standen keine Warnungen bezüglich fehlender Verbindungen (MQTT Server die nicht mehr benutzt werden etc.) oder Funktion die zu lange gebraucht haben?


Zitat von: sepia am 12 Juli 2020, 11:52:31
Kann ich machen, ja ;-) Ein möglicher System Befehl ist übrigens "sudo service nginx status".

Ja ich weiss, aber ich dachte mir, so hat man den "kompletten" System report in einem Rutsch. Und ja auch hier könnte ich selber was bauen. Da sind wir wieder bei Punkt 1 oben. Da ist mir sich ein gemeinsamen weg einigen und du schiebst es dafür in den Standard :-)

Gruß
Basti
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 28 Juli 2020, 00:35:42
@sepia
ich glaube, ich muss noch mal alles von vorne installieren. Wie kann ich SEPIA vollständig mit allen Abhängigkeiten deinstallieren?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 30 Juli 2020, 20:35:43
Zitat von: whistler am 25 Juli 2020, 20:48:10
Ich bastel gerade eine Loopback, aber eher um passend zur Musik die Ausgabe abzufangen fürs Ambilight :-) Wieder eine andere Baustelle. Aber das mit dem Rausfiltern klingt spannend.
Ähnlich wie in der Höherpreisigen Autos, die Filtern auch die Geräusche vom aussenbereich damit es innen schönen Leise ist :-)

Hi Basti,
ich habe die Tage wieder intensiver am STT Server gespielt und auch ein paar Experimente gemacht mit Audio-Spektrum Analysen im SEPIA Client für so eine Art selbstgebautes Wake-Word ^^. Alles noch sehr weit am Anfang, aber ich bin jetzt etwas optimistischer, dass man da vielleicht langfristig mehr Kontrolle bekommt über das Audio-Interface ;-) .. naja das nur so als Teaser :-p

Zitat von: whistler am 25 Juli 2020, 20:48:10
Gutes Beispiel dafür, ich lasse ihn Restarten, geht ja auch gut per VNC, Reiter 3 Interface neu laden, das geht auch gut in der Mittagspause Remote. Das ich danach Telegram Meldungen fürs Hotword kriege so 1-2 Stunden aus allen unterschiedlichen Räumen. Wohlgemerkt es ist keiner daheim und alles Still und aus.

Ich habe einiges verbessert im Client um diese Probleme zu reduzieren, z.B. einen Auto-Reset wenn SEPIA zu lange im "Loading" Modus festhängt und diverse reconnect Prozeduren. Vermutlich habe ich auch eine Lösung gefunden für das Chromium "Bitte update mich" Popup (was offiziell im Raspberry Pi Forum als Bug geführt wird ^^). Alles in allem wird der 2.5.1 Client glaube ich deutlich robuster :-)

Zitat von: whistler am 25 Juli 2020, 20:48:10
Aber ja so würde ich mir das wünschen, ich bin sicher nicht der einzige. (Hast du schon was DEV Test mässiges? ) :)

Es gibt ein Node.js Repository (https://github.com/SEPIA-Framework/sepia-node-js-client) wo Einiges im Dev-Branch ist und auch schon funktioniert, ich kam aber die letzten Tage nicht dazu daran weiter zu arbeiten oder eine Erklärung zu schreiben. Bald sollte sich da aber wieder was bewegen :-)

Zitat von: whistler am 25 Juli 2020, 20:48:10
ich habe nur die globale, die scheint zu tun. es scheint auch damit nicht zusammen zu hängen. einmal sieht es so aus als gäbe es einen Zusammenhang dafür die nächsten 9 male nicht mehr :-) (1/10) ist ja nur nicht direkt reproduzierbar :-)

Ich fürchte hier weiß ich leider auch nicht weiter gerade :-/ Beim Audiosystem von Linux gibt es ca. 1 Millionen Mögliche Problemquellen und die hängen speziell von deiner Hardware ab (Mikrofon + Lautsprecher) und allen zusätzlich installierten Packages + Config Einstellungen für Streaming Software etc.. Dazu könnte man gut ein GitHub Issue aufmachen, in dem man spezielle Konfigurationen diskutiert ;-)

Zitat von: whistler am 25 Juli 2020, 20:48:10
Hast du denn ein Intent was Sepia direkt in den Always On Mode schicken kann, bzw. könntest du das einbauen?
Dann könnte ich das Triggern per Tasker. Das wäre dann vielleicht auch ein Kompromiss, ich weiss das der Absturz etc. keine Option ist, keine Frage.

Kein Android Intent aber einen Deeplink, ich glaube der müsste so aussehen: https://b07z.net/dl/sepia/index.html?view=aomode
Ich gehe mal davon aus Tasker kann Deeplinks für Apps nutzen?

Zitat von: whistler am 25 Juli 2020, 20:48:10
Ja ich weiss, aber ich dachte mir, so hat man den "kompletten" System report in einem Rutsch. Und ja auch hier könnte ich selber was bauen. Da sind wir wieder bei Punkt 1 oben. Da ist mir sich ein gemeinsamen weg einigen und du schiebst es dafür in den Standard :-)

Habs schon auf der Liste für 2.5.1 ;-)
Bist du mit deinem Timing Problem weitergekommen? (die Lange Verzögerung bei manchen Befehlen meine ich).

Zitat von: Jasdhewer am 28 Juli 2020, 00:35:42
@sepia
ich glaube, ich muss noch mal alles von vorne installieren. Wie kann ich SEPIA vollständig mit allen Abhängigkeiten deinstallieren?

Der Server hat keine Abhängigkeiten, da kannst du einfach den "~/SEPIA" Order löschen und ggf. den Cron-Job entfernen (falls du einen gesetzt hast).
Beim Client ist es etwas schwieriger, der sieht eigentlich nicht vor, dass man noch andere Sachen auf dem System laufen hat, deshalb gibt es da auch noch keine Deinstallationsprozedur. Ich würde empfehlen ein frisches System aufzusetzen, das geht ja ziemlich schnell.

Wenn du unbedingt das System erhalten willst wären in etwa folgende Schritte nötig:
- '~/sepia-client' Ordner öffnen und erstmal "shutdown.sh" ausführen
- dann den '~/sepia-client' Ordner löschen
- den Ordner '~/clexi' löschen
- Ordner '~/.config/openbox' löschen und openbox entfernen 'sudo apt-get remove openbox'
- Chromium entfernen: 'sudo apt-get remove chromium-browser'
- ggf. in der '~/.bashrc' den SEPIA Eintrag entfernen (müsste am Ende stehen unter '# Run SEPIA-Client on login?')
- ggf. '~/.asoundrc' prüfen oder entfernen

Was dann noch übrig bleibt sind Sachen wie Node.js, Xserver Pakete und Komponenten, die eventuell fürs Mikrofon installiert wurden etc.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 21 August 2020, 12:43:58
Hi Florian,

hast nicht zufällig ein Update  über das wir uns freuen können 8) ?

Gibt es eigentlich eine Möglichkeit aus fhem heraus mit dem sepia Client zu "sprechen"?
Am sinnvollsten wohl per "chat-channel" den man anschreiben kann  (per REST?) !?

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 24 August 2020, 23:28:52
Zitat von: TRallala am 21 August 2020, 12:43:58
Hi Florian,

hast nicht zufällig ein Update  über das wir uns freuen können 8) ?

Gibt es eigentlich eine Möglichkeit aus fhem heraus mit dem sepia Client zu "sprechen"?
Am sinnvollsten wohl per "chat-channel" den man anschreiben kann  (per REST?) !?

Gruß
Markus

Hi Markus,

Arbeiten am Update laufen auf Hochtouren ^^, aber ein bisschen dauert es noch. Teste gerade die Android App im Beta Channel weil Google mal wieder neue Anforderungen hat  :P ::)

Es gibt sowohl eine REST API als auch einen Weg über den Chat Server (WebSocket). Die REST API wäre der einfachere Weg, der hier (https://github.com/SEPIA-Framework/sepia-docs/blob/master/API/assist-server.md) ein bisschen dokumentiert ist. Das Socket-Interface ist etwas komplizierter, weil man ein bisschen Ping-Pong mit dem Server spielen muss bevor man akzeptiert wird.
FHEM würde eine Implementierung in PEARL benötigen oder?
Ich hatte auch mal angefangen einen Client in Node.js zu schreiben (siehe hier (https://github.com/SEPIA-Framework/sepia-node-js-client/tree/dev)), das ist aber noch nicht ganz fertig. Für multi-turn Dialoge müsste man das auch noch etwas erweitern.

Hattest du einen bestimmten Anwendungsfall im Auge? :-)

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 04 September 2020, 08:41:04
Na dann gedulden wir uns noch etwas...

Mein Anwendungsfall ergibt sich aus meinen mangelnden Programmierfähigkeiten. Befehle die sepia nicht versteht schicke ich an fhem und kann mit dem Modul talk2fhem "einfach" per regex verschiedenste tasks (per shell, perl oder direkt fhem) ausführen.
Das Ergebnis bzw. eine Antwort darauf würde ich dann an den sepia-client, in eben diesen chat, zurück geben wollen.

Die Doku reicht für meine Copy&Paste&Skriptadaptionsfähigkeiten leider auch nicht, evtl. hast noch einen Tip wo im Code ich den Endpoint und die Parameter nachlesen kann?

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Nitaro am 28 September 2020, 09:01:37
Ich hatte mich jetzt eine Weile nicht mit SEPIA beschäftigt.
Gibt es eine Möglichkeit das Admin-Kennwort zurückzusetzen ?
Ich habe es leider nicht notiert... :-\

EDIT: Gefunden! Das Setup Script noch einmal starten, dann kann man ein neues Passwort für den Admin und den Assistant User setzen.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Jasdhewer am 08 Oktober 2020, 21:17:29
Hallo,
nach langer Zeit habe ich nun noch mal von vorne begonnen:
Ich habe einen zweiten Pi genommen und dort alles nach Anleitung installiert. Nun ging auch wieder vieles, was vorher Probleme gemacht hat. Leider bekomme ich es jedoch immer noch nicht hin, per Client auf dem selben Pi mit dem Mikrofon die Befehle zu senden. Client ist auf Grün; in den settings habe ich wakeword auf true geändert. Woran könnte es liegen?

edit:
Meine Frage genauer: Wie muss ich ein Respeaker 4 installieren? Kann ich ganz genau nach der Anleitung nehmen, wie im Beispiel der Respeaker 2 oder was genau muss ich abändern? Ist noch davor eine Installation des Respeakers 4 notwendig?
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: sepia am 30 Oktober 2020, 12:53:02
Hallo zusammen, mir fehlt leider momentan die Zeit hier regelmäßig vorbeizuschauen :-( die Arbeiten an SEPIA gehen aber konsequent weiter :).

Kurze Info: die Version v2.5.1 ist seit letzter Woche online und sollte diverse "Problemchen" mit dem DIY Client beheben (stabiler, neue Fehlermeldungen über das Remote-Terminal etc.). Es gibt noch eine ganze Reihe von Updates, am Besten ihr schaut mal in die Release Notes (https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases)  8).

Zitat von: Jasdhewer am 08 Oktober 2020, 21:17:29
Meine Frage genauer: Wie muss ich ein Respeaker 4 installieren? Kann ich ganz genau nach der Anleitung nehmen, wie im Beispiel der Respeaker 2 oder was genau muss ich abändern? Ist noch davor eine Installation des Respeakers 4 notwendig?

In der Issues Sektion von SEPIA gibt es einen Thread (https://github.com/SEPIA-Framework/sepia-docs/issues/85) vielleicht hilft der?
Die neue Version hat auch eine neue Option für die Definition des Audio-Input/Output Gerätes via '~/sepia-client/setup'.

Grüße,
Florian
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 02 November 2020, 10:32:23
ZitatClient ist auf Grün; in den settings habe ich wakeword auf true geändert. Woran könnte es liegen?

funktioniert denn das MIC an sich? Sprich, wenn du remote das mikrofon aktivierst, kommt der "aufforderungston" und du kannst etwas aufnehmen?

An dieser Stelle hängt es nämlich grade bei mir (Pi Zero + 2-mic-HAT). Das Mic an sich funktioniert, das wakeword nur leider noch nicht einmal.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 15 November 2020, 13:56:49
Zitat von: sepia am 30 Oktober 2020, 12:53:02
Hallo zusammen, mir fehlt leider momentan die Zeit hier regelmäßig vorbeizuschauen :-( die Arbeiten an SEPIA gehen aber konsequent weiter :).

Kurze Info: die Version v2.5.1 ist seit letzter Woche online und sollte diverse "Problemchen" mit dem DIY Client beheben (stabiler, neue Fehlermeldungen über das Remote-Terminal etc.). Es gibt noch eine ganze Reihe von Updates, am Besten ihr schaut mal in die Release Notes (https://github.com/SEPIA-Framework/sepia-installation-and-setup/releases)  8).

Grüße,
Florian

Hallo zusammen,

ich hab mir nun auch endlich mal das Update eingespielt. Also erst den Server upgedatet mit dem Build your Own, das sollte sich ja hoffentlich nicht geändert haben. Läuft auch soweit.

Gestern musste dann der erste Client dran glauben, Aber zuerst die üblichen Verzeichnisse gelöscht ~/.. und dann neu eingespielt wget von github unzip setup etc. leider bekomme ich vom Remote Terminal keine Verbindung zum Server.

Fehlermeldung im Terminal: CLEXI connection failed! Server not reached.

Sowohl der neu installierte Client als auch die Alten Clients verbinden sich nicht mehr.
Es wird der Rote Punkt. (Als Test per http:// klappt der Aufruf und der nginx vom Client antwortet)

Hat jemand eine Idee was das sein könnte?

Vielen Dank und einen schönen Sonntag
Basti

EDIT: Scheinbar war es eine Vermischung von caching im Browser und das ich mal wieder in den Reverse Proxy Fehler getappt bin nach dem Update.

@Florian: würdest du bei nächster Gelegenheit eine kleine Erweiterung aufnehmen (Die Dateien ändern sich ja nicht so oft).
Die on-reboot.sh klonen zu (z.B.) on-reboot-proxy.sh
Dort ist dann der Proxy aufruf direkt aktiviert. Dann kann man sich den jeweiligen gewünscht Eintrag in die Cronjobs legen. (Alternative -proxy anhängen was intern das gleiche macht) :-)
Der proxy verzögert zu starten führt meistens dazu, das es nen Timeout oder so gibt, das es dann fehlschlägt, und wenn man nicht drauf achtet, dann endet es im "Chaos" :-)

Danke schön.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Flossenfahrer am 20 November 2020, 08:26:26
Hallo zusammen,

nachdem ich mich vor längerem mal etwas mit SNIPS beschäftigt hatte und dann beim Wiederbeleben meines Projekts leider die Sonos-Geschichte feststellen musste, bin ich glücklicherweise über SEPIA gestolpert. Damit bin ich deutlich besser klargekommen und hatte doch tatsächlich innerhalb kürzester Zeit meine erste Lampe geschaltet. Danke Florian, für die tolle Arbeit.

Einzelne Problemchen habe ich allerdings noch:
In der Android App kann ich Befehle bisher nur absetzen, wenn ich die Aufnahme manuell anstoße. Auf das Wake Word reagiert der Client bisher überhaupt nicht. Auch auf der Einstellungsseite komme ich nicht weiter. Ich sehe bei eingeschaltetem Debug zwar die Meldungen bis "STARTED recorder" wenn ich den Test starte bzw. "SUSPENDED audio-context", wenn ich den Test stoppe, aber auf 'Hey SEPIA' reagiert die App im Moment gar nicht. Was mache ich falsch? Die App ist auf deutschen Sprachdialog eingestellt und ansonsten versteht Sepia mich bestens.

Der headless DIY-Client (Raspi 3B mit Respeaker 4-mic array, output über analoge Buchse) läuft prinzipiell super. Leider aber nur auf englisch, was die Akzeptanz im Haushalt etwas schmälert. Wahrscheinlich bin ich nur zu blöd, um den richtigen Hinweis zu finden, wie man SEPIA hier deutsch sprechen lässt. Kann mir da jemand einen Tip geben?

Zitat von: Jasdhewer am 08 Oktober 2020, 21:17:29

Meine Frage genauer: Wie muss ich ein Respeaker 4 installieren? Kann ich ganz genau nach der Anleitung nehmen, wie im Beispiel der Respeaker 2 oder was genau muss ich abändern? Ist noch davor eine Installation des Respeakers 4 notwendig?

Das hat bei mir relativ gut geklappt. Ich habe die Installation des SEPIA Clients nach der Variante 2 durchgeführt, nur anstatt des mitgelieferten Scripts für den 2 Mic Hat die Installation der Treiber wie hier beschrieben abgearbeitet:
https://wiki.seeedstudio.com/ReSpeaker_4_Mic_Array_for_Raspberry_Pi/#getting-started

Das Deaktivieren des Output-Jack habe ich auch weggelassen.
Anschließend mit dem setup.sh Script über den Punkt 8 das Audio Input Device auf 'ac108' gesetzt und voilà... läuft.

Viele Grüße,
Ocke
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 23 November 2020, 14:12:29
Hi Ocke,

ZitatIch sehe bei eingeschaltetem Debug zwar die Meldungen bis "STARTED recorder" wenn ich den Test starte bzw. "SUSPENDED audio-context", wenn ich den Test stoppe, aber auf 'Hey SEPIA' reagiert die App im Moment gar nicht. Was mache ich falsch?
Wenn ich die debug Info einschalte, funktioniert das WW bei mir auch nicht (mehr).

Prinzipiell kann man nicht viel falsch machen, entweder über "Hey Sepia" und "Start" die Erkennung, manuell starten, oder
die Einstellungen "Allow local/wake-word" und "Load Engine on start" aktivieren, etwas gedulden, app neu starten.

Ich muss recht nah an mein Mic dran, damit die Aufahme startet, aber sonst funktioniert es ohne weiteres zutun.

Zitatwie man SEPIA hier deutsch sprechen lässt. Kann mir da jemand einen Tip geben?
log dich mal mit dem Benutzer den du am Headless client benutzt am webclient an und stell dort die Sprache auf DE.
Die Begrüßung wenn der Client startet ist bei mir jedoch weiterhin auf EN.

Viel Erfolg.
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 26 November 2020, 11:22:37
Hallo,

ich würde mich gerne auch mit dem Thema wieder näher beschäftigen.
HW hätte ich Zuhause, nur die Mikrophone muss ich kaufen.
Abner welche(s) sollte man nehmen?

Das Thema wurde bereits mehrfach besprochen, aber wirklich nachvollziehen kann ich es trotzdem nicht.
Zur Auswahl stehen ja anscheinend folgende Mikrophone:

Wie sind Eure Erfahrungen mit den unterschiedlichen Mikrophonen? Zahlt sich ein 6-er aus? Oder sollte es wegen Empfindlichkeit/Reichweite etc. ein 4-er sein?
Oder sollte es in großen Räumen ein 6-er sein und in kleineren reicht das 2-er?

Danke schon mal.
lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Flossenfahrer am 28 November 2020, 20:55:15
Danke Markus,

beide Tipps waren erfolgreich.

Wobei ich allerdings generell sowohl bei dem DIY-Client als auch in der App noch echt üben muss, dass Sepia mich auf versteht. In der App klappt es sehr selten und am Client muss ich es etwa jedes zweite Mal wiederholen. Weiß nicht, ob das an meiner Aussprache liegt oder ob da von mir an den Einstellungen noch etwas verbessert werden kann...

Ich übe einfach fleissig weiter ;-)

Ocke
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: gestein am 02 Dezember 2020, 00:23:08
Hallo,

@Florian:
ich würde gerne das Sepia-Logo für fhem übernehmen.
Ist das ok für Dich?
Würde es vorher mit Dir abstimmen.

lg, Gerhard
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 27 Dezember 2020, 23:55:47
Hallo Zusammen,

ich scheitere leider bei der Integration in FHEM.
Die credentials habe ich wie hier beschrieben eingetragen:
https://github.com/SEPIA-Framework/sepia-docs/wiki/Smart-Home-Controls

smarthome_hub_auth_type=Basic
smarthome_hub_auth_data=meinenhash

Wenn ich Load Hub Info klicke, zieht er sich keine Infos.
Register Sepia funktioniert nicht mit dem Hinweis auf das Log.

Hier die Log
2020-12-27 22:21:10 LOG - Security policy and manager set.
2020-12-27 22:21:10 LOG - Security sandbox loaded with 6 entries.
2020-12-27 22:21:10 LOG - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-armhf
2020-12-27 22:21:10 LOG - loading settings from Xtensions/assist.custom.properties... done.
2020-12-27 22:21:10 LOG - --- Running SEPIA-Assist-API with CUSTOM settings ---
2020-12-27 22:21:11 [main] INFO StaticFilesConfiguration - External StaticResourceHandler configured with folder = Xtensions/WebContent
2020-12-27 22:21:11 LOG - Web-server is active and uses folder: Xtensions/WebContent - CORS (files): *
2020-12-27 22:21:11 LOG - Web-server MIME type overwrite: mp4=video/mp4
2020-12-27 22:21:11 LOG - Web-server MIME type overwrite: mp3=audio/mpeg
2020-12-27 22:21:11 LOG - Elasticsearch: found 14 of 14 mapped indices. All good.
2020-12-27 22:21:12 LOG - Finished loading answers module in 1084 ms.
2020-12-27 22:21:13 LOG - Finished loading 157(146) predefined commands in 494 ms.
2020-12-27 22:21:13 LOG - Finished loading 794(749) predefined chats in 724 ms.
2020-12-27 22:21:13 LOG - Loaded NLU interpretation-chain with 7 steps: [getPersonalCommand, getFixCommandsExactMatch, getChatSmallTalkMatch, getPublicDbSentenceMatch, getKeywordAnalyzerResult, tryPersonalCommandAsFallback, tryChatSmallTalkAsFallback]
2020-12-27 22:21:13 LOG - Running TTS module setup ...
2020-12-27 22:21:13 ERROR - TTS module - MaryTTS server (http://127.0.0.1:59125) did not answer or had no voices installed. Support has been deactivated for now.
2020-12-27 22:21:13 LOG - TTS module - Added 2 Espeak voices.
2020-12-27 22:21:13 LOG - TTS module - Added 3 Pico voices.
2020-12-27 22:21:13 LOG - TTS module setup has cleaned up '0' leftover files.
2020-12-27 22:21:13 LOG - TTS module setup successful.
2020-12-27 22:21:13 LOG - Services:News - Loaded 54 outlets with groups for 2 languages from: Xtensions/ServiceProperties/news-outlets.json
2020-12-27 22:21:14 LOG - RssFeedReader - backup restored with 51 feeds. Last modified: 2020.12.27_22:18:12
2020-12-27 22:21:14 LOG - Active workers: 2
2020-12-27 22:21:14 LOG - loading webSocket settings from Xtensions/assist.custom.properties... done.
2020-12-27 22:21:14 LOG - finished loading services mapping for 34 interview modules.
2020-12-27 22:21:14 LOG - Testing services for supported commands...
2020-12-27 22:21:14 LOG - 34 services for 34 commands: All valid!
2020-12-27 22:21:14 LOG - Testing parameters handlers...
2020-12-27 22:21:14 LOG - Parameters:RadioStation - Loaded 76 station arrays with 11 playlists and 6 collections from: Xtensions/ServiceProperties/radio-stations.json
2020-12-27 22:21:14 LOG - ParameterTools - Method 'SmartDevice#deviceNamesScan' has ID: 1
2020-12-27 22:21:14 LOG - 59 parameters: All valid!
2020-12-27 22:21:15 LOG - Server token validated
2020-12-27 22:21:15 LOG - Assistant token validated
2020-12-27 22:21:15 LOG - Added 'admin' and 'assistant' to protected accounts list.
2020-12-27 22:21:15 LOG - Starting Assistant-API server v2.5.1 (custom)
2020-12-27 22:21:15 LOG - date: 27.12.2020 - 22:21:15 - GMT
2020-12-27 22:21:15 LOG - server running on port 20721
2020-12-27 22:21:15 [Thread-3] INFO log - Logging initialized @5714ms to org.eclipse.jetty.util.log.Slf4jLog
2020-12-27 22:21:15 [Thread-3] INFO EmbeddedJettyServer - == Spark has ignited ...
2020-12-27 22:21:15 [Thread-3] INFO EmbeddedJettyServer - >> Listening on 0.0.0.0:20721
2020-12-27 22:21:15 [Thread-3] INFO Server - jetty-9.4.18.v20190429; built: 2019-04-29T20:42:08.989Z; git: e1bc35120a6617ee3df052294e433f3a25ce7097; jvm 11.0.9.1+1-post-Raspbian-1deb10u2
2020-12-27 22:21:15 [Thread-3] INFO session - DefaultSessionIdManager workerName=node0
2020-12-27 22:21:15 [Thread-3] INFO session - No SessionScavenger set, using defaults
2020-12-27 22:21:15 [Thread-3] INFO session - node0 Scavenging every 600000ms
2020-12-27 22:21:15 [Thread-3] INFO AbstractConnector - Started ServerConnector@835ef3{HTTP/1.1,[http/1.1]}{0.0.0.0:20721}
2020-12-27 22:21:15 [Thread-3] INFO Server - Started @6074ms
2020-12-27 22:21:20 LOG - Clients: Checking connection to socket messenger...
2020-12-27 22:21:20 LOG - Clients: Socket messenger found.
2020-12-27 22:21:21 [Thread-2] INFO SocketClientHandler - WEBSOCKET-CLIENT - Connecting to: ws://localhost:20723/messages/
2020-12-27 22:21:21 [WebSocketClient@27290495-32] INFO SepiaSocketClient - WEBSOCKET-CLIENT: Got connection
2020-12-27 22:21:21 [Thread-21] INFO SepiaSocketClient - WEBSOCKET-CLIENT: Authenticating user: 'uid1005'
2020-12-27 22:22:13 LOG - JSON-Backup-worker: START
2020-12-27 22:22:14 LOG - JSON-Backup-worker: Data has been stored! (1 time(s)) It took (ms): 178, average (ms): 10000
2020-12-27 22:23:01 LOG - USER uid1003 used SERVICE events_personal - TS: 1609107781418 - LANGUAGE: en - CLIENT: b1_safari_browser_v0.23.0 - API: v2.5.1
2020-12-27 22:23:01 LOG - USER uid1003 used SERVICE timer - TS: 1609107781419 - LANGUAGE: en - CLIENT: b1_safari_browser_v0.23.0 - API: v2.5.1
2020-12-27 22:23:01 LOG - USER uid1003 used SERVICE timer - TS: 1609107781422 - LANGUAGE: en - CLIENT: b1_safari_browser_v0.23.0 - API: v2.5.1
2020-12-27 22:23:24 ERROR - FHEM - registerSepiaFramework: Failed! Could not load global attributes. Msg.: {"code":-1,"error":"javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target","HTTP_REST_SUCCESS":false}


Wie bekomme ich das Zertifikat verknüpft?
Ich komme leider nicht weiter und bin  leider auf Hilfe angewiesen.
Bitte gebt Bescheid, wenn ich weitere Infos liefern muss.

Danke und schönen Abend!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 28 Dezember 2020, 15:19:48
Hallo Nochmal,

ich habe HTTPS deaktiviert und jetzt geht es - mein AVR wird auch gleich gesehen.

Ich komme also vorerst voran und kann weiter testen, wenn er RPi Zero und das Mikro ankommen.
Freue mich jetzt schon wie Bolle!

Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 29 Dezember 2020, 07:53:40
Guten Morgen Zusammen,

heute will ich mich zuerst für die viele und gute Arbeit bedanken, die Florian und so mancher anderer hier schon in die Funktionen von SEPIA+FHEM gesteckt hat.
Das hatte ich im Juchhe ganz vergessen. Es freut mich aber wirklich sehr, dass es so eine Lösung zu Sprachsteuerung gibt.

Die Grundinstallation habe ich größtenteils zum Laufen bekommen und warte derzeit noch auf das Mikro, um die Sprachsteuerung einzurichten.
...ich bin schon ziemlich stolz, dass ich soweit gekommen bin ^^. Liegt natürlich nur an dem !super! Installationsscript @Florian
Bis das Mikro kommt, wollte ich mir die Steuerung der Devices per Chat anschauen und dabei stoße ich leider auf Probleme, die ich nach 4 Stunden versuchen nicht gelöst bekomme.
Ggf. liegt das an meinem noch fehlenden FHEM Grundverständnis. Das Grundlagenbuch ist auch noch nicht da...!

Ich plane vorerst eigentlich "nur" die Steuerung des Yamaha AVR und 2-4 WLED Stripes mit eingeschränkten Befehlen.

Yamaha:
- an/aus
- mute toggle
- lauter
- leiser

WLED
- an/aus 

Aktuell fokussiere ich mich auf die Yamaha Steuerung.

an/aus des Yamahas funktioniert per teach it. Die anderen Funktionen leider nicht ("Cannot switch device state due to unknown old state: mute toggle"). Da er nicht switchen soll, es aber nur diese Auswahl in SEPIA gibt, vermute ich, dass ich das in FHEM falsch definiert habe...?

In FHEM habe ich für die drei Funktionen einen Dummy angelegt, der per notify die entsprechende Funktion im Yamaha triggert. Ist das falsch?
Ein Beispiel für lauter hänge hier an. VolumeDown und mute toggle sind identisch aufgebaut. In FHEM werden die Befehle ausgeführt und funktionieren.

Hat mir jemand ein Tipp, wie ich das richtig mit SEPIA verknüpfen kann?
Danke Euch

Grüße
Timo



Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 29 Dezember 2020, 10:05:54
Hallo Timo,

Zitatan/aus des Yamahas funktioniert per teach it
einfaches (ein/aus/um-)schalten funktioniert auch ohne teach it.
Dazu muss nur der sepia-type gesetzt sein (und evtl sepia-state-type auf "binary")

Für den Rest:
Über teach it kannst du dann einen einzigen dummy ansteuern, der lauter, leiser und mute umschaltet (s.Ahnhang) - drei sind nicht nötig.

Deine Vorfreude auf das RiPi Zero Projekt muss ich leider etwas dämpfen: Ich habe es momentan wieder auf Eis gelegt, da der Pi einfach zu schwachbrüstig für die doch hungrige "app" ist.
Das ganze funktioniert zwar, aber leider nicht sehr performant.

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 29 Dezember 2020, 14:18:58
Hi Markus,

vielen Dank für den Tipp.
Ich werde mich heute Abend wieder dran machen und es in SEPIA versuchen umzusetzen.
Habe dadurch nun auch verstanden, wie ich mehrere Attribute in einem Dummy abbilde - DANKE.
Im wiki wird das mit einem Schalter on:off beschrieben - das hatte ich als 1 Attribut verstanden. Dass man beliebig viele Attribute durch ":" anhängen kann, war mir nicht direkt verständlich  :-[

...Lernkurve ^^

Viele Grüße
Timo
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 30 Dezember 2020, 16:23:23
Hi Markus,

ich habe es soweit hinbekommen, dass er lauter und leiser macht, wenn ich es in Sepia eingebe.
Nur leider macht er das ganze immer nur ein mal. Danach steht der State auf lauter oder leiser und er wendet es nicht noch einmal an. Wie hast Du das gelöst? Darf ich Dich auch fragen, wie dein Mute notify aussieht? Ich habe das mit mute toggle im Dummy und der $EVENT Definition gemacht (notify: Yamaha set AVR $EVENT) so wird kein Name vergeben, den ich an Sepia weitergeben kann.
Ein/Aus ohne teach, habe ich nicht hingekommen. Das ist aber auch nicht so wild. Verstehe nur nicht wieso...

Grüße und guten Rutsch!
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Tom_S am 04 Januar 2021, 12:50:08
hallo,

ich habe das jetzt mal ausprobiert, und es funktioniert soweit ganz gut. Ich habe erstmal nur den Server und die Android App getestet.
Gibt es eine Möglichkeit den Server beim Start des Betriebssystems zu starten. Läuft bei mir auf Debian Stretch im Ordner unter /opt/sepia.
Folgendes Script habe ich probiert
# $Id: sepia.service 19235 2020-12-20 Tom_S $

[Unit]
Description=Sepia for FHEM Home Automation
Wants=network.target
After=network.target

[Service]
Type=forking
User=sepia
Group=dialout
WorkingDirectory=/opt/sepia
#ExecStartPre=/bin/sleep 60
ExecStart=/opt/sepia/run-sepia.sh
Restart=always

[Install]
WantedBy=multi-user.target


ein "systemctl start sepia.service" funktioniert.
Beim Systemstart schlägt es aber fehl. Wie macht ihr das?

Gruß Tom_S
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 04 Januar 2021, 20:21:54
@Tom_S

im Raspberry script wir das mit einem Cronjob erledigt.
siehe:
https://github.com/SEPIA-Framework/sepia-docs/wiki/Installation

nach 10.
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: TRallala am 06 Januar 2021, 11:37:27
@Timo
Habe deine Beiträge nochmal genau(er) gelesen: am besten nochmal von vorne.

Warum benötigst du einen/drei dummy und die notifier?  Du kannst den Receiver "bumbum" doch einfach direkt von sepia steuern.
An/Aus sollten direkt funktionieren (evtl. sepia-set-cmds anpassen) und VolumeUp/Down/Mute mit Hilfe von teachUI ebenfalls.

Um sicher zu gehen, dass auch genau das richtige Gerät geschaltet wird, definiere am besten die sepia attribute durch.

Anbei nochmal als Hilfe - so funktionierts bei mir. VolU, VolD und mute müssen jeweils angelernt werden.
(Increase und decrease bei den sepia-set-cmds wird von sepia leider noch nicht unterstützt.)

Gruß
Markus
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: bub4 am 07 Januar 2021, 20:20:59
Hi @TRallala Markus,

vielen Dank nochmal für Deine Hilfestellung!! Das hat mir ein ganzes Stück weitergeholfen.

Ich hatte zunächst angenommen, dass Sepia Probleme mit der Übertragung Großer Buchstaben hat und sets wie volumeUp deshalb nicht ausführt. Daher hatte ich für volumeUp und Down zwei notifys gemacht. Der dritte war für das Event Mute.

Zwischenzeitlich bin ich aber etwas weiter gekommen und arbeite nur noch mit einem Dummy und einem $EVENT notify für den Yamaha. Auch konnte ich Kodi mit der Kodiremote einbinden. Den HTPC kann ich sogar ohne anlernen mit dem teachUI - nativ - WOLen. Nur der AV-Receiver will nicht ohne teach. Ich habe das jetzt einfach über den Yamaha Dummy abgebildet und werde mich dem vllt später nochmal widmen. Heute kam auch der Zero nebst ReSpeaker und ich kann mir hoffentlich bald ein Bild über die Client performance machen.

Da muss ich wohl auch noch ein paar Stunden versenken:
Mit dem STT Server https://github.com/SEPIA-Framework/sepia-stt-server (https://github.com/SEPIA-Framework/sepia-stt-server) hatte ich schon rumgespielt und es mit englischer Spracheingabe hingekriegt, aber ich war nicht in der Lage den Server auf deutsche Spracheingabe umzustellen. :-[

Ich bin auch noch nicht sicher, ob ich den STT Server überhaupt benötige, wenn ich  nur mit den RPi clients arbeiten möchte. Im Lokalen Netzwerk sollte der RPi Zero Client auch ohne SSL mit dem Sepia Server per Sprache kommunizieren können....? Die Smartphonebrowser möchten das ja nur... Safari zickt hier auch am schlimmsten, habe ich so den Eindruck.

Durchgestiegen bin ich da noch lange nicht, aber ich bleibe mal am Ball.

Grüße und schönen Abend! 
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: Hardlife am 10 Februar 2021, 00:18:03
Hi liebe FHEM-User,


ich bin auch auf den Geschmack gekommen und grad ein bisschen am probieren...

Hat von Euch eventuell wer den Client auf Apache am Laufen?
(bei mir ist der schon für andere Zwecke am Pi im Einsatz)

Oder kennt sich jemand eventuell etwas besser als ich mit Apache aus? - Da brauchts nicht viel  :)
Und könnte die nginx-config auf Apache ummünzen?

https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/sepia-client-nginx.conf (https://github.com/SEPIA-Framework/sepia-installation-and-setup/blob/master/sepia-client-installation/rpi/sepia-client-nginx.conf)

Vielen Dank vorab.

LG,
Hardlife
Titel: Antw:SEPIA open-source Sprachassistent: Integration in FHEM?
Beitrag von: whistler am 21 Februar 2021, 19:47:34
Hallo Hardlife,

Zitat von: Hardlife am 10 Februar 2021, 00:18:03
Hat von Euch eventuell wer den Client auf Apache am Laufen?
(bei mir ist der schon für andere Zwecke am Pi im Einsatz)

Oder kennt sich jemand eventuell etwas besser als ich mit Apache aus? - Da brauchts nicht viel  :)
Und könnte die nginx-config auf Apache ummünzen?

vor dem "gleichen" Problem stand ich auch, nehme an dein Apache läuft auf Port 80. Und der nginx lässt sich nicht installieren / aktivieren? Richtig.
Dort solltest aber für den Sepia Client nicht umschreiben, sondern die zwei Nebeneinander laufen lassen.

Heisst:
die default site vom nginx löschen damit er nicht mehr auf port 80 lauscht (wo bei dein apache läuft)
rm /etc/nginx/sites-enabled/default

Then restart nginx:
service nginx reload

und den apache einmal neustarten, oder am besten den Pi Rebooten, je nachdem welcher Dienst zuerst gestartet wurde ist der Status jeweils unklar.

Damit bleibst du Updatefähig und kannst den Apache einfach weiter nutzen. (Läuft bei mir sehr gut so)

Hoffe das hilft dir weiter.

Schönen Sonntag.

Gruß
Basti