SEPIA open-source Sprachassistent: Integration in FHEM?

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

Vorheriges Thema - Nächstes Thema

bub4

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!

bub4

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!


bub4

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




TRallala

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

bub4

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

bub4

#350
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!

Tom_S

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
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

bub4


TRallala

@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

bub4

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

Hardlife

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

Vielen Dank vorab.

LG,
Hardlife
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

whistler

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