Domoticz et Windows : Les scripts powershell, partie 1

Parent pauvre de ce blog : Windows™.

Bien qu’il ne me semble pas écologiquement responsable de faire tourner un PC 24/24 7/7 pour ouvrir et fermer quelques volets roulants, je vous laisse la responsabilité de votre choix, et je vous tiens personnellement responsable de l’augmentation de température terrestre.

rech_clim

 

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.

 

Domoticz sous Windows

L’installation par défaut de Domoticz s’est faite dans le dossier C:\Program Files (x86)\Domoticz.

Comme sur le Raspberry il existe un dossier nommé « scripts » destiné à recevoir nos scripts.

Pour structurer au mieux , je vous propose de créer dans ce dossier scripts un nouveau dossier nommé « powershell » qui recevra nos réalisations.

Powershell, trop long à écrire, sera ici abrégé en PS.

 Quels outils utiliser ?

Le simple bloc note de  Windows suffit, toutefois je ne peux que vous encourager à utiliser l’outil intégré à Windows : Powershell ISE.

Présent  sous Windows 7 (recherchez dans les Accessoires), il à curieusement disparu des menus Windows 8 mais il suffira de créer un raccourci sur le bureau de powershell_ise.exe qui se trouve dans  C:\Windows\System32\WindowsPowerShell\v1.0

C’est un outil  plutôt bien pensé et pratique (copier/coller, débogage, command browser, tabs multiples…).

Powershell ISE en 2 images

Voici à quoi ressemble PS_ISE, :

  • 1 zone pour écrire nos scripts,
  • la partie bleue en bas affiche le résultat du script,
  • la partie de droite est une vraie aide pour la rédaction de scripts car souvent un assistant nous guide pour l’écriture de l’instruction choisie.

ps_ise_1

Le script est lancé par un clic sur la flèche verte du haut, les erreurs sont affichées en rouge en bas.

ps_ise_error

Premier script

 

Je vous propose de faire un script qui copie tous les dossiers de Domoticz dans un autre emplacement afin de réaliser une sauvegarde de nos fichiers.

Notre ami Google nous indique que une des commandes de copie de fichiers en Powershell est Copy-Item et comme je souhaite prendre tous les sous dossiers de Domoticz il faudra une copie récursive de  C:\Program Files (x86)\Domoticz que l’on obtient en Powershell par -recurse.

Je recopie tout cela dans c:\Backup_Domoticz

Donc un :

Copy-Item 'C:\Program Files (x86)\Domoticz\' c:\Backup_Domoticz -Recurse -force

devrait nous emmener pas loin du but. (le -force « force »  l’écrasement des fichiers anciens existant déjà).

Dans PS_ISE je copie cette ligne , puis j’enregistre mon fichier en backup.ps1 dans C:\Program Files (x86)\Domoticz\scripts\powershell.

N.B L’extension en .ps1 permet à Windows de reconnaitre qu’il s’agit de scripts Powershell.

L’exécution des scripts

Dans ISE.

Un clic sur la flèche verte lance le script dont le résultat d’affiche en bas.

Avec l’explorateur Windows

Allez dans le dossier de nos scripts puis par un clic droit sur le fichier backup.ps1, choisissons et exécutons notre fichier avec PS.

ps_exec

Bien, mais on voit quelques instants une fenêtre PS s’ouvrir puis disparaitre sans voir ce qui ce passe.

Afin d’avoir plus de contrôle, ouvrons une invite de commande (on ne dit plus « une fenêtre DOS », ça fait trop vieux) puis .

Tapons y

powershell

ps_ps

Puis rendons nous dans C:\Program Files (x86)\Domoticz. par un

cd C:\Program Files (x86)\Domoticz\scripts\powershell

pour lancer notre Backup_Domoticz.ps1

A Savoir : La touche TAB permet de compléter automatiquement nos saisies (les Linuxiens apprécieront 😛 ). Ainsi en tapant c:\Pro puis en appuyant plusieurs fois  surr la touche TAB on fait défiler jusqu’à obtenir Program Files (x86), on met un \D puis TAB , etc, etc.

Au final on a donc :

& 'C:\Program Files (x86)\Domoticz\scripts\powershell\backup.ps1'

(le symbole & et tous les ‘ se sont placés tous seuls pour préserver les espaces dans le chemin du fichier)

que l’on valide par entrée

Une jolie fenêtre va s’ouvrir pour vous indiquer que les scripts ne sont pas autorisés au lancement.

Le déblocage définitif des scripts se fait par :

 Set-ExecutionPolicy RemoteSigned

Un lancement de notre backup nous recopie tout les sous dossiers du répertoire d’origine vers notre destination.

Cool; mais

ATTENTION

Sous des Windows™ 7/8/10 la base de données se trouve dans C:\ProgramData\Domoticz.

Modifions notre script powershell pour enregistrer notre base dans le backup

Copy-Item 'C:\Program Files (x86)\Domoticz\' c:\Backup_Domoticz -Recurse -force
Copy-item C:\ProgramData\Domoticz\domoticz.db c:\Backup_Domoticz\domoticz.db

 

D’ici à un prochain article, créez vos scripts PS, testez les au sein de PS_ISE, par le clic droit, mais aussi vérifiez qu’ils fonctionnent depuis une ligne de commande en mode powershell (tapez powershell après l’ouverture de la fenêtre DOS comme nous avons vu juste au dessus).

 

La prochaine fois nous verrons comment lier un script Powershell à un ACTION ON/ACTION OFF de Domoticz.

D’ici là, munissez vous d’ Aspirine(s),

Résultat de recherche d'images pour "aspirine formule"

de relaxants,

 

Résultat de recherche d'images pour "relaxant"

apprenez la  méditation,

Résultat de recherche d'images pour "meditation"

parce que, je vous le dis en connaissance de cause, ça va faire mal au crane.

Résultat de recherche d'images pour "aie"

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