Bonjour,
Mon ordinateur passe la plupart de son temps en mode veille (veille sur mémoire aka sleep) lorsqu'il est inutilisé. Je cherche à faire en sorte qu'il se réveille à une heure précise pour lancer mon courrielleur et vérifier et télécharger le nouveau courrier entrant, le cas échéant. J'utilise l’application Geary qui est paramétrée pour récupérer les courriels au lancement. Je précise également que ma session est ouverte pendant que l'ordinateur est en veille.
Là ou je bute c'est « comment réveiller l'ordinateur du mode veille pour lui faire exécuter Geary sur la session en cours ? ».
Après les recherches, il semblerait que systemd puisse faire le job avec l'option "WakeSystem=true".
J'ai donc fait quelques recherches dans la doc ainsi que dans différents forums et je crée donc un fichier wakeup.timer :
[Unit]
Description=Scheduled wake up at 6pm
[Timer]
Unit=wakeup.service
OnCalendar=*-*-* 18:00
WakeSystem=true
Persistent=false
[Install]
WantedBy=multi-user.target
et un fichier wakeup.service avec une commande bidon pour voir si le service fonctionne et réveille sort bien l'ordinateur du mode veille :
[Unit]
Description=Checking emails at scheduled time.
#RefuseManualStart=true
#RefuseManualStop=true
ConditionACPower=true # ensure power cable plugged in
Wants=network-online.target # wait for network to be available
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/echo "Wake up Neo" >> /dev/null
J'active le service :
systemctl enable wakeup.timer ; systemctl start wakeup.timer
Et je mets l'ordinateur en veille avant l'heure convenue.
Premier problème : rien ne se passe.
Pourtant je vérifie avec systemctl list-timers
Le service apparait bien et est bien exécuté mais l'ordinateur reste en veille.
Pouvez-vous me dire ce qui ne fonctionne pas ?
Et pour aller plus loin : comment faire en sorte de lancer Geary au réveil en tant qu'utilisateur ?
Dans le service systemd, il me semble que les programmes sont lancés en tant que root…
Merci d'avance !
# Exemple
Posté par lann . Évalué à 4.
Un exemple de ce qui fonctionne chez moi :
Timer :
[Unit]
Description=Backup du dossier musique
[Timer]
Unit=backup_musique.service
OnCalendar=Mon,Tue,Wed,Thu,Sat,Sun --* 03:00
WakeSystem=true
Persistent=false
[Install]
WantedBy=multi-user.target
Service :
[Unit]
Description=Backup du dossier musique
RefuseManualStart=true
RefuseManualStop=true
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-inhibit --what=handle-lid-switch --why=backups /etc/systemd/system/backup_musique.sh
J'ai tout mis dans le dossier /etc/systemd/system$
[^] # Re: Exemple
Posté par Eridor . Évalué à 2.
Merci, ça confirme que ma configuration est bonne.
# deux conditions
Posté par mahikeulbody . Évalué à 6. Dernière modification le 20 octobre 2023 à 19:55.
Dans le BIOS :
[^] # Re: deux conditions
Posté par Eridor . Évalué à 3.
Pour la première option, j'ai un doute : quel lien avec le réveil par le réseau ?
Sinon, j'ai modifié le paramètre ErP comme tu me l'as indiqué : il était sur "Enabled (S4+S5)". Je l'ai passé à "Enabled (S5)" et cela a fonctionné, le PC s'est réveillé tout seul (à noter que cela fonctionne aussi en paramétrant sur "Disabled").
[^] # Re: deux conditions
Posté par mahikeulbody . Évalué à 3.
wake-on-lan signifie réveil par le réseau.
[^] # Re: deux conditions
Posté par Eridor . Évalué à 5.
Oui, j'avais compris, la question était plutôt : quel est le lien entre le réveil par le réseau et la situation présente ? Puisque, si je ne m'abuse, on ne cherche pas à passer par le réseau pour réveiller l'ordinateur, d'où ma question : pourquoi activer cette option dans ce contexte ?
Dans le doute, je l'ai laissée désactivée. Mais modifier le paramètre "ErP" que tu m'as indiqué était la bonne solution.
[^] # Re: deux conditions
Posté par mahikeulbody . Évalué à 5. Dernière modification le 21 octobre 2023 à 10:09.
Effectivement, aucun ! Je me suis précipité sur le wake sans réfléchir plus loin…
# À quoi bon ?
Posté par Jean-Baptiste Faure . Évalué à 2.
Pourquoi ne pas simplement laisser tourner ton logiciel de courrier en arrière-plan pour qu'il récupère à intervalle régulier les nouveaux messages ?
[^] # Re: À quoi bon ?
Posté par Eridor . Évalué à 2.
Parce que quand l'ordinateur est en veille, il ne le fait pas.
L'idée est de réveiller l'ordinateur à un moment T. Si le courrielleur est déjà lancé, il récupérera tout seul les courriels dès que le réseau sera opérationnel. Sinon, je cherche à le lancer automatiquement à ce moment.
(Accessoirement, j'en profite pour toucher à systemd que je n'ai jamais vraiment utilisé).
[^] # Re: À quoi bon ?
Posté par Jean-Baptiste Faure . Évalué à 5.
Ok, je n'avais pas percuté que l'ordinateur est en veille. Mais je ne comprends toujours pas le problème (hors l'intérêt de se frotter à systemd) : si tu n'es pas devant l'ordinateur, à quoi cela sert-il de relever le courrier ? Ne suffirait-il pas de s'assurer qu'il le fera dès que tu réveilleras ta session pour utiliser l'ordi ? À quoi bon forcer le réveil de l'ordi à 9h pour relever le courrier si tu viens utiliser l'ordi à 9h37 et qu'à ce moment là il relève aussi le courrier ?
[^] # Re: À quoi bon ?
Posté par Eridor . Évalué à 7. Dernière modification le 20 octobre 2023 à 22:41.
Bah l'idée c'est que GNOME affiche une notification si Geary a reçu quelque chose et que je le vois quand je passe devant l'écran, sans pour autant être posé devant. Un peu comme une notification de téléphone.
Alternativement, on peut laisser l'ordinateur tourner en continu, il affichera alors à l'écran les notifications au fil de la réception des nouveaux messages, mais ça ne me parait pas tout-à-fait optimal (c'est de l'énergie gaspillée). Tout ce que je veux c'est juste qu'il effectue tout seul une dernière petite vérification en fin de journée et voir de loin s'il y a besoin d'y plus attentivement ou pas. Et s'il n'y a rien, il se rendort tout seul. C'est pour ça que l'idée de réveiller la machine à une heure précise et de lancer l'application à ce moment m'a paru intéressante (en plus de faire un petit challenge technique :).
[^] # Re: À quoi bon ?
Posté par Jean-Baptiste Faure . Évalué à 2.
Ok, je comprends mieux.
[^] # Re: À quoi bon ?
Posté par Xanatos . Évalué à 1.
J'ai pendant longtemps utilisé un script Python maison sur mon serveur autohébergé qui vérifiait sur différents comptes les UNREAD de IMAP et poussait le résultat sous une forme de compteur sur une page web statique que je consultais via mobile ou fixe au gré de mes disponibilités.
Mais bon j'ai arrêté parce que les mots de passe en clair, humhum.
Ça doit sûrement être faisable avec des API et une gestion via trousseau ou tokens en fonction des fournisseurs.
# J'y suis presque
Posté par Eridor . Évalué à 2.
J'avance petit à petit :
Après quoi, j'active le service :
et je le lance pour voir :
Là, la fenêtre de Geary s'ouvre bien comme escompté.
Maintenant la question, c'est comment lier le wakeup.timer (qui réveille bien l'ordinateur) au wakeup.service dans mon dossier personnel (qui lance bien l'application souhaitée) ?
Auriez-vous des explications ou pistes à me donner ?
[^] # Re: J'y suis presque
Posté par hugotrip . Évalué à 2.
Et t'as essayé de mettre aussi le wakeup.timer dans ~/.config/systemd/user/ ?
(en l'activant comme précédemment, en n'oubliant pas le
--user
)chez moi ça suffit (il faut juste que le timer et le service aient le même nom)
[^] # Re: J'y suis presque
Posté par Eridor . Évalué à 2. Dernière modification le 21 octobre 2023 à 08:44.
J'ai essayé avec le contenu suivant pour le fichier .timer :
(J'ai changé l'heure à des fins de test).
Je lance le tout :
Mais j'obtiens un message d'erreur difficilement compréhensible :
Et voilà ce que me donne journalctl -xe :
et voilà ce que me donne systemctl status --user wakeup.timer :
Il doit probablement y avoir des options mal configurées quelque part…
Peux-tu me poster le contenu de ton fichier .timer pour comparer ?
[^] # Re: J'y suis presque
Posté par Eridor . Évalué à 2. Dernière modification le 21 octobre 2023 à 10:07.
Je me réponds à moi-même :
D'après la documentation de systemd, l'option "WakeSystem=true" requiert des privilèges que le simple utilisateur n'a pas.
Du coup le problème reste entier et je sèche un peu…
[^] # Re: J'y suis presque
Posté par hugotrip . Évalué à 2.
Désolé pour la fausse piste :(
au moins maintenant, il est certain que le service systemd ne peut être directement en mode utilisateur.
J'ai recherché sur google comment lancer un service en tant qu'un certain utilisateur, et j'ai trouvé ça.
dans ton service global, il faudrait semble-t-il rajouter les options :
[^] # Re: J'y suis presque
Posté par gUI (Mastodon) . Évalué à 5.
Au passage, si on veut que l'utilisateur puisse laisser des trucs en arrière plan sans être connecté il faut lui donner les droits explicitement via
loginctl enable-linger <user>
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# Approche gadget électronique
Posté par gUI (Mastodon) . Évalué à 5.
Ça me donne l'idée d'un gadget ça tiens. Un truc USB reconnu comme un clavier qui envoie la touche "réveil" (ou d'ailleurs n'importe quelle touche). Tu le programmes périodiquement et/ou le contrôle à distance…
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Approche gadget électronique
Posté par Eridor . Évalué à 2.
Ça serait peut-être plus simple que de batailler avec systemd… Je n'ai pas ça sous la main, mais je pense qu'un pointeur de présentation serait un bon candidat pour cette tâche. :D
[^] # Re: Approche gadget électronique
Posté par gUI (Mastodon) . Évalué à 3. Dernière modification le 21 octobre 2023 à 10:28.
Un ESP32 et une stack déjà faite et t'es pas loin de la solution.
EDIT : ça peut se faire aussi avec un ATTiny85 apparemment.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# rtcwake
Posté par tkr . Évalué à 2. Dernière modification le 26 octobre 2023 à 07:20.
n'aiderait pas?
# Commentaire supprimé
Posté par tkr . Évalué à 1. Dernière modification le 26 octobre 2023 à 07:20.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.