SNIPS: Sprachsteuerung (mittlerweile auch per Textcommands) über snips.ai

Begonnen von Thyraz, 21 Juli 2018, 20:28:48

Vorheriges Thema - Nächstes Thema

ahlermi

Danke Enno, das habe ich gemacht, das Ergebnis ist leider nicht viel besser :-/

Das war: "Schalte die Stehlampe im Wohnzimmer ein"

PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

pataya

@ahlermi:
Bist du sicher das die Injections noch vorhanden sind? Hatte nämlich dasselbe Fehlerbild, als die Injection bei mir nicht funktioniert hat (was sie immer noch nicht tut).

@Thyraz:
Vielen Dank für das Modul. Wirklich großartige Arbeit die Du geleistet hast. Danke für eine weitere Baustelle in FHEM... ::)

ahlermi

Hast du das angepasst?

Zitat von: bennebartsch am 29 Oktober 2018, 21:15:25
Hast du auch meinen fix angewendet?


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install snips-injection
systemctl enable snips-asr
systemctl enable snips-injection
sudo npm install -g npm@latest
sudo npm i -g snips-sam
sam install assistant
10_SNIPS.pm aktualisieren und FHEM neu starten
aus
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
wird
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");

# Für Custom Hotwordmkdir /usr/share/snips/assistant/custom_injections
mkdir /usr/share/snips/assistant/custom_injections
mkdir /usr/share/snips/assistant/custom_hotword
cp -r /usr/src/snips-record-personal-hotword/personal_2018_09_13T18_08_43/ /usr/share/snips/assistant/custom_hotword/

systemctl restart snips-injection

updateModel im Snips Modul ausführen


Bei mir gehts wieder.
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

kud

Habe nun auch nach Zögern ein Update gemacht.
Leider startet die snips-injection nicht automatisch mit? In der /etc/init.d finde ich auch keinen Dienst für Snips.
Wie startet snips-hotword etc. eigentlich selbst?

ahlermi

Zitat von: kud am 06 November 2018, 12:55:50
Habe nun auch nach Zögern ein Update gemacht.
Leider startet die snips-injection nicht automatisch mit? In der /etc/init.d finde ich auch keinen Dienst für Snips.
Wie startet snips-hotword etc. eigentlich selbst?


systemctl enable snips-injection

dann reboot oder

systemctl start snips-injection
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

bennebartsch

Mein Fix muss mittlerweile nicht mehr manuell angewendet werden, da Thyraz meinen Pull Request auf Github akzeptiert hat. Einfach die neuste Version von Github laden.

Zitat von: ahlermi am 06 November 2018, 10:59:28
Hast du das angepasst?


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install snips-injection
systemctl enable snips-asr
systemctl enable snips-injection
sudo npm install -g npm@latest
sudo npm i -g snips-sam
sam install assistant
10_SNIPS.pm aktualisieren und FHEM neu starten
aus
MQTT::send_publish($hash->{IODev}, topic => 'hermes/asr/inject', message => $json, qos => 0, retain => "0");
wird
MQTT::send_publish($hash->{IODev}, topic => 'hermes/injection/perform', message => $json, qos => 0, retain => "0");

# Für Custom Hotword
mkdir /usr/share/snips/assistant/custom_hotword
cp -r /usr/src/snips-record-personal-hotword/personal_2018_09_13T18_08_43/ /usr/share/snips/assistant/custom_hotword/

updateModel im Snips Modul ausführen


Bei mir gehts wieder.

laberlaib

Ich habe gerade ein seltsames Phänomen:
Ich würde gerne Snips auf Spanisch betreiben.

Also bau ich mir in der Snips Console einfach die App nach, testweise nur mit SetOnOff.

Nach meinem Verständniss wertet Snips-Fhem ja einfach die Rückgaben aus und vergleicht mit den Geräteattributen.
Die Namen und Räume werden eh eingelesen, d.h. ich musste für den SetOnOff-Intent nur den Slot "Value" neu belegen, so dass für "an" und "aus" eben spanische Synonyme neben dran stehen.
Value bekommt die Snips-Entität "es.Stude.OnOffValue"
Das hab ich gemacht und funktioniert.
Aber die Values Room und Device muss ich ja auf die Entitäten de.fhem.Room/de.fhem.Device mappen, da diese ja automatische gefüllt werden

Jetzt der Fehler: Der Assistent wird immer nur mit der Entität "es.Stude.OnOffValue" erstellt.
Nichteinmal andere, komplett eigene Entitäten werden übertragen.

Ich hab den Assistenten manuell runtergeladen und mir angeschaut, da kommt einfahc nichts weiteres mit.
Funktionierdender Assistent:

assistant_proj_KMx1EpXXXXX.zip\assistant\custom_asr\config.json

{
  "entityNameToFilename": {
    "de.fhem.TimerAction": "e_0.snips",
    "de.fhem.Room": "e_1.snips",
    "de.fhem.OnOffValue": "e_2.snips",
    "de.Laib.Zimmer": "e_4.snips",
    "de.Laib.Gegenst\u00e4nde": "e_5.snips",
    "snips/number": "e_6.snips",
    "de.fhem.MediaChannels": "e_7.snips",
    "snips/duration": "e_8.snips",
    "de.fhem.NumericType": "e_11.snips",
    "de.fhem.MediaControlCommand": "e_9.snips",
    "de.fhem.Unit": "e_10.snips",
    "de.Laib.Listentypen": "e_3.snips",
    "de.fhem.Color": "e_12.snips",
    "de.fhem.OnOffStatus": "e_13.snips",
    "de.fhem.Device": "e_14.snips",
    "de.fhem.ChangePercent": "e_15.snips",
    "de.fhem.Shortcuts": "e_16.snips"
  },


Nicht funktionierender Assistent:

assistant_proj_ZaXXXXXXXX.zip\assistant\custom_asr\config.json


{
  "entityNameToFilename": {
    "es.Stude.OnOffValue": "e_1.snips"
  },


Auf "updateModel" antwortet mir der Raspi:
pi@raspberrypi:/ $ sudo systemctl status snips-injection
● snips-injection.service - Snips Injection
   Loaded: loaded (/lib/systemd/system/snips-injection.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-11-10 22:30:33 CET; 9min ago
Main PID: 9705 (snips-injection)
   CGroup: /system.slice/snips-injection.service
           └─9705 /usr/bin/snips-injection

Nov 10 22:30:33 raspberrypi systemd[1]: Started Snips Injection.
Nov 10 22:30:33 raspberrypi snips-injection[9705]: INFO:snips_injection_hermes: Launch with assistant "/usr/share/snips/assistant" and user dir "/var/lib/snips/"
Nov 10 22:30:42 raspberrypi snips-injection[9705]: ERROR:snips_injection_hermes: injection failed for injection: Injection { root_dir: "/var/lib/snips/injections/20181110T213032760067083/inj_201811
Nov 10 22:30:42 raspberrypi snips-injection[9705]:  -> caused by: Entity de.fhem.Device doesn't exist. The entities available in the assistant are: ["es.Stude.OnOffValue"]


War jemand schon mal so weit drin?

Edit: Heute Morgen nochmal mit einem neuen Account versucht, siehe Screenshot

Edit2: Einen einfachen Assistenten auf Deutsch gebaut; da klappt alles. Der hat dann auch 18MB, wohingegen der Spanische 1,2 MB hat. Zweiterer macht aber ASR ja auch per Google. Trotzdem sollten dann doch Slots auftauchen. Injection ist ja erst der zweite Schritt. Ich könnte die 2-3 Räume und Devices auch in der Console eintragen, aber die Slots werden ja nichtmal übertragen.

Edit3: Slots wild hin-und-her benannt und alle mit werten vorbstückt: "es.FHEM.OnOffValue" wurde übertragen, Testnamen wie "wurstmann" o.ä. nicht.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

weini

Ich finde snips und das Modul von Thyraz einfach super!

Aktuell kämpfe ich damit, meinen Saugroboter über snips zu starten:

Internals:
   DEF        rockrobo.weinberger.local 354f4e71613379614d71766exxxxxxxxxxx
   FD         26
   NAME       hmb_Sammy
   NR         473
   STATE      Cleaning
   TYPE       XiaomiDevice
   mac        LOCALNETWORK
   model      rockrobo.vacuum
   Helper:
     DBLOG:
       batteryPercent:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      98
       batteryState:
         log_MySQL:
           TIME       1542181122.50814
           VALUE      ok
       last_clean_area:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      6.50
       last_clean_time:
         log_MySQL:
           TIME       1542181606.46677
           VALUE      0.07
       last_timestamp:
         log_MySQL:
           TIME       1542181031.56993
           VALUE      1542090760
       state:
         log_MySQL:
           TIME       1542181546.52069
           VALUE      Cleaning
       total_clean_area:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      3184.77
       total_clean_time:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      56.90
       total_cleans:
         log_MySQL:
           TIME       1542181030.27104
           VALUE      39
   OLDREADINGS:
   READINGS:
     2018-11-14 08:45:11   app_bom         A.03.0005
     2018-11-14 08:45:11   app_language    en
     2018-11-14 08:45:11   app_location    de
     2018-11-14 08:45:11   app_logserver   awsde0.fds.api.xiaomi.com
     2018-11-14 08:45:11   app_name        custom_A.03.0005_CE
     2018-11-14 08:45:11   app_timezone    Europe/Berlin
     2018-11-14 08:46:46   batteryPercent  98
     2018-11-14 08:46:46   batteryState    ok
     2018-11-14 08:45:11   carpet_high     500
     2018-11-14 08:45:11   carpet_integral 450
     2018-11-14 08:45:11   carpet_low      400
     2018-11-14 08:45:11   carpet_mode     off
     2018-11-14 08:45:11   carpet_stall_time 10
     2018-11-14 08:46:46   cleaning_mode   balanced
     2018-11-14 08:45:11   consumables_filter 62
     2018-11-14 08:45:11   consumables_main_brush 81
     2018-11-14 08:45:11   consumables_sensors -89
     2018-11-14 08:45:11   consumables_side_brush 71
     2018-11-13 07:01:19   device_firmware 3.3.9_001518
     2018-11-14 08:45:11   device_fw_features 102
     2018-11-13 07:01:19   device_uptime   3.04
     2018-11-14 08:46:46   dnd             off
     2018-11-14 08:45:11   dnd_enabled     on
     2018-11-14 08:45:11   dnd_end         08:00
     2018-11-14 08:45:11   dnd_start       22:00
     2018-11-14 08:46:46   error           none
     2018-11-14 08:46:46   error_code      None
     2018-11-12 10:42:36   event           back_to_dock
     2018-11-14 08:46:46   fan_power       60
     2018-11-14 08:45:11   history_0       2018-11-13 07:32:40: 104.19m² in 1.87h, finished cleaning
     2018-11-14 08:45:11   history_1       2018-11-12 08:39:32: 114.70m² in 2.02h, finished cleaning
     2018-11-14 08:45:11   history_2       2018-11-11 10:05:22: 104.66m² in 1.87h, finished cleaning
     2018-11-14 08:45:11   history_3       2018-11-09 08:36:36: 104.64m² in 1.86h, finished cleaning
     2018-11-14 08:45:11   history_4       2018-11-07 08:32:20: 103.58m² in 1.82h, finished cleaning
     2018-11-14 08:45:11   history_5       2018-11-06 08:30:54: 103.09m² in 1.92h, finished cleaning
     2018-11-14 08:45:11   history_6       2018-11-05 08:29:25: 104.41m² in 1.90h, finished cleaning
     2018-11-14 08:45:11   history_7       2018-11-04 12:07:56: 101.27m² in 1.84h, finished cleaning
     2018-11-14 08:45:11   history_8       2018-11-03 10:33:03: 103.25m² in 1.83h, finished cleaning
     2018-11-14 08:45:11   history_9       2018-10-31 12:53:11: 99.77m² in 1.69h, finished cleaning
     2018-11-14 08:46:46   in_cleaning     yes
     2018-11-14 08:46:46   last_clean_area 6.50
     2018-11-14 08:46:46   last_clean_time 0.07
     2018-11-14 08:45:11   last_timestamp  1542090760
     2018-10-21 11:01:07   log_upload_status -1
     2018-11-14 08:46:46   map_present     yes
     2018-11-14 07:53:04   serial_number   R0018S836xxxxx
     2018-11-14 08:46:46   state           Cleaning
     2018-11-14 07:53:04   timezone        Europe/Berlin
     2018-11-14 08:45:11   total_clean_area 3184.77
     2018-11-14 08:45:11   total_clean_time 56.90
     2018-11-14 08:45:11   total_cleans    39
     2018-11-14 08:45:11   volume          90
     2018-11-14 07:53:04   wifi_auth_fail_count 0
     2018-11-14 07:53:04   wifi_conn_fail_count 0
     2018-11-14 07:53:04   wifi_conn_success_count 1
     2018-11-14 07:53:04   wifi_dhcp_fail_count 0
     2018-11-13 07:01:19   wifi_rssi       -56
     2018-11-14 07:53:04   wifi_state      connecting
   helper:
     ConnectionState connected
     cleanrecord 10
     crypt      AES
     delay      0
     dev        0705
     historydays 10
     id         925c
     ip         rockrobo.weinberger.local
     last_read  1542181606
     packetid   6181
     port       54321
     sequence   1542164337
     timers     0
     token      354f4e71613379614d717xxxxxxxxxxx
     day:
       5244       1542090760
       5245       1542008372
       5246       1541927122
       5247       1541748996
       5248       1541575940
       5249       1541489454
       5250       1541402965
       5251       1541329676
       5252       1541237583
       5253       1540986791
       688        1542090760
     history:
       5244       0
       5245       1
       5246       2
       5247       3
       5248       4
       5249       5
       5250       6
       5251       7
       5252       8
       5253       9
       688        0
     packet:
       1135       get_consumable
       1136       get_clean_summary
       1137       get_dnd_timer
       1138       get_timer
       1139       get_sound_volume
       1140       get_carpet_mode
       1141       get_fw_features
       1142       app_get_locale
       1235       get_consumable
       1236       get_clean_summary
       1237       get_dnd_timer
       1238       get_timer
       1239       get_sound_volume
       1240       get_carpet_mode
       1241       get_fw_features
       1242       app_get_locale
       1353       get_status
       1387       get_status
       1421       get_status
       1422       wifi_stats
       1423       device_info
       1503       get_consumable
       1504       get_clean_summary
       1505       get_dnd_timer
       1506       get_timer
       1507       get_sound_volume
       1508       get_carpet_mode
       1509       get_fw_features
       1510       app_get_locale
       1603       get_consumable
       1604       get_clean_summary
       1605       get_dnd_timer
       1606       get_timer
       1607       get_sound_volume
       1608       get_carpet_mode
       1609       get_fw_features
       1610       app_get_locale
       1611       get_status
       1626       get_consumable
       1645       get_status
       1659       get_consumable
       1679       get_status
       1681       device_info
       1860       get_consumable
       1861       get_clean_summary
       1862       get_dnd_timer
       1863       get_timer
       1864       get_sound_volume
       1865       get_carpet_mode
       1866       get_fw_features
       1867       app_get_locale
       1960       get_consumable
       1961       get_clean_summary
       1962       get_dnd_timer
       1963       get_timer
       1964       get_sound_volume
       1965       get_carpet_mode
       1966       get_fw_features
       1967       app_get_locale
       2          device_info
       2014       get_status
       2048       get_status
       2100       get_status
       2101       wifi_stats
       2102       device_info
       2182       get_consumable
       2183       get_clean_summary
       2184       get_dnd_timer
       2185       get_timer
       2186       get_sound_volume
       2187       get_carpet_mode
       2188       get_fw_features
       2189       app_get_locale
       2194       get_consumable
       2216       get_consumable
       2259       get_status
       2311       get_status
       2345       get_status
       2347       device_info
       2636       get_consumable
       2637       get_clean_summary
       2638       get_dnd_timer
       2639       get_timer
       2640       get_sound_volume
       2641       get_carpet_mode
       2642       get_fw_features
       2643       app_get_locale
       2702       device_info
       2727       get_consumable
       2749       get_consumable
       2771       get_consumable
       2772       get_clean_summary
       2773       get_dnd_timer
       2774       get_timer
       2775       get_sound_volume
       2776       get_carpet_mode
       2777       get_fw_features
       2778       app_get_locale
       2779       get_status
       2813       get_status
       2847       get_status
       2849       device_info
       2938       get_status
       2939       wifi_stats
       2940       device_info
       2941       get_serial_number
       2942       get_timezone
       2943       get_consumable
       2944       get_clean_summary
       2945       get_dnd_timer
       2946       get_timer
       2947       get_sound_volume
       2948       get_carpet_mode
       2949       get_fw_features
       2950       app_get_locale
       4470       get_status
       4529       device_info
       4686       get_consumable
       489        get_consumable
       4892       get_status
       490        get_clean_summary
       4906       get_consumable
       491        get_dnd_timer
       492        get_timer
       493        get_sound_volume
       494        get_carpet_mode
       495        get_fw_features
       496        app_get_locale
       497        get_status
       5104       get_consumable
       5244       get_clean_record0
       5245       get_clean_record1
       5246       get_clean_record2
       5247       get_clean_record3
       5248       get_clean_record4
       5249       get_clean_record5
       5250       get_clean_record6
       5251       get_clean_record7
       5252       get_clean_record8
       5253       get_clean_record9
       5254       get_status
       531        get_status
       5366       get_status
       5443       device_info
       5486       get_status
       5499       get_status
       5500       get_status
       5531       get_status
       5532       get_status
       5533       get_status
       5552       get_status
       5565       get_status
       5567       device_info
       565        get_status
       567        device_info
       570        get_consumable
       592        get_consumable
       6151       get_status
       6154       get_status
       6176       get_status
       688        get_clean_record0
       702        get_consumable
       787        get_status
       846        device_info
Attributes:
   event-min-interval .*:900
   event-on-change-reading .*
   group      Staubsauger
   icon       scene_robo_lawnmower
   intervalData 30
   intervalSettings 120
   room       Snips,Unsorted
   snipsMapping SetOnOff:cmdOn=start,cmdOff=stop
   snipsName  Sammy,Staubsauger
   snipsRoom  Küche
   subType    VacuumCleaner


Offenbar kommt das Modul aber bei der Ansagen "Starte Sammy" mit den MediaControls durcheinander.

[08:50:26] [Asr] was asked to listen on site default
[08:50:29] [Asr] captured text "starte sammy" in 3.0s
[08:50:29] [Asr] was asked to stop listening on site default
[08:50:29] [AudioServer] was asked to play a wav of 93.1 kB with id '9ab63991-c586-4fb0-a79e-ff1fd31940d1' on site default
[08:50:31] [AudioServer] finished playing wav with id '9ab63991-c586-4fb0-a79e-ff1fd31940d1'
[08:50:31] [Nlu] was asked to parse input "starte sammy"
[08:50:31] [Nlu] detected intent Thyraz:MediaControls with probability 0.560 for input "starte sammy"
[08:50:31] [Dialogue] New intent detected Thyraz:MediaControls with probability 0.560
[08:50:31] [Nlu] was asked to parse input "starte standardgerät"
[08:50:31] [Nlu] detected intent Thyraz:MediaControls with probability 0.583 for input "starte standardgerät"
              Slots ->
                 Device -> Standardgerät
[08:50:31] [Dialogue] was ask to end session with id 32820be3-ff64-40dc-a415-5ffb844184ec by saying 'Da ist etwas schief gegangen.'
[08:50:31] [Tts] was asked to say "Da ist etwas schief gegangen."
[08:50:31] [AudioServer] was asked to play a wav of 69.3 kB with id 'e81a066c-9cb2-44fa-a49a-1c34190f2619' on site default
[08:50:34] [AudioServer] finished playing wav with id 'e81a066c-9cb2-44fa-a49a-1c34190f2619'
[08:50:34] [Tts] finished speaking with id '68bed177-2504-4042-ab58-f9cdf22424e0'
[08:50:34] [Dialogue] session with id '32820be3-ff64-40dc-a415-5ffb844184ec' was ended on site default. The session ended as expected
[08:50:34] [Asr] was asked to stop listening on site default
[08:50:34] [Hotword] was asked to toggle itself 'on' on site default


Nach meinem Verständnis kann ich bei SetOnOff keinen Type mitgeben, wie bei SetNumeric. Laut dem GitHub Wiki müsste "Starte" als Kommando für SetOnOff funktionieren. Jetzt bin ich etwas ratlos, wie ich dem Modul das beibringen soll.
"Starte" macht natürlich für beide Intents Sinn, aber mein Staubsauger hat ja nur das SetOnOff Intent zugeordnet.

laberlaib

Wenn Du den Saugroboter nun als MediaDevice definierst?
Play, pause, stop - im Grunde ist ein Sauger doch auch nur ein Radio?
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

weini

Zitat von: laberlaib am 14 November 2018, 09:35:15
Wenn Du den Saugroboter nun als MediaDevice definierst?
Play, pause, stop - im Grunde ist ein Sauger doch auch nur ein Radio?
Wow, wie wenn ich ein Brett vor dem Kopf gehabt hätte. Danke dir für den Tipp, läuft super.

@Thyraz: Schau dir das bitte trotzdem nochmal an. Ich glaube, dass "starten" für das SetOnOff Intent nicht mehr funktioniert, seit es das MediaControlsIntent gibt. Das ist zu verschmerzen, aber du könntest die Wiki-Seite auf GitHub entsprechend anpassen.

PapaRiX

Ich hätte auch mal eine Frage...
Ich bin vom Prinzip her von Snips echt überzeugt. Es ist leider im vergleich zur Alexa (noch) nicht so performant (Geschwindigkeit und Treffsicherheit) aber mit etwas Glück kommen wir da langsam hin.
Das FHEM modul ist super hilfreich und funktioniert um Welten besser als das was ich mir vor ein paar Monaten zusammengezimmert hatte! Also erst mal vielen Dank dafür!!

Ich würde jetzt gerne, ähnlich wie es bei alexa möglich ist, Routinen einrichten.
zum Beispiel sage ich alexa abends: "ich geh ins bett" dadurch werden alle Lampen und der Fernseher ausgeschaltet.
mit Snips und dem FHEM Modul wäre sowas möglich indem ich ein Gerät einrichte und z.B. "Nachtroutine" nenne, dann muss ich sagen: "Schalte Nachtroutine ein"
Das finde ich aber nicht so gut und ist eher sperrig.

Eine Idee wäre, einen snips skill zu basteln, der auf meine Routinen hört, dann müsste ich diese aber irgendwie im FHEM erkennen.
Ist das mit dem FHEM snips Modul denkbar, wie würde das gehen?
Meine alte methode war, mittels MQTT device auf das intent zu reagieren indem ich auf MQTT mitlese, die JSON zerlege und nach meinem Intent suche... das ist zwar möglich, aber furchtbar umständlich und ein ziemliches gebastel...

gibts da Ideen Eurerseits zu?
Danke und Grüße!

kud

So richtig verstehe ich die Fragestellung nicht?
Eine eigene Routine kann man per Kurzbefehl(ShortCut) im Snipsdevice selbst festlegen und in der MyUtils entsprechende Befehle durchlaufen lassen.
Schau Dir also mal ShortCuts an und hier im Tread steht auch wie man in Perl die Funktion in den Myutils aufruft.
Zb. Sage ich: "schalte das Tablet ein" der ShortCut in Snips ist tablet ein={ GetHttpFile("192.168.1.120:8765","/?display=on")
Statt dem GetHttpFile kannst Du eine eigene Funktion in der 99_MyUtils.pm aufrufen.

Oder habe ich Deine Frage falsch interpretiert?

PapaRiX

Ich hab mir die doku zum Snips device nochmal durchgelesen und siehe da.. ich kann mir die Frage eigentlich auch selbst beantworten  ;D

@kud:
Danke für den Tipp und die flotte Antwort! ShortCuts sind mir noch nicht bekannt. Davon finde ich auch nix in der Beschreibung auf Github https://github.com/Thyraz/Snips-Fhem Ist das dasselbe/ähnlich wie die snipsIntents?

meine Idee (gemäß: https://forum.fhem.de/index.php/topic,89548.msg821359.html#msg821359 ):

- neue snips skill "Nachtroutine" erstellen was auf "ich gehe ins Bett" und "ich gehe schlafen" reagiert (und sonst nichts macht)
- jetzt müsste ich im Attribut snipsIntents einfch auf "Nachtroutine" reagieren.
leider funktioniert das nicht so wie ich mir das erhofft hatte.
ich dachte ich könne einfach im attr snipsIntents schreiben:
Nachtroutine={fhem"set XYZ off"}
es erfolgt aber keine Aktion auf ein erkanntes Intent "Nachtroutine". Wo ist denn mein Denkfehler (oder ist es ein einfacher syntax Fehler?), es sollte doch egal sein, ob ich etwas in 99_myUtils.pm eintrage oder direkt in das attr schreibe, oder?



PapaRiX

Aha... Shortcuts macht das also   :D
fürs finden später: https://forum.fhem.de/index.php/topic,89548.msg835728/topicseen.html#msg835728

mein eigentliches Problem ist damit also gelöst, danke!!
allerdings bleibt mein Problem mit dem Syntax bestehen. Muss man bei customintents (attr snipsIntents im device) immer eine Funktion in 99_myutils.pm ausführen oder geht das auch direkt?

rischbiter123

Moin,

ShortCuts ist ein Attribut des Snips-Devices. Dort kannst Du dann verschiedene 'Anweisungen' eintragen und die entsprechende Reaktion.Für Dich wäre das z.B.
ich gehe ins Bett={aufruf der 99_myUtils-Routine}
neue Zeile
ich gehe schlafen={aufruf der 99_myUtils-Routine}
In der 99_myUtils dann die Befehle eintragen
Du kannst den Fhem-Befehl natürlich auch direkt eintragen, bei komplexeren Sachen empfiehlt sich aber die Auslagerung.
Dann natürlich das obligatorische set Snips updateModel nicht vergessen.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2