Alpha200 / snips-openhab

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Beispiel für Dimmer (Helligkeit)

nanosonde opened this issue · comments

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

Hi nanosonde,

ja, die Tags müssen auf Englisch sein. Die HABot-Api wandelt diese dann mit der resources-Datei, welche du gefunden hast zu Aliasen um, welche vom OpenHAB-Skill genutzt werden. Kann es sein, dass du OpenHAB in den PaperUI-Preferences noch auf deutsch stellen musst? Die Config sieht soweit eigentlich gut aus.

Hi Alpha200,
die Einstellungen sind alle richtig.
Ich habe den Fehler gefunden.

Der Name des Items muss "Helligkeit" sein.
Siehe dazu auch:

items = openhab.get_relevant_items([device_property, "sollwert"], room, "Dimmer")

Irgendwie passt da was nicht. Hier werden Item-Namen und Properties im Sinne des Semantic Tagging durcheinander geworfen.
Der Item-Name sollte dem Device-Namen entsprechen, oder? Dieses Item hat dann gemäß dem Semantic Tagging ein "Property" und einen "Point". Also zum Beispiel "Temperature" und "Measurement", "Luminance" und "Setpoint". (siehe https://github.com/openhab/org.openhab.ui.habot/blob/9389c49facf81dc5c32f1613ca81634793b149eb/src/main/resources/tagattributes_de.properties#L56)
Wenn ich allerdings ["Luminance", "Setpoint"] als Tag setze, dann erkennt HABot das Attribut "Luminance" nicht. Schon komisch. Aber das nur nebenbei.
Nochmal zurück zum Problem: wenn ich den Item-Namen als "Helligkeit" setzen soll, wie setze ich denn dann den Device-Namen, falls ich mehrere Lampen habe?

"Mache die [Lampe](device) im [Wohnzimmer](room) [heller](property)"

[21:28:46] [Asr] captured text "mache die lampe im büro dunkler" in 3.0s
[21:28:46] [Asr] was asked to stop listening on site default
[21:28:46] [AudioServer] was asked to play a wav of 93.1 kB with id 'c042ae00-229e-44b5-8cf5-e1c006a1aadc' on site default
[21:28:47] [AudioServer] finished playing wav with id 'c042ae00-229e-44b5-8cf5-e1c006a1aadc'
[21:28:47] [Nlu] was asked to parse input "mache die lampe im büro dunkler"
[21:28:47] [Nlu] detected intent Alpha200:decreaseItem with confidence score 0.766 for input "mache die lampe im büro dunkler"
              Slots ->
                   device -> Lampe (confidence: 1.000)
                     room -> büro (confidence: 1.000)
                 property -> Helligkeit (confidence: 1.000)
[21:28:47] [Dialogue] New intent detected Alpha200:decreaseItem with confidence 0.766
              Slots ->
                   device -> Lampe (confidence: 1.000)
                     room -> büro (confidence: 1.000)
                 property -> Helligkeit (confidence: 1.000)
[21:28:48] [Dialogue] was ask to end session with id ff7ddce9-63ee-4b66-ac52-e357af937dec by saying 'Ich habe die Helligkeit in der büro verringert'
[21:28:48] [Tts] was asked to say "Ich habe die Helligkeit in der büro verringert"

Ich habe mir nochmal alles in Ruhe durchgelesen bzgl. des "Semantic Tagging".

In theory (!) Equipment tags are only valid on groups, similary to locations, so that the group memberships build the hasPoint and isPointOf relations; that being said, nothing currently prevents a non-Group item from representing an Equipment without specifying which kind of Point it measures or controls - this is useful when there is only one item for that equipment for the unspecified main functionality (or Point) of that equipment:

# Equipment with multiple Points
Group   gKitchenSensor (gKitchen)                        ["MotionDetector"]
Contact KitchenSensor_MotionDetected   (gKitchenSensor)  ["Status"]
Switch  KitchenSensor_LowBattery       (gKitchenSensor)  ["LowBattery"]
Switch  KitchenSensor_Tampered         (gKitchenSensor)  ["Tampered"]

# Equipments with no explicit Points
Rollershutter Shutter_GF_Living        "Livingroom"    (GF_Living)      ["Blinds"]
Contact       Garage_Door              "Garage Door [MAP(en.map):%s]"   ["GarageDoor"]
Contact       Window_GF_Kitchen        "Kitchen [MAP(en.map):%s]"       ["Window"]
Switch        Heating_GF_Corridor      "Corridor"      (GF_Corridor)    ["HVAC"]

Ich sehe es jetzt so, dass Du gerade das Dimmer-Item mit dem "increaseIntent" bzw. "decreaseIntent" so gebaut hast im Code, dass Du beim Equipment von mehreren "Points" ausgehst oder? Darum auch ein Item mit dem Namen "Helligkeit". Es wäre dann Teil des Equipment "Lightbulb" mit dieser Eigenschaft.
Allerdings sagt der obige Text auch, dass bei sehr einfachen Geräten in der Regel ein einzelnes Item ausreichen kann, bei dem dann kein "Equipment" definiert wird. Dachte, dass das hier der Fall wäre.

Ich schließe das Issue hier, denke aber, dass da noch optimiert werden könnte.