Encja zwracająca tekst komend głosowych?

Czy jest jakaś encja, która zwraca jako tekst wypowiedziane do Jolki komendy głosowe? Po przeszukaniu dokumentacji i przejrzeniu wielu encji poddałem się. Chciałbym w node-red uruchomić automatyzacje po wypowiedzeniu danej frazy. Prośba ewentualnie o podpowiedź jak to wy robicie (chciałbym pominąć wklepywanie nowych automatyzacji w AIS, dla każdej automatyzacji).

Przejrzyj w narzędziach deweloperskich usługi. Wydaje mi się, że będzie najlepsza
service: ais_ai_service.process

np. tak:

conversation.yaml:

  swiatlobiuroON:
    - zapal światło w biurze
    - włącz światło w biurze
    - włącz lampe w biurze
    - włącz lampkę w biurze
    - zapal lampkę w biurze   

intents.yaml:

swiatlobiuroON:
  speech:
    text: Włączam światło w biurze
  action:
    - service: mqtt.publish
      data:
        topic: microphone/cmnd
        payload: biuroON

Potem NR
mqtt temat: microphone/cmnd nasłuchujesz komendy biuroON

2 polubienia

Dziękuje Wam za odpowiedzi. bartik22 skorzystałem z Twojego rozwiązania i faktycznie działa to całkiem sprawnie.
Temat komend przeglądałem wcześniej w dokumentacji, ale nie wiedziałem jak użyć tego z NR - teraz wszystko jasne.

1 polubienie

Mam problem z konfiguracją tych komend. Dla przykładu:

W conversation.yaml:

intents:
  swiatlo_sypialnia_przyjemne:
    - włącz przyjemne światło w sypialni
    - zapal przyjemne światło w sypialni
    - zaświeć przyjemne światło w sypialni
    - uruchom przyjemne światło w sypialni
    - włącz jaśniejsze światło w sypialni

W intents.yaml:

swiatlo_sypialnia_przyjemne:
  speech:
    text: Włączam przyjemne światło w sypialni
  action:
    - service: mqtt.publish
      data:
        topic: microphone/cmnd
        payload: swiatlo_sypialnia_przyjemne

Następnie ustawiłem sobie łapanie payload’u w node-red, żeby dalej zrobić z nim co tylko zechcę.

Kiedy wypowiem np “włącz przyjemne światło w sypialni” otrzymuje taki komunikat zwrotny:
“Urządzenia przyjemne światło w sypialni nie można włączyć” albo coś w stylu “Oto kilka pasujących obrazów” w odpowiedzi na komendę: “zaświeć przyjemne światło w sypialni”
Domyślam się, że wbudowane komendy szukają urządzenia “przyjemne światło w sypialni” ale takiego nie znajdują stąd takie dziwne komunikaty. Gdzie robię błąd? Czy to po prostu tak działa.

Dodam że niektóre komunikaty mi ładnie przechodzą.

Tak to działa, ponieważ są komendy wbudowane w asystenta domowego:

Trochę słabo. Macie na to jakieś obejścia/rozwiązania? Albo jest możliwość nadpisania wbudowanych komend?

nazwij automatyzacje “Jolka: i komenda którą ma nadpisać”

np.: Jolka: pogoda

2 polubienia

1 polubienie

Ślicznie dziękuję - to rozwiązuje mój problem.
Teraz z kolei kombinuje, którym nodem z node-red’a uzyskam informacje, że dana automatyzacja w HA została aktywowana. Node “event: state” dla automatyzacji nie zwraca mi żadnych danych oprócz zmiany on/off w payload (w sensie czy dana automatyzacja jest aktywna).

Zobacz to podejście do poinformowania NR:

2 polubienia

Dziękuję za ciekawy pomysł - przećwiczę dla wprawy :grinning:
Wydaje mi się, że udało mi się zrobić to prościej:

  1. zdefiniowałem puste automatyzacje w HA i nazwałem je dla przykładu “Jolka: włącz radio” i “Jolka: wyłącz radio”.
  2. w node-red użyłem noda “events: all” i zafiltrowałem typ zdarzeń (Event Type), który mnie interesuje: “automation_triggered”.
  3. na jego wyjściu dodałam noda funkcji, który ładuje w payload nazwę automatyzacji, która została wyzwolona.
  4. później prostym node Switch sprawdzam jaka automatyzacja została wyzwolona i na wyjściu buduje flow jaki mi pasuje.

Dołączam przykład:

[
    {
        "id": "4fb2a9fa7603121d",
        "type": "server-events",
        "z": "861c0f49126e91c2",
        "name": "",
        "server": "85b2e2a05c9d75a2",
        "version": 1,
        "event_type": "automation_triggered",
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "waitForRunning": true,
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "eventData"
            },
            {
                "property": "topic",
                "propertyType": "msg",
                "value": "$outputData(\"eventData\").event_type",
                "valueType": "jsonata"
            }
        ],
        "x": 180,
        "y": 500,
        "wires": [
            [
                "c7d4651ad9a2bc54"
            ]
        ]
    },
    {
        "id": "c7d4651ad9a2bc54",
        "type": "function",
        "z": "861c0f49126e91c2",
        "name": "",
        "func": "msg.payload = msg.payload.entity_id;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 380,
        "y": 500,
        "wires": [
            [
                "53d950778872236e"
            ]
        ]
    },
    {
        "id": "45cd0b3a4e5391d9",
        "type": "api-call-service",
        "z": "861c0f49126e91c2",
        "name": "Włącz amplituner",
        "server": "85b2e2a05c9d75a2",
        "version": 3,
        "debugenabled": false,
        "service_domain": "media_player",
        "service": "turn_on",
        "entityId": "media_player.salon",
        "data": "",
        "dataType": "jsonata",
        "mergecontext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 710,
        "y": 460,
        "wires": [
            [
                "701f95854ec5209f"
            ]
        ]
    },
    {
        "id": "53d950778872236e",
        "type": "switch",
        "z": "861c0f49126e91c2",
        "name": "Radio",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "automation.jolka_wlacz_radio",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "automation.jolka_wylacz_radio",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 510,
        "y": 500,
        "wires": [
            [
                "45cd0b3a4e5391d9"
            ],
            [
                "e2cb15e463a7261f"
            ]
        ]
    },
    {
        "id": "e2cb15e463a7261f",
        "type": "api-call-service",
        "z": "861c0f49126e91c2",
        "name": "Wyłącz aplituner",
        "server": "85b2e2a05c9d75a2",
        "version": 3,
        "debugenabled": false,
        "service_domain": "media_player",
        "service": "turn_off",
        "entityId": "media_player.salon",
        "data": "",
        "dataType": "jsonata",
        "mergecontext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 700,
        "y": 500,
        "wires": [
            [
                "73140802731fa8c1"
            ]
        ]
    },
    {
        "id": "85b2e2a05c9d75a2",
        "type": "server",
        "name": "Home Assistant",
        "version": 1,
        "addon": false,
        "rejectUnauthorizedCerts": false,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true,
        "cacheJson": true
    }
]
1 polubienie