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
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
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