Page 1 sur 2
Restart Domoticz
Publié : 15 avr. 2020, 10:59
par DaX
Bonjour à tous,
je voudrais savoir si il est possible de créer un script pour redémarrer Domoticz en fonction d'une condition.
Par exemple, de temps en temps, les infos de mon zigbee2mqtt ne remontent pas sous domoticz, un simple redémarrage du système via la commande "sudo service domoticz.sh restart" via putty et ça repart.
Je voulais donc savoir si il était possible de créer un script qui dirait : Si tel et tel capteur sans retour depuis x minutes alors restart.
Autre soucis, je perds souvent la connexion avec mon thermostat Netatmo. Une simple désactivation/réactivation dans la partie "matériel" sert à retrouver la connexion et mes infos remontent correctement. On peut aussi faire un script pour désactiver/réactivter si pas d'infos pendant x min aussi ?
J'ai cherché sur le forum et trouvé cela :
https://easydomoticz.com/forum/viewtopi ... =10&t=7793
Je ne m'y connais malheureusement que près peu sous Linux et ne comprends ce qu'il faudrait faire.
Merci pour vos infos.
DaX
Re: Restart Domoticz
Publié : 15 avr. 2020, 13:58
par alasta
Bonjour,
oui possible je pense, il faut checker en local :
curl -X GET '
http://127.0.0.1:8080/json.htm?type=dev ... dispositif_'
Il faut remplacer l'IDX du dispositif, je pense qu'en regardant le champ LastUpdate, tu devrais pouvoir faire quelque chose.
En revanche je trouve cela dangereux dans le sens ou tu risques d'avoir une boucle infinie de reboot, si tu supprimes le device, ou il ne répond plus .... il faut bien le gérer surtout en cas d'allumage du domoticz après X temps d'arrêt.
En espérant que cela t'aide.
@++
Re: Restart Domoticz
Publié : 16 avr. 2020, 10:30
par DaX
Merci pour l'info.
Je n'ai pas encore mis le nez dans le LUA ni dans les requêtes json, j'vais essayer quand j'aurai un peu de temps.
Merci encore.
Re: Restart Domoticz
Publié : 19 avr. 2020, 21:04
par DaX
Juste pour la partie redémarrage de netatmo, c'est possible de scripter pour dire :
Si pas de changement pendant 30min, arrêtez puis démarrer le "Matériel" ?
J'ai essayé de regarder le LUA et c'est pas facile au premier regard, d'autres solutions plus easy ?
Merci
Re: Restart Domoticz
Publié : 19 avr. 2020, 22:59
par vil1driver
Salut,
Je ne connais pas ce matériel et n'ai pas de quoi tester,
Mais lors de sa mise en place n'y a-t-il pas comme pour beaucoup d'autres un champ 'delai d' inactivité' ?
Il sert à cela..

Re: Restart Domoticz
Publié : 19 avr. 2020, 23:08
par Chrominator
Très bien vu.
Il y en a un en effet, que j'ai réglé à 30 mn.
Pour la petite histoire, ça relance bien le worker mais ça ne provoque pas forcément la mise à jour.
API déficiente chez Netatmo ou programmation de moyenne qualité dans Domoticz ?
Je ne saurais le dire.

- Capture.PNG (7.24 Kio) Consulté 5456 fois
Re: Restart Domoticz
Publié : 19 avr. 2020, 23:27
par didier3164
Bonsoir
Pour que tu puisses te lancer dans le développement, il faut tout d'abord créer une application sur ton compte Netatmo.
https://dev.netatmo.com/apps
Ça te donnera un numéro de client et une clé secrète.
Si tu es intéressé j'ai fait plusieurs scripts avec dzvents pour connecter mon thermostat et mes vannes Netatmo et accessoirement récupérer les données météo des stations Netatmo à proximité.
Je trouve quand même que depuis que Netatmo a été racheté par Legrand, il y a beaucoup de problème de connexion.
Re: Restart Domoticz
Publié : 20 avr. 2020, 10:46
par DaX
Merci @vil1driver pour l'info et je confirme ce que dit Chrominator, il y a bien ce réglage que j'ai aussi mis à 30min, on verra ce que ça donne.
@didier3164, oui, je me posais justement la question pour récupérer les infos des personnes autour de mon domicile et qui ont les stations météo donc si tu as quelques petits trucs, je suis preneur. Je n'ai pas de vanne Netatmo pour l'instant et mon thermostat a été ajouté à Domoticz juste pour avoir la température et le retour d'état sur la commande de chauffage de la chaudière.
Re: Restart Domoticz
Publié : 20 avr. 2020, 18:42
par didier3164
Bonjour,
Pour plus de clarté, j'ai découpé le script en plusieurs scripts.
Les variables ci-après sont définies dans le module Global_Data.lua
- dz.globalData.refresh_token
- dz.globalData.access_token
- dz.globalData.refresh_time
Il faut initialiser le token au premier lancement du script avec l'interrupteur.
L'obtention du Token
Code : Tout sélectionner
------------------------------------------------------------------------
-- ELEMENTS D'AUTHENTIFICATION
------------------------------------------------------------------------
local client_id = 'xxxxxxxxxx'
local client_secret = 'xxxxxxxxxx'
local username = 'xxxxxxxxxx'
local password = 'xxxxxx'
local scope = 'read_thermostat write_thermostat read_camera read_station'
------------------------------------------------------------------------
local reset_idx = 176 -- Interrupteur pour initialiser le token
return {
active = true,
logging = {
-- level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_INFO,
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_DEBUG,
level = domoticz.LOG_MODULE_EXEC_INFO,
marker = 'Netatmo Token'
},
on = {
devices = {reset_idx},
httpResponses = {'Netatmo_getToken'}
},
execute = function(dz, item)
if (item.isDevice) then
-- Initialisation du token
dz.openURL({
url = 'https://api.netatmo.com/oauth2/token',
method = 'POST',
callback = 'Netatmo_getToken',
headers = { ['Content-Type']='application/x-www-form-urlencoded' },
postData = 'grant_type=password&username='..username
..'&password='..password
..'&client_id='..client_id
..'&client_secret='..client_secret
..'&scope='..scope
})
elseif (item.isHTTPResponse) then
if (item.ok) then
if (item.isJSON) then
if (item.callback == 'Netatmo_getToken') then
dz.globalData.refresh_token = item.json.refresh_token
dz.globalData.access_token = item.json.access_token
dz.globalData.refresh_time = os.date("%H:%M")
dz.globalData.expire_in = item.json.expire_in
-- Refresh du token
dz.openURL({
url = 'https://api.netatmo.com/oauth2/token',
method = 'POST',
callback = 'Netatmo_getToken',
headers = { ['Content-Type']='application/x-www-form-urlencoded' },
postData = 'grant_type=refresh_token&refresh_token='..dz.globalData.refresh_token
..'&client_id='..client_id
..'&client_secret='..client_secret
}).afterSec(item.json.expire_in)
end
end
end
end
end
}
Je modifie le script pour la lecture des données météo pour qu'il soit plus compréhensible et je le posterais en suivant.
Re: Restart Domoticz
Publié : 20 avr. 2020, 21:24
par DaX
Merci, je maîtrise pas encore le LUA mais je vais m'intéresser à ça.
Pour info, le fait de mettre le délai d'inactivité à 30min fonctionne parfaitement.
Dans mes logs, je peux même voir que depuis ce matin, la connexion à Netatmo a été perdu 4 fois ...
Code : Tout sélectionner
2020-04-20 11:10:33.867 Error: Thermostat hardware (3) nothing received for more than 30 Minutes!....
2020-04-20 11:10:34.867 Error: Restarting: Thermostat
2020-04-20 14:31:00.301 Error: Thermostat hardware (3) nothing received for more than 30 Minutes!....
2020-04-20 14:31:01.302 Error: Restarting: Thermostat
2020-04-20 17:51:21.937 Error: Thermostat hardware (3) nothing received for more than 30 Minutes!....
2020-04-20 17:51:22.938 Error: Restarting: Thermostat
2020-04-20 21:11:53.445 Error: Thermostat hardware (3) nothing received for more than 30 Minutes!....
2020-04-20 21:11:54.446 Error: Restarting: Thermostat
Tous les 3h20 en fait ... (3h peut être en comptant l'inactivité), peut être une volonté de Netatmo.