Domoticz et Windows : Les scripts powershell, partie 2

Les utilisateurs de Domoticz sous Windows seront sans doute heureux (?) de trouver ici quelques articles concernant l’écriture de scripts sous Windows™.

Partant de l’idée que vous êtes nombreux à utiliser des Windows 7/8/9/10 je vais utiliser le langage Powershell qui est présent pour ces versions.

Les Vieux XP installeront les Powershell 2 comme expliqué ici http://syskb.com/comment-installer-et-executer-powershell-sur-un-systeme-windows/

Il ne s’agit pas ici de faire un cours de powershell mais de découvrir quelques fonctions utiles au travers d’exemples pratiques.

Bon c’est ici que ça va se compliquer un peu, non pas pour la rédaction des scripts Powershell dont la doc est dispo partout sur Internet , mais pour autoriser le lancement de ces scripts par Domoticz.

La méthode décrite ici est purement empiriquement issue de mes tests, succès, échecs.

Je suis à l’écoute de toutes vos remarques sur la technique en question.

Objectif

Pouvoir lancer un script Powershell via des action On/Action Off d’un interrupteur virtuel.

Création d’interrupteurs virtuels

Depuis le menu « Réglages » et « Matériel » ajouter le matériel virtuel, littérature ici. et en l’occurrence nous aurons juste besoin d’un interrupteur pour lancer notre script manuellement par un clic (ou de le programmer à intervalles régulier via le planning du bouton).

Affectation d’un script à un Action On/off

Un billet récent en expliquait la technique , info ici https://easydomoticz.com/domoticz-et-windows-scripts_et_action_on_action_off/

Il faut utiliser script://scripts\powershell\Backup_Domoticz.ps1

La commande Domoticz est script:// puis on indique le chemin vers le fichier batch, les dossiers sont séparés par des antislashes.

l tendance naturelle serait de mettre script://scripts\powershell\Backup_Domoticz.ps1

ps_script_domoticz

Ceci ne fonctionne pas.

On voit effectivement une fenêtre Powershell s’ouvrir puis un message d’erreur qui s’affiche nous informe (ça dure 1/4 de seconde) qu’ il y a une erreur dans le chemin du fichier. En effet powershell va chercher le fichier Backup_Domoticz.ps1 dans C:\Program Files (x86)\Domoticz et comme il y a une espace dans le nom du dossier , ca coince.

Le remède

après moult tests, la solution miracle fut de créer un .bat qui appelle le .ps1

Le contenu du fichier .bat lanceur est le suivant :

Powershell.exe -WindowStyle hidden  -nologo -executionpolicy remotesigned -Command "& 'C:\Program Files (x86)\Domoticz\scripts\powershell\Backup_Domoticz.ps1'"

On appelle Powershell en lui donnant le droit d’exécution de scripts et on lance la commande vers  C:\Program Files (x86)\Domoticz\scripts\powershell\Backup_Domoticz.ps1 en utilisant l’esperluette (j’adore) pour échapper les caractères espace.

Vous remarquerez que j’en ai profité pour essayer de masquer la fenêtre Powershell qui s’affiche systématiquement  par un nologo et WindowsStyle hidden mais sans succès, si vous savez pourquoi n’hésitez pas!

Je mets tous ça dans un fichier Backup_Domoticz.bat puis dans mon interrupteur je lance

ps_script_domoticz3

Conclusion

Quoique fastidieuse , la technique d’avoir systématiquement deux fichiers (un lanceur .bat et le script .ps1 lui même) permet vraiment d’apporter un plus à nos (vos)  install Domoticz sous Windows et d’atteindre un niveau de scripting qui est équivalent à celui du Raspberry.

Une bonne solution donc à adopter

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz, scripts, windows and tagged , , , .