Restart Domoticz

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
DaX
Messages : 59
Inscription : 07 mars 2020, 16:02
Localisation : Dans ch'nord

Restart Domoticz

Message 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
alasta
Messages : 2
Inscription : 14 avr. 2020, 15:00

Re: Restart Domoticz

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

@++
Dernière modification par alasta le 16 avr. 2020, 15:17, modifié 1 fois.
DaX
Messages : 59
Inscription : 07 mars 2020, 16:02
Localisation : Dans ch'nord

Re: Restart Domoticz

Message 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.
DaX
Messages : 59
Inscription : 07 mars 2020, 16:02
Localisation : Dans ch'nord

Re: Restart Domoticz

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Restart Domoticz

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

Image
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Restart Domoticz

Message 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
Capture.PNG (7.24 Kio) Consulté 5448 fois
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
didier3164
Messages : 15
Inscription : 02 nov. 2018, 11:28

Re: Restart Domoticz

Message 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.
DaX
Messages : 59
Inscription : 07 mars 2020, 16:02
Localisation : Dans ch'nord

Re: Restart Domoticz

Message 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.
didier3164
Messages : 15
Inscription : 02 nov. 2018, 11:28

Re: Restart Domoticz

Message 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.
Dernière modification par didier3164 le 21 avr. 2020, 19:09, modifié 3 fois.
DaX
Messages : 59
Inscription : 07 mars 2020, 16:02
Localisation : Dans ch'nord

Re: Restart Domoticz

Message 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.
Répondre