SEPIA open-source Sprachassistent: Integration in FHEM?

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

Vorheriges Thema - Nächstes Thema

sepia

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)

sepia

#46
Frohe Weihnachten wünsche ich euch :)

Es gibt eine neue Testversion für die FHEM Integration in SEPIA: DOWNLOAD
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):

  • Berücksichtigung der bekannten 'set' Befehle für Thermostate
  • Neue globale Attribute in FHEM 'sepia-room-index' (Räume können nun mehrfach existieren, z.B. Badezimmer 2), 'sepia-state-type' (falls die automatische Zuweisung nicht klappt, kann z.B. ein Gerät explizit den Statustypen 'number_temperature_c' haben als Heizung in °C) und 'sepia-set-cmds' (falls keines der automatischen 'set' Kommandos funktioniert kann ein individuelles definiert werden)
  • Neue Einstellung in der App für den Gerätestandort und Anpassung im Smart Home Service, so dass ein Gerät z.B. explizit dem Badezimmer 1 zugeordnet werden kann und der Befehl "Licht" dann nicht mehr nach dem Raum fragt
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

TRallala

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

sepia

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.

TRallala

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

sepia

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

sepia

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
Einfach die alte im Ordner '\sepia-assist-server' überschreiben, Server neu starte und fertig.

TRallala

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

sepia

Die neu SEPIA Version v2.4.0 mit FHEM Support ist jetzt offiziell: LINK ;D

klausw

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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

sepia

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

ekur

#56
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
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC

sepia

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

JensS

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
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

ekur

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
FHEM 5.8 auf Intel NUC, Visualisierung TabletUI auf Lenovo Tab10, Datenlogging MySQL
CUL_HM  HM-CC-RT-DN, HM-RC, HM-LC-BL1-FM, HM-PBI-4-FM, HM-SEC-SD, HM-SEC-SCo
ZWave
OWDevice:DS1420,DS18B20 an Intel NUC