Bonjour, je remonte ce vieux topic pour apporter une solution au lancement de scripts sous domoticz windows.
Cette solution fonctionne chez moi, sous windows 7 (le meilleur à jamais

) ,peut-être que cela sera différent chez vous.
- J'ai installé domoticz comme une application et non comme un service, car aucun script (ni .bat, ni .vbs, ni .exe) ne fonctionnait en tant que service
- avec les .exe et les .bat il y a un problème > pas d'execution, ou freeze temporaire de domoticz, ou message d'erreur du programme (ça a l'air d'être un probleme de droit administrateur que domoticz n'a pas pour lancer le script)
- MAIS avec les .vbs , ça fonctionne super bien !!!
voici le chemin pour une action:
Contrairement à domoticz pour linux, vous n'etes pas obligé de mettre vos scripts dans le répertoire domoticz, pour peu que vous renseigniez correctement le chemin.
- solution alternative: un script_device_xx.lua qui execute le vbs si l'interrupteur passe à On. Par contre j'ai remarqué un délai de plusieurs secondes avec cette méthode. Là il faudra mettre les lua dans le répertoire \scripts\lua de domoticz.
Code : Tout sélectionner
commandArray = {}
if (devicechanged['Mon Switch'] == 'On' ) then
os.execute ('C:\\chemin\\script.vbs')
end
return commandArray
- si vous voulez lancer un exe 32 bits, votre .vbs doit ressembler à ça:
Code : Tout sélectionner
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\chemin\du\programme.exe"""
- si vous voulez lancer un exe 64 bits, votre .vbs doit ressembler à ça:
Code : Tout sélectionner
If InStr(LCase(WScript.FullName),"syswow64") Then
CreateObject("WScript.Shell").Run """%systemroot%\sysnative\wscript.exe"" """ & WScript.ScriptFullName & """"
WScript.Quit
End If
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.run("""C:\chemin\du\programme.exe""")
Set objShell = Nothing
Si vous préférer lancer le raccourci de l'exe (surtout pour les jeux qui ont quelquefois de paramètres dans le raccourci) remplacer le chemin de l'exe par celui du *.lnk, en faisant bien attention si c'est du 32 ou 64 bits également.
Pour les bat, soit ça marche sur le meme principe, soit il suffit simplement de convertir votre bat en exe avec le petit utilitaire bat2exe
- si vous voulez lancer une requete http par vbs:
Code : Tout sélectionner
dim xHttp: Set xHttp = createobject("MSXML2.ServerXMLHTTP")
xHttp.Open "GET", "http://votre/URL", False
' 2 stands for SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS
' 13056 means ignore all server side cert error
xHttp.setOption 2, 13056
xHttp.Send
' read response body
' WScript.Echo xHttp.responseBody
Au cas ou, n'oubliez pas d'autoriser C:\Windows\System32\cscript.exe, C:\Windows\System32\wscript.exe et C:\Windows\Syswow64\wscript.exe
dans votre pare-feu
Voilà, j'espère que ça vous aidera !