J’ai de temps en temps les ports usb sur mon Pi4 qui freeze (cela le fait rarement heureusement), mais ce qui m’embête surtout c’est que cela bloque le fonctionnement de Blea avec ma clé Bluetooth et mes périphériques zigbee avec ma conbee2.
La solution est lorsque je vois le problème je reboot et ça refonctionne. Le problème est que je vois souvent cela assez tard si ça arrive la nuit par exemple…
Je souhaiterai réaliser un scénario qui se declanche sur une erreur log spécifique sur Blea :
Can’t init device hci0: Connection timed out (110)
Et que cela me lance un reboot de mon raspberry avec une petite notification.
Pourriez vous m’indiquer comment réaliser le declanchement du scénario sur cette log spécifique (et juste 1 fois max sur la journée pour pas que ca tourne en boucle si vraiment j’aurai un gros soucis).
Bonjour, non cela n’est pas suffisant les ports usb ne répondent plus et le pi4 ne voit plus les périphériques il faut vraiment un reboot, Blea par exemple essai de relancer et j’ai une erreur qu’il a essayé de relancer le daemon 3 fois.
Pas la dernière version j’ai celle qui a un an 0x26680700 (je suis avec zigbee2mqtt) sinon je perds l’affichage des liens avec lqi sous la vue schéma de zigbee2mqtt (problème connu malheureusement)
Bonjour,
Pour tenter de répondre à la question, non tu ne pourra pas déclencher le scénario sur une erreur de log spécifique, ce n’est pas un déclencheur disponible… Le mieux que tu pourrais faire à la limite, c’est de programmer ton scénario (genre, toute les 5 min) et scanner ton log pour vérifier s’il y a cette erreur.
Mais attention, dans ce cas il faut ensuite vider le log, sinon il va redémarrer toutes les 5 minutes évidemment!
Peut être mieux de redémarrer sur la base de la notification d’échec du démon - mais, la aussi, supprimer la notification bien sur
Si ca t’interesse, ci dessous un scenario qui en fonciton des notififations envoyée par un plugin, supprime le message des logs (sur la base d’une chaine de caractère contenu dans le message). Tout pourra facilement l’adapter, je pense pour lancer une commande de reboot de ton RPI …
$strings = array('connexion SSH KO'); // Chaine de caractère à rechercher pour supprimer la ligne <chaine de caractère>, separer les differentes chaines de caractère par une ,
$tags = $scenario->getTags(); // Recup des tags passés en paramètre de lancement du scenario
$tagPlugin = $tags['#plugin#'] ; // recup du tag plugin
$msgs = message::byPlugin($tagPlugin) ;
foreach ($msgs as &$msg) { // Pour chaque message remonté pour ce plugin
foreach ( $strings as $string ) { // pour chaque chaine de caractère à filtrer
if ( stristr( $msg->getMessage() , $string ) ) {
message::removeAll($tagPlugin, $msg->getLogicalId()); // si une chaine de caractère est trouvée, je supprime le message
}
}
}
il convient juste de mettre dans le si le plugin qui envoi le message (blea dans ton cas me semble-t’il !)
et dans $strings = array(‹ connexion SSH KO ›) la chaine de caractère que tu souhaite utiliser pour declencher le reboot.
et finalement, remplacer le message::removeAll($tagPlugin, $msg->getLogicalId()); par ta commande de reboot du RPI
Dans la config des logs logs, indiquer que tu lances ce scenario à chaque reception d’un message :
Ah oui ok merci je comprends mieux, par contre je dois passer par les messages envoyés dans les notifications mais pas les logs. Du coup dans la notification mon message est que blea n’a pas réussit à relancer le daemon.
« Attention je pense qu’il y a un soucis avec le démon que j’ai relancé plus de 3 fois consécutivement »
C’est ça qu’il faut mettre dans le Bloc Code ?
$strings = array('Attention je pense qu'il y a un soucis avec le démon que j'ai relancé plus de 3 fois consécutivement'); // Chaine de caractère à rechercher pour supprimer la ligne <chaine de caractère>, separer les differentes chaines de caractère par une ,
$tags = $scenario->getTags(); // Recup des tags passés en paramètre de lancement du scenario
$tagPlugin = $tags['#plugin#'] ; // recup du tag plugin
$msgs = message::byPlugin($tagPlugin) ;
foreach ($msgs as &$msg) { // Pour chaque message remonté pour ce plugin
foreach ( $strings as $string ) { // pour chaque chaine de caractère à filtrer
if ( stristr( $msg->getMessage() , $string ) ) {
jeedom_reboot; // Reboot de Jeedom
}
}
}
Mais bon erreur : Sous-élément inconnu. Vérifiez l’ID : Array
En même temps il y a une notion de compteur d’occurrences qui peut être pratique.
Après pour le problème de base je n’ai pas de Pi4 mais peut-être de voir une une màj du firmware :
Au niveau des prises pour ne pas avoir de problème d’alimentation avec mon Pi3 j’ai ce hub usb https://www.amazon.fr/gp/product/B00OQ0CYFE/ et pour son alim externe c’est branché sur la prise usb d’alim sur l’onduleur (un Eaton 850 avec 2 prises d’alim usb bien pratique) mais en dehors du fait qu’il vaut mieux éviter de brancher le SSD dessus je n’ai pas eu de problème.