SEPIA open-source Sprachassistent: Integration in FHEM?

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

Vorheriges Thema - Nächstes Thema

whistler

#285
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

Jasdhewer

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< 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

Nitaro

#287
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!"
}


sepia

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

whistler

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

sepia

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 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

sepia

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 ;-)

Nitaro

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.

sepia

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 ^^.

Jasdhewer

#294
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.

TRallala

#295
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

whistler

#296
Zitat von: sepia am 21 Juni 2020, 23:32:10
Ok, verstanden :-) Nur eins noch: dieses Snips LED Tool 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

sepia

#297
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 ^^.

whistler

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 :-)

Jasdhewer

@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.