Aller au contenu

Watchdog Pour Scènes Et Modules Virtuels


Lazer

Messages recommandés

oui justement, j'ai coupé mon sonos (avec le wall plug)

j'ai attendu pendant 2 minutes (donc 2 redémarrages forcés du VD par le watchdog), et j'avais ce genre de messages dans le debug du VD :


[DEBUG] 23:23:01: retry #1 action: GetMute
[DEBUG] 23:23:04: Communication error code: 2
[DEBUG] 23:23:04: retry #2 action: GetMute
[DEBUG] 23:23:08: Communication error code: 2
[DEBUG] 23:23:08: retry #3 action: GetMute
[DEBUG] 23:23:11: Communication error code: 2
[DEBUG] 23:23:11: retry #4 action: GetMute

EDIT : Mais peut être qu'en attendant plus longtemps il aurait fini par planter.... tu as testé ?

EDIT2 : j'ai le VD Sonos Version 0.0.8

Modifié par Lazer
Lien vers le commentaire
Partager sur d’autres sites

bon en effet c'est embêtant.... ça fait un moment que le Sonos est éteint, et le watchdog vient de redémarrer le VD, même avec la chaine espace " ".

Donc j'en déduis que le VD fini par planter. Je vais désactiver le restart de ce VD pour voir quelle est le plantage et si on peut s'adapter en conséquence....

Lien vers le commentaire
Partager sur d’autres sites

Voici le résultat de mes tests pour le Sonos.

je l'ai débranché à10:28:34

[DEBUG] 10:28:01: Get transport state request
[DEBUG] 10:28:01: transport state: PAUSED_PLAYBACK
[DEBUG] 10:28:13: Get mute state request
[DEBUG] 10:28:34: Communication error code: 2
[DEBUG] 10:28:34: retry #0 action: GetMute
[DEBUG] 10:28:47: Communication error code: 2
...

et il semble s'être planté tout seul à10:39:04

...
[DEBUG] 10:39:00: Error: Code returned n.c
[DEBUG] 10:39:03: Communication error code: 2
[DEBUG] 10:39:03: retry #0
[ERROR] 10:39:04: line 1540: attempt to call global 'getZpStatus' (a nil value)

Lien vers le commentaire
Partager sur d’autres sites

Lazer, selon moi ce n'est pas au niveau du Watchdog qu'il faut faire quelque-chose, mais au niveau du Sonos. Le Watchdog a parfaitement fait son job, il a détecté que le VD sonos était planté, et àraison.

Si tu as le courage de te pencher dans le code de KriKri

Lien vers le commentaire
Partager sur d’autres sites

Mon VD s'est planté tout seul cette nuit alors que le Sonos était alimenté.

Aucun message d'erreur, le core dump classique :(

 

Au moins toi du as eu un message d'erreur.... je regarde dans le code source ce soir. Tu as bien la même vesion du VD que moi ? 0.0.8

Lien vers le commentaire
Partager sur d’autres sites

oui, juste. Même ses commentaires sont compliqués ;)

Voici ce que j'ai après xml parser

-- SONOS Virtual Device & Text To Speech (TTS) - Give voice to your HC2 with SONOS wireless
-- speakers.
--
-- SONOS Recommended version : 5.1
--
-- Copyright (C) 2014 Jean-Christophe Vermandé
--
-- Version 0.0.8
--
-- Play TTS: fibaro:setGlobal("SonosTTS", "lng=fr|dr=auto|vol=10|txt=Bonjour les gens du forum ! Voici le T.T.S enfin fonctionnele !|");

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai trouvé..... et après avoir cherché pendant 2 h, je parcours le topic Sonos et je m'aperçois que Krikroff avait déjà  donné la bonne solution ici : http://www.domotique-fibaro.fr/index.php/topic/616-device-sonos-player-télécommande-pour-diffuseur-sonos/?p=28346

 

Je n'ai pas cherché pour rien, j'aurais au moins compris un petit bout de son code, c'est positif.

 

Donc si tu remplaces la ligne 1539 :

    return getZpStatus(retry + 1);

par :

    return self:getZpStatus(retry + 1);

Normalement ça doit fonctionner.

C'est surprenant que ça ne fonctionne pas pour PITP2 sur l'autre topic.

Sinon une autre variante qui semble fonctionner également chez moi :

    return self.getZpStatus(self, retry + 1);

.

Et si tu es curieux et que tu veux en savoir plus sur ce "self", un peu de lecture : http://www.lua.org/pil/16.html

 

 

A tester plus longuement, mais ça devrait résoudre l'instabilité de ce VD lorsque le Sonos n'est pas joignable. Donc on peut remettre restart=true sur le watchdog.

(pour la petite histoire, hier soir, j'avais désactivé le restart=true sur ce VD, qui a planté (core dump) vers 2h. Ce matin au réveil j'avais des centaines de mails me disant de redémarrer manuellement le VD.... heureusement que j'avais désactivé les SMS, sinon Free Mobile m'aurait surement banni !)

Lien vers le commentaire
Partager sur d’autres sites

merci Lazer. C'est implémenté. Cela fait 25 min que le sonos est débranché et toujours pas de plantage. Merci !

 

Tant que tu es plongé dans le VD Sonos de Krikroff, j'avais posé plusieurs fois la question (http://www.domotique-fibaro.fr/index.php/topic/907-sonos-play-stream-musiques-etc/?p=80995) sans jamais avoir de réponse, sur un autre VD qui permettait de jouer un mp3 spécifique sur le sonos. Je l'utilise pour faire du "tts" avec des messages préenregistrés, sans dépendre d'une connexion internet extérieure et sans latence, MAIS, il ne reprends pas la musique/radio là  où il était après avoir joué son mp3, comme dans le tts.

 

Voici le code original de KriKroff : http://www.domotique-fibaro.fr/index.php/topic/907-sonos-play-stream-musiques-etc/?p=10104

Ma petite modif du script pour corriger arrêt après 30s : http://www.domotique-fibaro.fr/index.php/topic/907-sonos-play-stream-musiques-etc/?p=87742

Lien vers le commentaire
Partager sur d’autres sites

J'ai une erreur Status 404?

 

vous savez pourquoi?

 

local watchdog = {
   {type = "Scene", id = 308, match = {text="Last run", interval=2*60},               no_match = {text=""}, count=1,      restart=true, notification = {"push", "email"}}, -- Graphique
 {type = "Scene", id = 265, match = {text="Durée des traitements", interval=11*60}, no_match = {text=""}, count=1,      restart=true, notification = {"push", "email"}}, -- GEA
 {type = "VD",    id = 112, match = {text="", interval=0},                          no_match = {text="", type="ERROR"}, restart=true, notification = {"push", "email"}}, -- Clock Sync
    {type = "VD",    id = 93, match = {text="", interval=0},                          no_match = {text="", type="ERROR"}, restart=true, notification = {"push", "email"}}, -- My Batteries
 {type = "VD",    id = 111, match = {text="", interval=0},                          no_match = {text="", type="ERROR"}, restart=true, notification = {"push", "email",}}, -- Evénements
 {type = "VD",    id = 215, match = {text="", interval=0},                          no_match = {text="", type="ERROR"}, restart=true, notification = {"push", "email", "sms"}}, -- Check Internet
}

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...
  • 2 mois après...

@Lazer, je souhaite installer le WatchDog pour GEA, ton tuto est très bien fait,  j'ai envie de dire comme d'hab  ;)

j'ai juste un ou deux point à  éclaircir, pour ton GEA, tu as mis 11*60, pourquoi 11, pourquoi pas 30 puisque GEA a un sicle de 30 seconde? je me doute que tu n'as pas mis ça par hasard  ^_^

cela veut dire que la scène test toutes les 11 seconde?

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Un GEA qui n'a rien à  faire (la nuit, pendant les vacances, etc) n'affiche rien pendant 10 minutes.

Le SEUL message répétitif sur lequel on puisse se baser pour déterminer de façon fiable si GEA est planté ou continue de tourner, est le message "Durée des traitements" qui est affiché par GEA au bout de 10 minutes.

Donc on attend 11*60s = 11 minutes, mais on pourrait tout aussi bien attendre 10 minutes et 1 seconde.

En cas de plantage (core dump sous Linux) de GEA, la scène est donc redémarrée au plus tard après 11 minutes.

 

A noter qu'on compte également le nombre d'instances (count=1) de la scène, donc GEA est redémarré immédiatement (enfin, après 60s maxi qui est le temps de sleep entre 2 vérifications) si il n'y a plus d'instance.

 

Conclusion : double vérification.

  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...