Programmation multiple dans économies d'énergie

bubumac

Membre actif
5 Juin 2004
137
3
Tahiti
Bonjour,

Je souhaite programmer les évènements suivants sur Mon Mac, qui est lui même programmé pour une mise en veille au bout de 5 min :

8 h : allumage
23 h : extinction

L'extinction ne fonctionnant que si le Mac n'est pas en veille, il me faut donc programmer une sortie de veille (réactivation) à 22h58 par exemple.

Question : comment programmer cette réactivation, sachant que le panneau "Économiseur d'énergie / Onglet Programmation" ne permet qu'une seule programmation "Démarrer ou réactiver", déjà prise par l'allumage ?

Si besoin d'un logiciel, j'aimerais un freeware ...

Merci pour votre aide
 
tonnes de facon de faire et sans outil externe
(multi traité)

par exemple via ides evenements ical associés à une alarme , l'alarme etant ici ouvrir un script , un script d'action ( mise en veille , exctintion)
ainsi tu reserverais le reglage pref systeme qu'au demarrage

cei dit il existe beaucoup de mini applis qui regroupent des actions divers de ce type via une interface
certaines sont déjà évoquées en archive

bien entendu le choix de stratégie ou de mini applis ca dépend aussi de l'OS
(inconnu)
 
tonnes de facon de faire et sans outil externe
(multi traité)

par exemple via ides evenements ical associés à une alarme , l'alarme etant ici ouvrir un script , un script d'action ( mise en veille , exctintion)
ainsi tu reserverais le reglage pref systeme qu'au demarrage

cei dit il existe beaucoup de mini applis qui regroupent des actions divers de ce type via une interface
certaines sont déjà évoquées en archive

bien entendu le choix de stratégie ou de mini applis ca dépend aussi de l'OS
(inconnu)

Bonjour Pascal,

L'OS utilisé est Mac OS X 10.8.4.

Actuellement, j'utilise le tableau de bord préférences système "économies d'énergie" pour :
- l'allumage
- la mise en veille (5 ou 10 min)
- l'extinction

Tu préconises donc de ne plus s'en servir pour la mise en veille, ni l'extinction ? Comment fais-tu alors pour que l'ordi gère convenablement, et de façon autonome, la mise en veille ?

Encore une fois, mon seul souci est de réactiver l'ordi juste avant l'extinction.

Merci pour ton aide.
 
je ne dis pas que le tableau de bord comme tu l'appelles est inutile
il est juste pas pratique et limité si on veut multiplier des combinaisons d'actiions

comme déjà dit il existe des tonnes d'autres facons de faire avec ce qu'il y a déjà sur le mac ou via outils externes
evemements dans ical , scripts Applescript ou scripts Automator
(d'action programmées,, avec sans compte à rebours, délais etc)

j'ai pas 10.8 sous les yeux mais Automator a déjà des scripts et le web regorge d'Applescript de fermeture programmée etc

les applis externes ne sont pas indispensables mais peuvent etre plus pratiques si on ne veut pas s'amuser avec des applescripts ou Automator ou ical

( en gros elles ne ne font rien d'autre que contenir des scripts pré écrits avec une interface pour changer des options)
y en a des brouettes entieres sur l'apstore ( gratuites ou payantes)
 
je ne dis pas que le tableau de bord comme tu l'appelles est inutile
il est juste pas pratique et limité si on veut multiplier des combinaisons d'actiions

comme déjà dit il existe des tonnes d'autres facons de faire avec ce qu'il y a déjà sur le mac ou via outils externes
evemements dans ical , scripts Applescript ou scripts Automator
(d'action programmées,, avec sans compte à rebours, délais etc)

j'ai pas 10.8 sous les yeux mais Automator a déjà des scripts et le web regorge d'Applescript de fermeture programmée etc

les applis externes ne sont pas indispensables mais peuvent etre plus pratiques si on ne veut pas s'amuser avec des applescripts ou Automator ou ical

( en gros elles ne ne font rien d'autre que contenir des scripts pré écrits avec une interface pour changer des options)
y en a des brouettes entieres sur l'apstore ( gratuites ou payantes)

Bonjour Pascal,

J'ai essayé Automator, mais je ne vois pas comment réaliser un script de sortie de veille. Peux-tu expliquer la démarche ?

Sinon, le plus simple serait d'utiliser un logiciel, si possible freeware.

Pour l'instant, le seul logiciel que j'ai trouvé, qui se rapproche de mon besoin, est Power Manager, mais il est payant (50 USD, voire 430 USD en version Pro).

As-tu un freeware à me conseiller ?

Merci d'avance.
 
je ne me sus pas penché là dessus pour OS ML
( des choses ont changé par rapport aux anciens OS)

planifier des actions quand le mac est operationel est très facile que ce soit demarer une appli , un script , eteindre le mac mettre en veille etc
la difficulté sous ML est la multiple sortie de veille
 
Bonjour
Je déterre ce vieux topic, car j'aurais le même besoin aujourd'hui.
Depuis le temps, existe-t-il une application qui puisse faire cela facilement?

Merci
 
:coucou: drs

[J'en profite pour saluer l'ami pascalformac :coucou: qui n'intervient plus sur les forums]

Depuis le temps, existe-t-il une application qui puisse faire cela facilement?

Oui : le «Terminal»-
361608_original.png


Suppose que tu veuilles programmer un allumage quotidien de ton Mac à 8H du matin et une extinction du même à 11H du soir > alors tu passes dans le «Terminal» la commande :
Bloc de code:
sudo pmset repeat wakeorpoweron MTWRFSU 08:00:00 shutdown MTWRFSU 23:00:00

En guise d'explication : tu appelles en droits root (sudo) > l'utilitaire pmset (power_management_settings : paramétrage de la gestion d'alimentation) > avec le verbe repeat (produire un événement répété) > et les 2 contenus d'événements à répéter :

  • wakeorpoweron MTWRFSU 08:00:00 --> réveil ou allumage > chaque jour de la semaine (M=Monday, T=Tuesday, W=Wednesday, R=Thursday, F=Friday, S=Saturday, U=Sunday) > à 8H A.M.
  • shutdown MTWRFSU 23:00:00 --> extinction > chaque jour de la semaine > à 11H P.M.

Tu peux faire sauter des mentions de jours dans la série MTWRFSU où je t'ai mis la semaine complète.

Tu fais varier évidemment à ta guise les valeurs horaires (la règle de saisie est : HH:mm:ss sur 24H / 60 mn / 60 sec)

Afin de vérifier rien que le tableau des événements programmés > la commande est :
Bloc de code:
sudo pmset -g sched

Pour supprimer les événements programmés en mode repeat (comme ici) > la commande est :
Bloc de code:
sudo pmset repeat cancel

La programmation d'extinction étant enregistrée en kernel > l'événement d'extinction devrait s'exécuter sans qu'il soit besoin d'un réveil du Mac - mais je n'ai pas opéré ce test et c'est à toi de vérifier si tout opère comme prévu.
 
Dernière édition par un modérateur:
Merci pour ce petit cours de Terminal :)
Cependant, ce que j'aurais voulu, c'est définir des heures d'allumage/extinction différentes selon les jours.
Mais si je rentre les commandes suivantes:
Bloc de code:
sudo pmset repeat wakeorpoweron M 08:00:00 shutdown M 23:00:00
sudo pmset repeat wakeorpoweron T 09:00:00 shutdown T 20:00:00

Seule la dernière ligne est prise en compte. Idem si je rentre:
Bloc de code:
sudo pmset repeat wakeorpoweron M 08:00:00 shutdown M 23:00:00 wakeorpoweron T 09:00:00 shutdown T 20:00:00

Cela donne ceci:
Bloc de code:
sh-3.2# pmset -g sched
Repeating power events:
  wakepoweron at 9:00AM Tuesday
  shutdown at 8:00PM Tuesday

Y'a-t-il un moyen de définir des heures différentes selon les jours?
 
:coucou: drs


Si > après avoir passé une commande repeat programmant 2 événements comme celle-ci :
Bloc de code:
sudo pmset repeat wakeorpoweron M 08:00:00 shutdown M 23:00:00
tu passes une seconde commande repeat programmant 2 nouveaux événements comme celle-là :
Bloc de code:
sudo pmset repeat wakeorpoweron T 09:00:00 shutdown T 20:00:00
=> alors la seconde commande écrase l'inscription de la première --> les commandes repeat ne s'additionnent donc pas (&) > mais se remplacent (∨).

Si > tu passes alors une commande repeat programmant plus de 2 événements > ce qui donne (expérimentalement parlant) ta commande :
Bloc de code:
sudo pmset repeat wakeorpoweron M 08:00:00 shutdown M 23:00:00 wakeorpoweron T 09:00:00 shutdown T 20:00:00
=> alors seule la dernière paire d'événements programmés se trouve enregistrée > en neutralisation de celle qui précède --> seule une paire d'événements de type allumage / extinction est programmée par pmset et pas davantage.

Dans la secteur du manuel de pmset consacrée à la programmation d'événements > il est notifié à ce sujet :
Bloc de code:
SCHEDULED EVENT ARGUMENTS
pmset allows you to schedule system sleep, shutdown, wakeup and/or power
on. "schedule" is for setting up one-time power events, and "repeat" is
for setting up daily/weekly power on and power off events.

Note that you may only have one pair of repeating events scheduled - a "power
on" event and a "power off" event.

Je pense qu'on a affaire, malheureusement, à une limitation du nombre des événements programmables par pmset à une paire unique --> ce qui exclut une programmation plus complexe envisageant de multiples paires (comme : telle paire poweron/shutdown pour le jour M > telle paire poweron/shutdown pour le jour T [etc.]).

Note : tu avais splendidement extrapolé à partir de mon mince aperçu des SCHEDULED EVENT ARGUMENTS de pmset > mais il paraît bien qu'une nécessité [inconnue] limite à la programmation.
 
ah c'est dommage :)
Du coup, cela explique peut être que je ne trouve pas d'application pour le faire, puisque le système ne le permet pas.

Merci de ton aide et de tes explications en tout cas, et bon week end :)
 
Bonjour,

Peut être une piste ! (à creuser)

Un script qui se lancerai à l’allumage.
Ce script récupérerai le jour actuel et exécuterai une commande en fonction du jour.

Cette commande (PMSET) mettrai l’heure de l’extinction du jour et l’heure d’allumage du lendemain.

Il y aurait donc 7 lignes de commande dont le choix se ferait en fonction du jour actuel.

Un problème, la commande demandant une exécution Root donc un Sudo, il faudra entrer le mot de passe à chaque démarrage, sauf si le mot de passe peut être intégré dans la commande, mais là ! je ne connais pas! faudrait voir avec les spécialistes du terminal si le mot de passe peut être intégré à la commande.
 
:coucou: zeltron

Un problème, la commande demandant une exécution Root donc un Sudo, il faudra entrer le mot de passe à chaque démarrage, sauf si le mot de passe peut être intégré dans la commande


Il est possible de se débarrasser de l'exigence de sudo > tout en forçant une exécution automatique de pmset en root. Le procédé consiste à inscrire un SETUID_bit sur le binaire pmset au préalable.

Technique : passer dans le «Terminal» la commande :
Bloc de code:
sudo chmod 4755 /usr/bin/pmset

Si l'on passe ensuite une commande informative :
Bloc de code:
ls -al /usr/bin/pmset
le tableau des permissions retourné sur le binaire pmset est :
Bloc de code:
-rwsr-xr-x  root  wheel
où la triplette des permissions affectées à l'user root est : rws --> r = read (lecture) + w = write (écriture) + s = setuid_bit remplaçant la permission régulière x = execute (exécuter).

Explication : le SETUID_bit est le SET_USER_ID_bit : l'inscription d'une permission spéciale telle que l'identité de l'initiateur de la commande (un utilisateur admin toto par exemple) se trouve substituée par une identité exécutive root de l'opération commandée. Le binaire est donc toujours exécuté en mode root > quelle que soit l'identité de l'initiateur de la commande qui l'appelle.

=> tu peux donc considérer le problème a priori réglable par ce procédé > ce qui permet d'envisager le script que tu as décrit.

[Je m'étais dit qu'un script de cette sorte pourrait faire effectivement le travail > mais comme je n'ai jamais pratiqué la technique du script > j'y suis par conséquent incompétent.]
 
Bonsoir macomaniac :coucou:

Alors voilà vite fait un 1er jet
Ce petit script récupère le jour puis en fonction du jour exécute une ligne dans le terminal.
Pour plus de clarté, je met la ligne à exécuter dans une variable qui à comme nom le nom du jour, puis lance le terminal et exécute la ligne.
Toutes les lignes actuelles coupe le mac à 23h et le rallume le lendemain à 8h (valeurs à changer à convenance)
le script tel quel , ouvre le terminal et attend le mot de passe... il faudra donc faire la commande (sudo chmod 4755 /usr/bin/pmset) avant et modifier les 7 lignes actuelles en supprimant le sudo.
le code: en espérant que cela convienne.

set ladate to (current date) as string -- recupère la date du jour
set lejour to word 1 of ladate -- recupère le jour
if lejour is "lundi" then
tell application "Terminal"
set lundi to " sudo pmset repeat wakeorpoweron T 08:00:00 shutdown M 23:00:00"
do script lundi
end tell
end if
if lejour is "mardi" then
tell application "Terminal"
set mardi to " sudo pmset repeat wakeorpoweron W 08:00:00 shutdown T 23:00:00"
do script mardi
end tell
end if
if lejour is "mercredi" then
tell application "Terminal"
set mercredi to " sudo pmset repeat wakeorpoweron R 08:00:00 shutdown W 23:00:00"
do script mercredi
end tell
end if
if lejour is "jeudi" then
tell application "Terminal"
set jeudi to " sudo pmset repeat wakeorpoweron F 08:00:00 shutdown R 23:00:00"
do script jeudi
end tell
end if
if lejour is "vendredi" then
tell application "Terminal"
set vendredi to " sudo pmset repeat wakeorpoweron S 08:00:00 shutdown F 23:00:00"
do script vendredi
end tell
end if
if lejour is "samedi" then
tell application "Terminal"
set samedi to " sudo pmset repeat wakeorpoweron U 08:00:00 shutdown S 23:00:00"
do script samedi
end tell
end if
if lejour is "dimanche" then
tell application "Terminal"
set dimanche to " sudo pmset repeat wakeorpoweron M 08:00:00 shutdown U 23:00:00"
do script dimanche
end tell
end if
 
Dernière édition:
Ça devrait marcher (pour autant que je puisse en juger).

Dans ta dernière occurrence :
Bloc de code:
set dimanche to "sudo pmset repeat wakeorpoweron S 08:00:00 shutdown F 23:00:00"
je pense qu'il faut éditer les mentions de jours ainsi :
Bloc de code:
set dimanche to "sudo pmset repeat wakeorpoweron M 08:00:00 shutdown U 23:00:00"
pour que l'extinction à 23H s'opère bien en fin de dimanche (U) et le rallumage en début de lundi (M).

=> drs a de quoi (bêta)_tester-
361608_original.png
 
Ok merci pour la remarque du dimanche (Ah le copier coller ! )
C'est édité !
On attend drs
Bonne soirée.
 
J'ajoute un point : je ne sais pas quel OS drs utilise.

Si c'était «El Capitan 10.11» ou «Sierra 10.12» --> alors il faudrait désactiver le SIP avant de passer la commande instaurant le SETUID_bit sur le binaire pmset > parce que le SIP verrouille notamment contre toute modification en écriture la localisation : /usr/bin dans ces OS.

Rappel du procédé : re-démarrer en tenant pressées les touches ⌘R au gong jusqu'à la  = démarrage en mode Recovery > barre de menus supérieure > menu Utilitaires > Terminal > saisir la commande :
Bloc de code:
csrutil disable
et re-démarrer sur l'OS > passer alors seulement la commande sudo chmod 4755 /usr/bin/pmset dans le «Terminal» de l'OS.

Pour ré-activer le SIP --> commande :
Bloc de code:
csrutil enable
dans le «Terminal» du Recovery OS. Ce re-verrouillage ne fait en rien sauter le SETUID_bit sur le binaire pmset.

Note: c'est seulement dans le «Terminal» du Recovery OS que les options du SIP peuvent être manipulées. Dans le «Terminal» de l'OS > il est simplement possible de passer une commande d'information sur l'état du SIP du genre :
Bloc de code:
csrutil status

----------

Une fois l'ajustement ci-dessus opéré > les commandes à saisir dans le script de zeltron sont sans sudo --> exemple pour la première :
Bloc de code:
set lundi to "pmset repeat wakeorpoweron T 08:00:00 shutdown M 23:00:00"

Et, comme chaque ligne de commande journalière instaure une heure d'extinction pour le jour même > et une heure de rallumage pour le jour suivant --> il serait sans doute plus limpide (pour l'esprit qui contemple le script) d'inverser les termes de la paire dans chaque commande (ce qui est entièrement supporté) > exemple pour la 1ère instruction :
Bloc de code:
set lundi to "pmset repeat shutdown M 23:00:00 wakeorpoweron T 08:00:00"

=> ainsi, on aurait sous les yeux les événements programmés dans l'ordre temporel exact de leur exécution.
 
Suite aux remarques de Macomaniac qui apportent beaucoup de clarté, je remet le script modifié, commenté.

-- Script à exécuter au démarrage permet de programmer extinction et allumage suivant
-- Enregistrer ce script comme script à conserver pour modif future et comme application pour le lancer
-- mettre cette application en lancement auto au démarrage
-- avec SIP désactivé il faut désactiver SUDO pour éviter mot de passe --> commande (sudo chmod 4755 /usr/bin/pmset)

set ladate to (current date) as string -- recupère la date du jour
set lejour to word 1 of ladate -- recupère le jour

if lejour is "lundi" then
tell application "Terminal"
set lundi to "pmset repeat shutdown M 23:00:00 wakeorpoweron T 08:00:00"
do script lundi
end tell
end if
if lejour is "mardi" then
tell application "Terminal"
set mardi to "pmset repeat shutdown T 23:00:00 wakeorpoweron W 08:00:00"
do script mardi
end tell
end if
if lejour is "mercredi" then
tell application "Terminal"
set mercredi to "pmset repeat shutdown W 23:00:00 wakeorpoweron R 08:00:00"
do script mercredi
end tell
end if
if lejour is "jeudi" then
tell application "Terminal"
set jeudi to "pmset repeat shutdown R 23:00:00 wakeorpoweron F 08:00:00"
do script jeudi
end tell
end if
if lejour is "vendredi" then
tell application "Terminal"
set vendredi to "pmset repeat shutdown F 23:00:00 wakeorpoweron S 08:00:00"
do script vendredi
end tell
end if
if lejour is "samedi" then
tell application "Terminal"
set samedi to "pmset repeat shutdown S 23:00:00 wakeorpoweron U 08:00:00"
do script samedi
end tell
end if
if lejour is "dimanche" then
tell application "Terminal"
set dimanche to " sudo pmset repeat shutdown U 23:00:00 wakeorpoweron M 08:00:00"
do script dimanche
end tell
end if
 
Et bien les gars, je suis bluffé :)

Je vais donc tester cela, mais j'ai quelques questions avant:
- Le mac est en 10.11.5, je dois donc désactiver le SIP. La question est: quel risque je prends en désactivant le SIP?
- Pour le script, je fais bêtement un copier-coller dans l'éditeur de script, c'est bien ça?
- J'enregistre le fichier au format script ou bien application?
- A quel moment je passe la commande sudo chmod 4755 /usr/bin/pmset? Dans le début du script directement?

En complément, vu que je ne vais pas rester tout le temps devant la machine pour savoir si elle s'allume ou s'éteint bien comme programmé, je peux me faire envoyer un mail/sms par mon serveur de domotique, via une requête web. Je le fais avec une autre machine et cela marche très bien. Pourriez vous seulement me dire à quel endroit dans le script je dois insérer ces lignes, afin d'envoyer la requête après l'allumage et avant l'extinction (je retirerais ce test plus tard, mais c'est déjà pour voir si ça fonctionne bien):

Bloc de code:
tell application "Safari"
    open location "http://192.X.Y.10/Api.php?apikey=xxxxxxxxxxxxxxxx&type=xxxxxxxxxxx&id=xxxxx&action=start"
    delay 5
end tell
tell application "Safari"
    quit
end tell

Un grand merci pour le coup de main :)
 
:coucou: drs

Je te réponds en ce qui concerne mon domaine (ton 1er §) et je laisse à zeltron le soin de répondre concernant le script.

- a) tu démarres par ⌘R en mode Recovery comme décrit > commande :
Bloc de code:
csrutil disable
dans le «Terminal» pour désactiver le SIP.

- b) tu re-démarres sur ton OS > commande :
Bloc de code:
sudo chmod 4755 /usr/bin/pmset
dans le «Terminal» de l'OS [NB. à validation de cette commande préfacée de sudo > une demande de password va s'afficher > tape ton mot-de-passe de session admin à l'aveugle - aucun caractère ne se montrant à la frappe - et valide de nouveau). Tu peux dans la foulée vérifier par un :
Bloc de code:
pmset -g custom
que cette commande passe et t'affiche le tableau de tes paramètres de gestion de l'alimentation (parce que, sans setuid_bit, elle ne s'exécute qu'avec un sudo préalable).

- c) tu peux re-démarrer par ⌘R en mode Recovery comme décrit > commande :
Bloc de code:
csrutil enable
dans le «Terminal» pour réactiver le SIP.​

=> personnellement > je ne laisse jamais le SIP activé > parce que je suis tout le temps en train de manipuler expérimentalement des fichiers du Système > il me faut donc avoir quartier libre pour mes petites opérations.

En ce qui te concerne > tu peux sauter l'étape c) si tu veux > en te disant que si la série des OS X jusqu'à «Yosemite 10.10» compris a pu laisser à root pleine autorité dans l'OS (car le SIP limite l'autorité de root sur une série de dossiers-Système notamment) > on ne voit pas pourquoi ça ne pourrait ni ne devrait pas continuer comme avant. Mais tu peux tout aussi bien ré-activer le SIP après les étapes a) & b) de mon tableau.

Je laisse la parole à zeltron en ce qui concerne son œuvre.
 
Dernière édition par un modérateur: