Toujours à la découverte de Domoticz sous Windows voyons ici comme ajouter un script Powershell (ps1) dans le planificateur de tâches Windows pour en assurer l’exécution à intervalles réguliers.
Les script Powershell et le lanceur associé.
Nous avions vu dans un épisode précédent que pour permettre facilement de lancer un PS j’utilise un fichier en .bat du même nom qui contient tout ce qui faut pour que le PS se lance.
Exemple de fichier bat :
Powershell.exe -WindowStyle hidden -nologo -executionpolicy remotesigned -Command "& 'C:\Program Files (x86)\Domoticz\scripts\powershell\Backup_Domoticz.ps1'"
C’est ce fichier bat qu’il faudra lancer via le planificateur.
Le planificateur.
Sachez que il faudra un compte d’administrateur possédant un mot de passe (les password vide ne sont pas acceptés par défaut)
Dans le panneau de configuration et dans les outils d’administration vous trouvez le planificateur de tâches.
Utilisez le menu à droite « Créer une tâche ».
Dans l’onglet Général
En :
- 1 Nommons la tâche
- 2 Autorisons nous à lancer le script même si il n’y à pas de session ouverte
- 3 Donnons les droits maximaux à l’exécution du script .
Validons par « OK » puis dans l’écran qui suit :
- Choisissiez tout en haut dans « Lancer la tâche » le « A l’heure programmée » (1) puis la bonne fréquence (Une seule fois, Jour, Semaine , Mois).
- Pour lancer la tâche toutes les X minutes chosissez « Chaque Jour » (2)
- Répétez la tâche toutes les 5 minutes (1,4…) et « Indéfiniment » (3)
- Éventuellement donnez une date de fin.
Validez puis allons dans l’onglet « Actions » (1)
- Choisir « Démarrer un programme » vu que le reste est « déconseillé » ! (2)
- Utiliser le bouton « Parcourir » pour aller chercher le script en .bat à lancer (3)
- Validez et
- Rendez vous dans l’écran des « Paramètres » (1)
- Cochez « Exécuter la tâche des que …. (2)
- Décochez « Arrêter la tâche si elle s’exécute …. » (3) sinon ….
Validez tout ça
Windows vous demande de vous identifier avec votre mot de passe d’un compte administrateur.
Les mots de passe vide ne sont pas autorisés par défaut (sauf modifs dans la base de registre pour autoriser cela)
N.B Dans les actions on peut aussi indiquer comme ci-dessous :
Powershell.exe dans le programme à lancer et tous les paramètres qui sont dans le fichier en.bat sont passés dans les arguments y compris le chemin complet vers le fichier ps1.
-WindowStyle hidden -nologo -executionpolicy remotesigned -Command "& 'C:\Program Files (x86)\Domoticz\scripts\powershell\Backup_Domoticz.ps1'"
Opération réussie !
Bonjour,
J’essaie de faire parler domoticz avec les powershell.
Ce powershell qui marche très bien, exécuté en fenetre dos, ne marche pas lancé de domoticz. Savez-vous pourquoi ?
(New-Object –ComObject SAPI.SPVoice).Speak(“Bonjour”)
Bonjour
Je n’ai pas trouvé le moyen de lancer une commande powershell autrement que dans un .bat
et comme le précise l’article en question
Bonjour Patrice,
J’avais bien compris et mon commentaire était bien dans ce contexte: Domoticz lance un .bat qui lance le .ps1 de la synthèse vocale. Mais cela ne marche pas. (Alors que le dos lançant le .bat lancant le .ps1 marche.)
Savez-vous pourquoi ? (Ou comment faire parler domoticz?)
merci d’avance,
Bonsoir
Ah ok tu n’avais pas précisé que cela fonctionait depuis le .bat
Tu as mis ce script dans quoi exactement ?
Dans un action on/off fais gaffe à la syntaxe :
J’ai simplifié et cela ne marche toujours pas. Un action ON lance un .bat qui contient 2 lignes :
test.bat crée un fichier avec un echo xx>1
bala.exe est un petit programme de synthèse vocale, en ligne de commande que l’on trouve ici :
http://www.cross-plus-a.com/bconsole.htm
Résultat : Le fichier se crée bien ! mais pas de son …
Et toujours, si je lance le .bat d’une fenetre DOS, ca marche bien.
Quelqu’un a-t-il déjà réussi à lancer un .exe ?
Ah j’ai compris en essayant balabolka
J’ai fait un .bat qui contient
c:\temp\test\bala.exe -t « bonjour »
que je lance par un action on
et en effet la fenêtre s’ouvre puis se referme aussitôt , ne laissant pas le temps à la commande de s’exécuter
en ajoutant un start /wait comme cela
start /wait c:\temp\test\bala.exe -t « bonjour »
ca roule
PS il faut le chemin complet vers balabloka console
Cela ne marche pas pour moi. D’ailleurs il n’y a pas de fenêtre qui s’ouvre. Tu as installé Domoticz comme une application windows ?
Le mien fonctionne en service Windows. C’est peut-être l’explication.
J’ai installé en tant qu’appli Windows je ne vois pas l’impact qu’aurais le fonctionnement en tant que service puisque avec un peu de chance le service tourne avec les droits maximaux d’administrateur
A toute fin utile la syntaxe dans le action est bien
script://c:\temp\test\parle.bat ??? qui contient le start /wait évoqué ci dessus
oui, pas de doute côté syntaxe des chemins.
Je crains vraiment que ce soit mort, car je viens de lire qu’un service windows (depuis XP) n’a pas le droit d’interagir avec le desktop (ni affichage GUI , ni son). C’est logique, c’est fait pour fonctionner en multi User et même lorsqu’il n’y a pas de user loggé. Il ne saurait pas avec quel utilisateur interagir…
Du coup, tout programme que Domoticz en service windows lancerait ne peut avoir ni affichage ni son. Voilà donc une vrai différence entre Domoticz as an application ou as a service !
Oui en effet pour le service
il me semble que L’interface web doit agir avec le service et donc si tu a un script dans un action on et que tu cliques sur le switche en question comme tu est devant une interface web le son peut sortir sur cette interface
Mais peut être me trompe-je
Toutefois dans les services il y a une option dans l’onglet « connexion » qui est « interagir avec le bureau » a ta place j’essaierai