Closed alexylem closed 7 years ago
mais... dans l'events on peu mettre jarvis au démarrage en le mettant avec @reboot non ?
En effet, voir: https://github.com/alexylem/jarvis/wiki/events
Mais j'aimerais faire quelque-chose de plus facile à activer, avec une simple option "Launch at startup" dans les paramètres.
mmh mais en soit ce doit pas etre trop compliquer a mettre en place non ?
Non ce n'est pas compliqué, il y a différentes manières de faire, c'est juste qu'il y a 17 tickets ouverts donc ce n'est qu'une question de priorité 😄
oui je vois ça.... grosse masse de travail :)
Bon finalement je pense que je vais aller au plus simple, une option dans les Settings pour lancer au démarrage qui rajoutera la ligne suivante dans les évènements (si elle n'y est pas déjà)
@reboot ~/jarvis/jarvis.sh -b
A tester quand même...
oui c'est plus judicieux et c'est plus facile ;)
@alexylem , c'est fait en temps que lancement de service aujourd'hui ou cela ne fonctionne toujours pas. Je ne l'ai pas encore testé mais je l'ai vu dans le menu de config il me semble ?
Oui tu peux le lancer comme un service et terminer ton terminal SSH. Par contre si tu dois rebooter ton raspberry Pi, Jarvis ne se relance pas automatiquement. On peux très bien rajouter:
@reboot ~/jarvis/jarvis.sh -b
dans le crontab. L'idée est de proposer cette action automatiquement via un simple setting Jarvis.
@alexylem , Sauf si tu prévoit de d'utiliser Jarvis sur d'autres distribution/materiel.
Il est facile de mettre en place jarvis en tant que service avec systemd. Vu que raspbian est une debian.
Jarvis est utilisé sur bien d'autres plateformes d'après les utilisateurs (OSX, Ubuntu, ...), donc il est difficile de trouver une méthode universelle...
Le crontab
est disponible à peu près partout (et utilisé par Jarvis pour les Events).
Oui, mais dans le cas d un shutdown, power off et on, cela ne fonctionne pas. L utilsation du reboot dans le cron de debian est deprecated en plus :) Il faut utiliser le rc.local ou faire son shell dans rc.d
Merci @idem2lyon je ne savais pas. Je vais regarder ce que tu proposes.
Email recu d'Olivier:
Il suffit de le poser ds /etc/init.d, de faire un chmod +x et faire un lien symbolique ds le /etc/rc2.d, mais je suppose que tu connais. Peut etre qu'il faudra l'integrer au wizard de l'install pour faire une détection du user et repositionner les chemins
#! /bin/sh
set -e
umask 022
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
pidJarvis=$(pgrep jarvis.sh | head -n 1)
say () { pico2wave -l fr-FR -w /tmp/test.wav "$1" aplay -q /tmp/test.wav rm /tmp/test.wav }
check_config () { usernameJarvis=$(cat /home/pi/jarvis/config/username) if [ -z ${usernameJarvis} ]; then echo "Pas de config jarvis pour le user pi" exit 1 fi }
check_start () {
if (pgrep jarvis.sh) && [ -e /tmp/jarvis.lock ];then
echo [ Jarvis OK ]
say "Le service est démarré"
elif ( tail -2 /home/pi/jarvis/jarvis.log | grep ERROR > /dev/null );then
say "Le service est arrêté a cause d'une erreur"
else
echo [ Jarvis KO ] $(tail -10 /home/pi/jarvis/jarvis.log | grep ERROR > /dev/null)
say "Le service est arrêté"
fi
}
case "$1" in start) if [ ! -z $pidJarvis ] && ( pgrep -lf jarvis.sh );then echo "[ Jarvis deja actif ]" else check_config sudo -H -u pi bash -c '/home/pi/jarvis/jarvis.sh -b' sleep 3 check_start fi ;; stop) if [ -e /tmp/jarvis.lock ];then rm /tmp/jarvis.lock; fi for pid in $(pgrep jarvis.sh);do kill -9 $pid;done check_start ;;
status) check_start ;;
restart) if [ -e /tmp/jarvis.lock ];then rm /tmp/jarvis.lock; fi for pid in $(pgrep jarvis.sh);do kill -9 $pid;done check_start if [ ! -z $pidJarvis ] && ( pgrep -lf jarvis.sh );then echo "[ Jarvis deja actif ]" else check_config sudo -H -u pi bash -c '/home/pi/jarvis/jarvis.sh -b' sleep 3 check_start fi ;;
*) echo "Usage: /etc/init.d/ssh {start|stop|restart|status}" exit 1 esac
exit 0
Reste plus qu'à intégrer dans le wizard de Jarvis 😄
Attention, c'est pour du systemd... Les nouvelles debian sont en systemIV :(
Sinon il y a beaucoup plus simple - selon moi - pour les distributions utilisant systemd (dont la dernière raspbian):
[Unit]
Description=Jarvis
After=syslog.target
[Service]
User=pi
Type=simple
PIDFile=/var/run/jarvis.pid
ExecStart=/opt/jarvis/jarvis.sh -n
ExecStop=/opt/jarvis/jarvis.sh -q
Restart=always
[Install]
WantedBy=multi-user.target
Adapter le nom de l'utilisateur qui fait tourner jarvis ainsi que les chemins si jarvis n'est pas installé dans /opt/jsarvis
Activer le service systemctl enable jarvis
et le lancer service jarvis start
. Pour le stopper : service jarvis stop
Dorénavant jarvis se lancera automatiquement au démarrage, et se relancera tout seul si jamais il plante.
Wow @tigre-bleu j'adore le Jarvis qui se relance tout seul. Bon je vais tester ca!!
Hi, I made a Jarvis plugin based on @tigre-bleu script, it is added to the store Let me now if it works for you
Oliv'
@Oliv4945 great plugin, very well written. To answer a question in your code:
username=`whoami` # Jarvis username variable is not set ?
$username
is defaulted by $(whoami)
however users generally change it to whatever nickname they want, ex: "Mon maître" 😄
So you are right to set it to $(whoami)
I may integrate this plugin into Jarvis Core later on.
Ok, thank you for the clarification on username. I don't know if it is a good idea to merge it into jarvis-core as it can not be used on non systemd based distributions.
Ok I agree. I am thinking of:
I think that a "recommended" category is a nice idea :+1:
Bonjour,
Je rencontre actuellement un problème pour faire fonctionner le Plugins de démarrage automatique de Jarvis (problème identique en essayant manuellement avec les astuces du ticket ici présent).
Après installation de celui-ci et lors du redémarrage du Raspberry, Jarvis ne démarre pas automatique et l'erreur suite est renvoyé par le service Jarvis
player@raspberrypi:~ $ sudo journalctl -f -u jarvis.service -- Logs begin at Thu 2016-11-03 18:16:43 CET. -- août 10 16:47:16 raspberrypi systemd[1]: Started Jarvis. août 10 16:47:17 raspberrypi jarvis.sh[381]: Notice: you can use 'jarvis' instead of '/home/player/jarvis/jarvis.sh' août 10 16:47:23 raspberrypi jarvis.sh[381]: cityo: Bonjour août 10 16:47:23 raspberrypi jarvis.sh[381]: ERROR: play command failed août 10 16:47:23 raspberrypi jarvis.sh[381]: HELP: Verify your speaker in Settings > Audio > Speaker août 10 16:47:23 raspberrypi jarvis.sh[381]: août 10 16:47:23 raspberrypi systemd[1]: jarvis.service: Main process exited, code=exited, status=1/FAILURE
Je vous avouerais que je sèche un peu et que votre aide me serait précieuse!!!
je précise aussi que manuellement tout est bien fonctionnel (que le démarrage ce fasse normalement ou en tant que service) le réel problème survient lorsque le service doit être lancé au démarrage.
Description
Proposer une option pour démarrer Jarvis (en mode service) au démarrage.