Giter Club home page Giter Club logo

snips-openhab's Introduction

Snips-openHAB

Skill für Snips.ai zur Ansteuerung von Geräten mit openHAB.

Installation

Der Skill kann über die Snips-Konsole installiert werden.

Konfiguration

Damit der Skill funktionieren kann müssen die Items in openHAB mit Tags der Eclipse Smart Home-Ontologie getaggt werden. Weitere Informationen dazu befinden sich in der Dokumentation.

snips-openhab's People

Contributors

alpha200 avatar mryshakow avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

snips-openhab's Issues

.items Anfänger

Hallo zusammen,

als OpenHAB Anfänger schaffe ich es leider nicht, den Skill zu Luafne zu bringen.

Sam watch gibt folgendes aus:
...
[Asr] captured text "setze die wiedergabe im wohnzimmer fort" in 3.0s
[11:14:16] [Asr] was asked to stop listening on site default
[11:14:16] [AudioServer] was asked to play a wav of 93.1 kB with id '9f325e70-0ae5-498e-aefd-e7b4a3dfc678' on site default
[11:14:17] [AudioServer] finished playing wav with id '9f325e70-0ae5-498e-aefd-e7b4a3dfc678'
[11:14:17] [Nlu] was asked to parse input "setze die wiedergabe im wohnzimmer fort"
[11:14:17] [Nlu] detected intent Alpha200:playMedia with confidence score 1.000 for input "setze die wiedergabe im wohnzimmer fort"
Slots ->
room -> Wohnzimmer (confidence: 1.000)
[11:14:17] [Dialogue] New intent detected Alpha200:playMedia with confidence 1.000
Slots ->
room -> Wohnzimmer (confidence: 1.000)
[11:14:23] [Dialogue] session with id 'ec42f502-3673-43f6-912f-85576e846ea5' was ended on site default. The session was ended because one of the component didn't respond in a timely manner
[11:14:23] [Asr] was asked to stop listening on site default
[11:14:23] [Hotword] was asked to toggle itself 'on' on site default
...
Meine OpenHAB Itemes Datei:
Group gFF "2. Etage" ["FirstFloor"]
Group gGF "1. Etage" ["GroundFloor"]
Group gC "Keller" ["Basement"]
Group Garden "Balkon" ["Garden"]

Group Wohnzimmer "Wohnzimmer"

Group FF_Bath "Badezimmer" (gFF) ["Badezimmer"]
Group FF_Corridor "Flur" (gFF) ["Flur"]

/* active groups */
Group Lautsprecher "Alle Lautsprecher" ["Wohnzimmer","room","Raum"]

/* Speakers */

Player Sonos_Controller "Controller" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:control"}
Dimmer Sonos_Volume "Volume [%.1f %%]" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:volume"}
Switch Sonos_Mute "Mute" <soundvolume_mute> (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:mute"}
Switch Sonos_LED "LED" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:led"}
String Sonos_CurrentTrack "Now playing [%s]" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:currenttrack"}
String Sonos_State "Status [%s]" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:state"}
Switch Sonos_PlayQueue "Play Queue" (Wohnzimmer, Lautsprecher) ["Sonos"] {channel="sonos:PLAY1:Wohnzimmer:playqueue"}

// vim: syntax=Xtend

Wo liegt mein Fehler?
Danke und Gruß.
Mark

Write tests

Mockups for the snips and OpenHAB API are needed for this.

Feedback zu Feature "dynamisches Vokabular bzw. Vokabular erweitern"

Hi Alpha,
habe mich mal am Workaround versucht. Hatte die Frage ja auch schon im Snips Store (xion) gestellt: Musst du dazu noch deine App erweitern bzw. benötige ich ein Update meines Assistenten?

Habe testweise mal folgende json in die injection gejagt (Steuerung meines Ventilators über smarte Steckdose):

{ "operations": [ [ "add", { "device" : [ "Ventilator", "Propeller" "Windmaschiene" ] } ] ] }

Gehe davon aus, dass dein Slot für devices "device" heißt und habe das entsprechend im json so eingebaut...Ist das semantisch so in Ordnung? Bisher funktionierts leider noch nicht :-(

Raum wird nicht erkannt

Moin!

Habe die Code Injection jetzt zum laufen gebracht, die Synonyme werden erfolgreich injected uuuuuuund sogar via ASR/NLU erkannt! Super soweit. Aber leider werden meine Räume nicht erkennt:

snipsaisrv | [16:59:35] [Asr] captured text "was weißt du über das kinderzimmer" in 2.0s
snipsaisrv | [16:59:35] [Asr] was asked to stop listening on site azm
snipsaisrv | [16:59:35] [AudioServer] was asked to play a wav of 93.1 kB with id 'effce956-1d47-4627-bb15-95ee2a02edab' on site azm
snipsaisrv | [16:59:36] [AudioServer] finished playing wav with id 'effce956-1d47-4627-bb15-95ee2a02edab'
snipsaisrv | INFO:snips_tts_hermes: Received a play finished message from audio server with an unknown id 'effce956-1d47-4627-bb15-95ee2a02edab'. Ignoring it.
snipsaisrv | [16:59:36] [Nlu] was asked to parse input "was weißt du über das kinderzimmer"
snipsaisrv | [16:59:36] [Nlu] detected intent Alpha200:whatDoYouKnowAbout with confidence score 1.000 for input "was weißt du über das kinderzimmer"
snipsaisrv |               Slots ->
snipsaisrv |                  room -> Kinderzimmer (confidence: 1.000)
snipsaisrv | [16:59:36] [Dialogue] New intent detected Alpha200:whatDoYouKnowAbout with confidence 1.000
snipsaisrv |               Slots ->
snipsaisrv |                  room -> Kinderzimmer (confidence: 1.000)
snipsaisrv | [16:59:36] [Dialogue] was ask to end session with id f8752007-bec3-413e-b8e3-659496eb5d92 by saying 'Ich habe keinen Ort mit der Bezeichnung Kinderzimmer gefunden'
snipsaisrv | [16:59:36] [Tts] was asked to say "Ich habe keinen Ort mit der Bezeichnung Kinderzimmer gefunden"

Via Swagger bekomme ich folgendes zum Kinderzimmer:

url: /rest/items?
metadata: semantics,synonyms
fields: name,label,type,editable,metadata
...},
{
    "metadata": {
      "synonyms": {
        "value": "Kinderzimmer"
      },
      "semantics": {
        "value": "Location_Indoor_Room_Bedroom",
        "config": {
          "isPartOf": "og"
        }
      }
    },
    "editable": false,
    "type": "Group",
    "name": "ogZ3",
    "label": "OG Z3"
  },
{...

Wenn ich den Code richtig lese, werden Räume daran identifiziert, ob der Wert der Semantic mit "Location" beginnt, was ja im Falle des Kinderzimmers stimmen sollte. Werde wie immer selber forschen... Aber vielleicht hast du ja schon ein paar Hinweise für mich?

Werden Synonyme benutzt um die Spracherkennung zu trainieren?

Moin!

Ich habe mehrere Probleme, das Plugin zum Laufen zu bekommen. Eines ist, dass sich Snips weigert Synonyme zu erkennen. Beispiele:

Items
Group ogZ1 "OG Z1" (og) ["Room"] { synonyms="Arbeitszimmer, Büro" }
Group ogZ2 "OG Z2" (og) ["Bedroom"] { synonyms="Kinderzimmer" }

Ich sage - Snips versteht
Mach das Licht im Arbeitszimmer an - Mach das Licht im Esszimmer an
Wie warm ist es im Büro - Wie warm ist es im Bad
Wie warm ist es im Kinderzimmer - Wie warm ist es im Keller Zimmer

Forke ich einen Intend und setzte dort weitere Traininstexte mit meinen Raumnamen, werden die Zimmer einwandfrei verstanden. Ist das Zufall oder werden die Synonyme nicht "trainiert"? Wenn das der Fall ist, würde dir eine größere Liste an Trainingsdaten helfen? Denn dann würde ich für die entsprechenden Intends eine zusammenstellen und dir zukommen lassen.

Beste Grüße
Michael

snips.toml wird nicht richtig ausgewertet

Wenn in der snips.toml ein anderer MQTT Server als localhost:1883 eingestellt wird, wird diese Konfiguration ignoriert. Im systemd Journal kann man sehen, dass versucht wird sich weiterhin zu localhost:1883 zu verbinden.

Restapi Warnings

Hi Alpha,
bin neu hier. Finde es erst einmal super, dass du eine saubere Schnittstelle von Snips zu Openhab über eine SnipsApp entwickelst - fande bisher alle How-Tos etc. zur Anbindung von Openhab nicht befriedigend und suchte eine saubere Lösung, in welcher ich nicht zu viel Logig innerhalb von OH implementieren muss. Das Semantic Tagging über HABot finde ich hier einen guten Ansatz.
Zu meinem Problem:

  • Habe nun testweise einige meiner Items getaggt und ich kann diese auch nun über Snips ansteuern. Dabei werden im OH Logging allerdings eine Menge Warnungen in dieser Form geworfen:
    --> "[thome.io.rest.internal.DTOMapperImpl] - Field 'editable' could not be eliminated: Can not set boolean field..."

Nach ein paar Mal Licht an und Licht aus funktioniert deine App dann nicht mehr bzw. ich muss den Snips-Skill-Server restarten.

Kannst du das bei dir reproduzieren?

Grüße aus Bremen

Featurerequest: setValue()

Hi Alpha,
erst einmal super wie du die App seit der ersten Version erweitert hast. Aus meiner Sicht derzeit die beste Möglichkeit openhab über snips anzusprechen!!

Was mir noch fehlt ist das setValue zu dem du ja bereits trainigsdaten und eine Funktion geschrieben hast aber immer noch "...nicht implementiert" zurückliefert.

Gibt es da irgendwelche Probleme bei der Implementierung oder wann möchtest du das Feature veröffentlichen?

Grüße

Snipps App fork wird lokal nicht übernommen

Hi,

erstmal danke für die tolle App.
Das ist die einzige die mit OH ohne immense Implementierung funktioniert und ohne vielen Regeln auskommt.
Ich habe eine Frage zur Erweiterung, wo ich nicht weiß, ob es ein Fehler ist, oder auch angepasst werden muss.
Wenn ich die App mit Begriffen erweitere, muss auch die training Dateien anpassen, oder sollte das automatisch erweitert werden?

Ich habe das Problem, das die eingelernten Begriffe vom Snips zwar verstanden werden und richtig aufgelöst werden, aber nicht Richtung OH weiter verarbeitet werden.
Der Habot funktioniert auch einwandfrei wenn man die Frage direkt über das CLI stellt, welche durch Snips übertragen werden soll.

Leider sehe ich in den Logs nichts, da es anscheinend nicht verarbeitet/ignoriert wird.
Müssen die .txt Datein im Training an die neu eingelernten Begriffe manuell angepasst werden?

lg
Polefski

Beispiel für Dimmer (Helligkeit)

Hi!

Ich habe neben anderen folgende Items definiert:

Group           Home                           "Unser Haus"          <house>
Group           GF                             "Erdgeschoss"         <groundfloor>     (Home) ["GroundFloor"]
Group           GF_Office                      "Büro"                <office>          (Home, GF) ["Room"] { synonyms="Buero" }
Dimmer          GF_Office_Light_Dimmer         "Deckenlicht"         <light>           (GF_Office, gLight) ["Light", "Setpoint"]         {channel="knx:device:bridge:actuator_a7:GF_Office_Light"}

HABot kann die Helligkeit ändern. Das Snips-Skill leider nicht.

[17:35:57] [Asr] captured text "erhöhe die helligkeit im büro" in 3.0s
[17:35:57] [Asr] was asked to stop listening on site default
[17:35:57] [AudioServer] was asked to play a wav of 93.1 kB with id '0d57d164-f0e1-4b3e-bb3a-8c459b30aa8d' on site default
[17:35:58] [AudioServer] finished playing wav with id '0d57d164-f0e1-4b3e-bb3a-8c459b30aa8d'
[17:35:58] [Nlu] was asked to parse input "erhöhe die helligkeit im büro"
[17:35:58] [Nlu] detected intent Alpha200:increaseItem with confidence score 1.000 for input "erhöhe die helligkeit im büro"
              Slots ->
                 property -> Helligkeit (confidence: 1.000)
                     room -> büro (confidence: 0.923)
[17:35:58] [Dialogue] New intent detected Alpha200:increaseItem with confidence 1.000
              Slots ->
                 property -> Helligkeit (confidence: 1.000)
                     room -> büro (confidence: 0.923)
[17:35:58] [Dialogue] was ask to end session with id 1ad8e59b-7282-4336-815f-6831c21e2f39 by saying 'Ich habe keine Möglichkeit gefunden, um die Helligkeit in der büro zu erhöhen'
[17:35:58] [Tts] was asked to say "Ich habe keine Möglichkeit gefunden, um die Helligkeit in der büro zu erhöhen"

Was mache ich falsch?
Müssen die Tags eigentlich wirklich auf englisch dort stehen? Oder wären auch deutsche Tags möglich? https://github.com/openhab/org.openhab.ui.habot/blob/master/src/main/resources/tagattributes_de.properties

Temperatur auslesen

Moin,
ich habe alles mögliche probiert aber deine App erkennt meinen Temperatursensor einfach nicht bzw. kann das Gerät trotz Tagging nicht finden - als letztes bin ich 1:1 wie bei deinem Beispielitem vorgegangen:

Number nu_HueTemperatureSensor_Bad_Temperature "Temperatur [%.1f °C]" (gr_loc_Badezimmer) ["Temperature", "Measurement"] {channel=.......

Itent und Raum wird lt. sam watch sauber erkannt....

Skill erkennt keine Items

Moin!

Der Skill erkennt bei mir keine Items und ich finde meinen Fehler nicht. Zwei Fehlerszenarien als Beispiel:

  1. Ich sage "Mache das Licht im Wohnzimmer an", was auch verstanden wird. Der Skill antwortet mir mit "Ich habe kein Gerät gefunden, welches zu Deiner Anfrage passt".
  2. Ich sage "Wie warm ist es im Schlafzimmer", was auch verstanden wird. Der Skill antwortet mir mit "Ich habe keinen Temperatursensor im Schlafzimmer gefunden".

Ich dachte erst, dass das Problem ist, dass es mehrere "Schlafzimmer" (Räume), bzw. mehrere "Lichter" (Setpoints) im Wohnzimmer gibt. Dann hätte der Skill aber anders antworten müssen: "Deine Anfrage war nicht eindeutig genug". Auch stutzig macht mich, dass im Log nichts vom erkannten Intend steht. Aber das müsste auch funktionieren, denn immerhin reagiert der Skill ja. Grobe Fehler in dem Items/Tagging habe ich auch ausgeschlossen, denn der HABot kann mit den Sätzen was anfangen und liefert mir entsprechende Ergebnisse, bzw. schaltet das Licht an/aus. Die Sprache von openHab ist Deutsch. Das Setup ist ein Server (Linux) und mehrere Satelliten (Linux, RP Zero).

Anbei sind meine Items und zwei Logs der zwei Beispielsätze. Hast du eine Idee, wie ich mich dem Problem weiter nähern kann? Mache ich beim Tagging etwas falsch? Oder unterstützt der Skill nicht den Aufbau meiner Items (Raum in Raum in Raum..)?

Vielen Dank für deine Hilfe und viele Grüße
Michael

all.items.txt
logsBeispiele.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.