Satellites qui meurent après un certain temps!


#1

Bonjour

J’utilise Snips avec Home-Assistant pour piloter et interagir avec ma domotique et je suis assez content du résultat même si j’en suis au tout début (je commande que la lumière pour le moment mais comme je fais ma propre app dans la console cela prend un peu plus de temps !!).

Ma config SNIPS est basé sur un Pi3B7 qui contient le serveur SNIPS et la passerelle MQTT pour le lier avec le MQTT de mon Home Assistant qui lui est sur un autre Pi3B+. J’ai également des satellites en Wifi basés sur des Pi 0 W. Pour une bonne capture audio, tous mes Pi sont équipés de cartes Respeaker 2 Hat.

Tout fonctionne bien et après une durée que j’ai pas réussi à déterminer plus précisément mes satellites “meurent” ! Ils ne réagissent plus à aucune commande vocale, même le hotword ne fait rien ! Si je regarde avec sam il me dit bien que l’audio-server et hotword sont tous les deux bien actifs sur les satellites !

Si je fais un sam watch sur le maitre je ne vois absolument rien se produire quand j’essaye d’interagir avec les satellites alors que le maitre lui marche toujours !
Se je reboote les satellites ils vont remarcher une ou deux heures et pareil ça va se replanter alors que le snips principal lui tourne toujours !

J’ai regardé les logs systèmes sur les satellites mais pas trouvé grand chose de probant ! Une idée par où commencer les recherches sur ce soucis ?

PS: les satellites se connectent à leur broker local qui se bridge au broker du serveur SNIPS ou il se connecte directement au broker du server ? car je vous un mosquitto qui tourne sur les satellites mais n’a pas l’air d’être utilisé :confused:
Merci bien,
PS Bis: J’ai trouvé les choses suivantes dans les logs des satellites, je ne sais pas si c’est normal ?? Cele se produit au démarrage de snips-hotword !!

Feb  7 12:32:30 satellite-sdb snips-hotword[738]: thread 'main' panicked at 'FromEntropy::from_entropy() failed: All entropy sources failed (permanently unavailable); cause: getrandom not ready (not ready yet); cau
se: Resource temporarily unavailable (os error 11)', /home/ubuntu/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.5.5/src/lib.rs:939:13
Feb  7 12:32:30 satellite-sdb snips-hotword[738]: note: Run with `RUST_BACKTRACE=1` for a backtrace.
Feb  7 12:32:30 satellite-sdb snips-hotword[738]: ERROR:rumqtt::client              : snips-hotword|738-satellite-sdb-1 Disconnected: (Error(SyncMpsc(Disconnected), State { next_error: None, backtrace: None }))

Vincèn


#2

Bonjour,

Le mosquitto sur tes satellites ne sert à rien comme la plupart des services d’ailleurs, il faut les arrêter.

Il y’a quand même un truc qui m’échappe dans ton log c’est le /home/ubuntu alos que tu dis que ce sont des pi zero.

Ced


#3

Merci pour le lien et je vais faire les modifs pour être sûr que mes satellites ne font que le strict minimum ! D’ailleurs la config B a t’elle un intérêt en terme de réactivité par rapport à la A ? en dehors du fait d’avoir un hotword différent possible !

ah oui je suis bien en Pi Zero sous Raspbian :wink:


#4

Bon j’ai fait les corrections et on va voir si c’est plus stable qu’avant ! Par contre mon soucis de hotword sur les satellites est toujours là ! J’ai même fait l’install de l’assistant avec sam sur les satellites pour être sûr d’avoir la même chose que le snips principal mais ça marche toujours pas !
Mon assistant est configuré pour Jarvis et marche bien comme ça sur le snips principal mais ce même assistant chargé dans les satellites réagit à Snips et non Jarvis !! Pourtant même un sam status sur ces satellites me confirment qu’il est censé réagir à jarvis :confused:

PS: je suis en config B sur mes satellites !


#5

A mon avis, le problème vient de la configuration de ton snips.toml sur les satellites (partie hotword). Es tu sûr que le modèle est bien celui installé par ton assistant ?

Ced


#6

Ben je suppose que quand tu fais l’install d’un assistant avec sam il le met à l’endroit prévu par défaut dans la config de snips.toml non ? Et dans quel cas surtout il faut décommenter la ligne qui indique le chemin d’accès aux fichiers du hotword ? Sur les miens je n’ai pas décommenté ça !
Et surtout si j’installe ce même assistant sur mon snips principal il se met bien à répondre à Jarvis et non plus snips mais la même manip sur les satellites ne fait rien par contre et ils réagissent toujours à snips :frowning:
Et pourquoi sam status me dit que le satellite est configuré pour Jarvis alors qu’en réalité il répond à snips :confused:


#7

Tout est écrit dans l’article que je t’ai posté plus haut :wink:

En résumé, les satellites ne font que retransférer le flux audio vers le snips maitre (c’est snips-audio-server qui s’occupe de ça).
Dans le cas de la config A, le service snips-hotword ne fonctionne pas sur le satellite et c’est le snips-hotword du maître qui se charge de la détection du hotword. Du coup, la partie liée à la config du hotword dans le snips.toml du satellite n’a pas d’intérêt.

Dans le cas de la config B, le flux est toujours envoyé en continu au snips maitre, mais c’est le snips-hotword du satellite qui se charge de faire la détection. Il peut alors être nécessaire de configurer la partie hotword du snips.toml pour utiliser un hotword personnalisé et surtout définir le nom du device MQTT qui déclenche le hotword (généralement cuisine, salon, chambre etc…).
Le tutorial officiel conseille de décommenter et configurer cette partie dans le fichier snips.toml ( https://docs.snips.ai/articles/platform/satellites#configuration-b ).
Tu peux aussi suivre le tuto en français (lien post précédent).

Mais surtout, l’intérêt de la configuration B est d’avoir des hotwords différents entre les satellites/master. Donc si tu souhaites Jarvis sur tout tes snips, pas d’intérêts d’utiliser la configuration B.

Au cas où, poste le snips.toml de ton maitre et un snips.toml de tes satellites.

Ced


#8

Merci pour les explications et effectivement je me fais chier pour rien au vu de ce que je veux faire ! Je vais passer en config A :wink: Par contre cela n’a pas de conséquence sur le temps de “réveil” du satellite ??


#9

Honnêtement, je n’en vois pas.
Mais le mieux reste d’essayer et regarde si cela te convient :wink:
Si tu trouves qu’il y’a une latence (mais ça m’étonnerait), on regardera de plus près ton problème pour la config B :slight_smile:

Ced


#10

Bon j’ai fait toutes les modifs comme indiquées sur ton blog mais c’est pas gagné !! Maintenant le skill-server refuse de démarrer pour un problème de skills pas présent :rage:
J’ai refait l’install de mon assistant avec sam mais rien à faire, il en veut pas !!

Feb  8 12:41:40 snips-server systemd[1]: Started Snips Skill Server.
Feb  8 12:41:40 snips-server snips-skill-server[935]: ERROR:snips_skill_server: failed to fetch skills
Feb  8 12:41:40 snips-server snips-skill-server[935]:  -> caused by: didn't find any skills in root skills directorie(s) ["/var/lib/snips/skills"] nor skill directorie(s) []
Feb  8 12:41:40 snips-server systemd[1]: snips-skill-server.service: Main process exited, code=exited, status=1/FAILURE
Feb  8 12:41:40 snips-server systemd[1]: snips-skill-server.service: Unit entered failed state.
Feb  8 12:41:40 snips-server systemd[1]: snips-skill-server.service: Failed with result 'exit-code'.

Plus je pratique SNIPS, plus j’ai l’impression que c’est un système particulièrement instable et d’un fonctionnement super aléatoire ou alors c’est dû au fait que c’est toujours en développement ? :confused:


#11

Le seul service snips qui doit tourner sur les satellites est snips-audio-server. Tous les autres doivent être arretés car n’ont pas d’interêt.
Donc, il est inutil de vouloir démarrer le snips-skill-server sur un satellite.
Tout le travail est fait sur le snips-maitre.
Le message que tu montres n’est pas un message d’erreur spécifiant un dysfonctionnement. Il dit simplement que n’ayant pas trouvé de skill aux apps installés, il s’est arrêté.

Même si snips est toujours en développement, il est en général assez stable.

Peux tu faire un sam status sur ton maitre et sur un de tes satellites et le poster
Ainsi que le contenu de test snips.toml.

Avec ça, je vais pouvoir t’aider :slight_smile:

Ced


#12

Oui désolé autant pour moi j’ai été un peu rapide dans mon précédent message ! En effet j’ai bien que le serveur audio qui tourne sur les satellites maintenant :slight_smile: Le problème de snips-audio-server est apparu sur le serveur en fait malgré que j’ai refait dessus l’installation de mon assistant via sam !

sam status du maitre avec le soucis nouveau du snips-skill server qui veut plus se lancer :frowning:

vincen@fixe:~$ sam status

Connected to device 192.168.1.30

OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... Snips standalone
Language ..................... fr
Hotword ...................... jarvis
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. 0.60.12 (not running)
snips-asr .................... 0.60.12 (running)
snips-audio-server ........... 0.60.12 (running)
snips-dialogue ............... 0.60.12 (running)
snips-hotword ................ 0.60.12 (running)
snips-nlu .................... 0.60.12 (running)
snips-skill-server ........... 0.60.12 (not running)
snips-tts .................... 0.60.12 (running)

sam status d’un des satellites:

vincen@fixe:~$ sam status

Connected to device 192.168.1.31

OS version ................... Raspbian GNU/Linux 9 (stretch)
Installed assistant .......... Snips standalone
Language ..................... fr
Hotword ...................... jarvis
ASR engine ................... snips
Status ....................... Live

Service status:

snips-analytics .............. 0.60.12 (not running)
snips-asr .................... 0.60.12 (not running)
snips-audio-server ........... 0.60.12 (running)
snips-dialogue ............... 0.60.12 (not running)
snips-hotword ................ 0.60.12 (not running)
snips-nlu .................... 0.60.12 (not running)
snips-skill-server ........... 0.60.12 (not running)
snips-tts .................... 0.60.12 (not running)

snips.toml du maitre:

[snips-common]
# bus = "mqtt"
# mqtt = "localhost:1883"
# audio = ["+@mqtt"]
# assistant = "/usr/share/snips/assistant"
# user_dir = "/var/lib/snips"

## MQTT authentication
# mqtt_username = ""
# mqtt_password = ""

## MQTT TLS configuration
# mqtt_tls_hostname = ""
# mqtt_tls_disable_root_store = false
# mqtt_tls_cafile = ""
# mqtt_tls_capath = ""
# mqtt_tls_client_cert = ""
# mqtt_tls_client_key = ""

[snips-analytics]

[snips-asr]
# no_fst_map = true
# beam_size = 8
# model = "/usr/share/snips/asr"
# audio = ["+@mqtt"]
# partial = false
# partial_period_ms = 250

[snips-asr-google]
# credentials = "/usr/share/snips/googlecredentials.json"
# audio = ["+@mqtt"]

[snips-audio-server]
# frame = 256
bind = "salon@mqtt"
# mike = "Built-in Microphone"
# disable_playback = false
# disable_capture = false

[snips-dialogue]
# resources = "/usr/share/snips/dialogue"
# session_timeout = 15
# lambda_timeout = 5
# partial = false
# partial_period_ms = 250

[snips-asr-google]
# credentials = "/usr/share/snips/googlecredentials.json"
# audio = ["+@mqtt"]

[snips-audio-server]
# frame = 256
bind = "salon@mqtt"
# mike = "Built-in Microphone"
# disable_playback = false
# disable_capture = false

[snips-dialogue]
# resources = "/usr/share/snips/dialogue"
# session_timeout = 15
# lambda_timeout = 5
# retry_count = 3
# sound_feedback_disabled_default = false

[snips-hotword]
# model = "/usr/share/snips/hotword"
# hotword_id = "default"
# sensitivity = "0.5"
audio = ["salon@mqtt","chambre@mqtt","sdb@mqtt","cuisine@mqtt","entree@mqtt]
# no_vad_inhibitor = false
# vad_messages = false

[snips-injection]
#asr_model = "/usr/share/snips/asr"
#nlu_engine = "/usr/share/snips/nlu_engine"
#keep_nfirst = 3

[snips-nlu]

[snips-tts]
## Choose one tts provider (defaults to picotts)
# provider = "picotts"
# provider = "makerstts"
# provider = "customtts"
## customtts specific configuration (here configured to use picotts using the en-US language)
## available placeholder variables : %%OUTPUT_FILE%%, %%LANG%%, %%TEXT%%
# customtts = { command = ["pico2wave", "-w", "%%OUTPUT_FILE%%", "-l", "en-US", "%%TEXT%%"] }

snips d’un des satellites (seul le nom du site id change ensuite pour chaque satellite !

[snips-common]
# bus = "mqtt"
mqtt = "192.168.1.30:1883"
# audio = ["+@mqtt"]
# assistant = "/usr/share/snips/assistant"
# user_dir = "/var/lib/snips"

## MQTT authentication
# mqtt_username = ""
# mqtt_password = ""

## MQTT TLS configuration
# mqtt_tls_hostname = ""
# mqtt_tls_disable_root_store = false
# mqtt_tls_cafile = ""
# mqtt_tls_capath = ""
# mqtt_tls_client_cert = ""
# mqtt_tls_client_key = ""

[snips-analytics]

[snips-asr]
# no_fst_map = true
# beam_size = 8
# model = "/usr/share/snips/asr"
# audio = ["+@mqtt"]
# partial = false
# partial_period_ms = 250

[snips-asr-google]
# credentials = "/usr/share/snips/googlecredentials.json"
# audio = ["+@mqtt"]

[snips-audio-server]
# frame = 256
bind = "cuisine@mqtt"
# mike = "Built-in Microphone"
# disable_playback = false
# disable_capture = false

[snips-dialogue]
# resources = "/usr/share/snips/dialogue"
# session_timeout = 15
# lambda_timeout = 5
# partial = false
# partial_period_ms = 250

[snips-asr-google]
# credentials = "/usr/share/snips/googlecredentials.json"
# audio = ["+@mqtt"]

[snips-audio-server]
# frame = 256
bind = "cuisine@mqtt"
# mike = "Built-in Microphone"
# disable_playback = false
# disable_capture = false

[snips-dialogue]
# resources = "/usr/share/snips/dialogue"
# session_timeout = 15
# lambda_timeout = 5
# retry_count = 3
# sound_feedback_disabled_default = false

[snips-hotword]
#model = "/usr/share/snips/hotword"
# hotword_id = "default"
# sensitivity = "0.5"
#audio = ["cuisine@mqtt"]
# no_vad_inhibitor = false
# vad_messages = false

[snips-injection]
#asr_model = "/usr/share/snips/asr"
#nlu_engine = "/usr/share/snips/nlu_engine"
#keep_nfirst = 3

[snips-nlu]

[snips-tts]
## Choose one tts provider (defaults to picotts)
# provider = "picotts"
# provider = "makerstts"
# provider = "customtts"
## customtts specific configuration (here configured to use picotts using the en-US language)
## available placeholder variables : %%OUTPUT_FILE%%, %%LANG%%, %%TEXT%%
# customtts = { command = ["pico2wave", "-w", "%%OUTPUT_FILE%%", "-l", "en-US", "%%TEXT%%"] }

Si tu as une idée pour le soucis du skill-server qui a décidé de faire chier maintenant alors qu’il marchait bien jusque là je suis preneur :smiley:

Merci

Vince


#13

Est ce que tu as des apps qui ont des skills ? Plus simplement, est ce que tes commandes fonctionnent ? Comme :“ferme les volets”, “allumes les lumières” etc… Si oui alors, c’est que tu n’as pas d’apps avec des skills.
Sinon, tu refais un sam install assistant avec au préalable si nécessaire un petit noettyage du répertoire des skills.
au cas où, passe sur le discord et viens me voir en mp, on regardera ça en live : https://discord.gg/AeCmbJQ

Ced


#14

Euh ben l’assistant que j’ai fait contient uniquement des intents (pas de script ou autre configuré dans la console SNIPS !) ! Je récupère directement l’intent dans HA :wink: mais c’est bizarre parce que j’ai jamais eu ce soucis lors des précédentes installations de ce même assistant qui marche bien avec mon HA !

Pour “nettoyer” mon serveur avant de réinstaller l’assistant, je benne tout ce qu’il y a dans /usr/share/snips n’est ce pas ?

Mise à jour: j’ai donc virer le dossier assistant dans /usr/share/snips, réinstallé l’assistant mais problème toujours le même ! D’ailleurs il va chercher les soit-disant skills manquants dans /var/lib/snips alors que l’assistant est dans /usr/share/snips normal ça ?

Merci

PS: L’installateur d’assistant est super casse-pied car à chaque fois que tu l’utilises il se sent obligé de réactiver tous les services snips sans te demander ton avis :rage:


#15

Si tu n’as que des intents, le snips-skill-server s’arrête en disant qu’il ne trouve pas de skill à traiter. Le comportement est normal pour moi. C’est même ce qu’il écrit quand il sort.

L’assistant est dans /usr/share/snips et les skills sont dans /var/lib/snips/skills

Si tu tiens vraiment à ce que snips-skill-server soit démarré, tu peux installer l’app donneHeure. Cette app possède un skill et fera démarré ton snips-skill-server.

==> Est ce que même si ton service snips-skill-server ne tourne pas, ton snips fonctionne avec home assistant actuellement ? Normalement, cela devrait être le cas.

ced


#16

merci pour les explications et donc le service snips-skills peut être arrété sans soucis si on n’a pas de skills :wink: Je pensais qu’il fallait qu’il tourne quand même ! Du coup je l’ai désactivé sur mon snips maitre aussi alors puisqu’effectivement je n’en ai pas besoin !

Effectivement il marchait bien sur les satellites malgré tout :wink: et maintenant aussi sur mon maitre (j’ai du corriger une petite erreur de syntaxe dans le snips.toml du master, ça l’empêchait pas de démarrer mais ça foutait la merde :smiley:

Merci pour l’aide et maintenant mon master et mes satellites marchent ! je vais rebosser sur mon assistant maintenant pour un autre soucis (confusion assez souvent entre deux commandes complètement distinctes et je vois pas trop pourquoi, je pense qu’il faut que j’aille bouquiner un peu la doc pour créer un assistant (le faire à l’arrache est pas forcément la meilleure solution comme j’ai fait !!

[10:04:56] [Asr] captured text "éteint la lumière" in 2.0s
[10:04:56] [Asr] was asked to stop listening on site salon
[10:04:56] [AudioServer] was asked to play a wav of 93.1 kB with id '283dad31-f9ac-427e-9ad2-451726e83769' on site salon
[10:04:57] [AudioServer] finished playing wav with id '283dad31-f9ac-427e-9ad2-451726e83769'
[10:04:57] [Nlu] was asked to parse input "éteint la lumière"
[10:04:57] [Nlu] detected intent vincen:Temperature with probability 1.000 for input "éteint la lumière"
              Slots ->
                 action -> éteint la lumière (confidence: 0.988)
[10:04:57] [Dialogue] New intent detected vincen:Temperature with probability 1.000
              Slots ->
                 action -> éteint la lumière (confidence: 0.988)