Page 2 sur 3

Re: Gestion du lastseen

Publié : 26 août 2019, 15:24
par pipiche
Pour aller plus en détail:

Le lastseen est mis à jour par le plugin, mais cela sans déclancher une mise-à-jour du lastupdate (qui lui n'est visible que de Domoticz en runtime).

Le lastseen est mis-à-jour lors des echanges entre le device/zigate/plugin. Par contre si cela ne modifie pas le statut de la widget dans Domoticz, seul le lastseen et mis-à-jour. Pourquoi ? Pour éviter de declancher trop d'événements coté Domoticz

Re: Gestion du lastseen

Publié : 26 août 2019, 15:33
par Wolfen38
pipiche a écrit :Pour aller plus en détail:

Le lastseen est mis à jour par le plugin, mais cela sans déclancher une mise-à-jour du lastupdate (qui lui n'est visible que de Domoticz en runtime).

Le lastseen est mis-à-jour lors des echanges entre le device/zigate/plugin. Par contre si cela ne modifie pas le statut de la widget dans Domoticz, seul le lastseen et mis-à-jour. Pourquoi ? Pour éviter de declancher trop d'événements coté Domoticz
Et on ne peut pas récupérer cette valeur ? Car dans la console c'est bien ce paramètre qui est analysé pour la santé des devices ?

Envoyé de mon Mi A1 en utilisant Tapatalk


Re: Gestion du lastseen

Publié : 26 août 2019, 15:41
par pipiche
Wolfen38 a écrit : 26 août 2019, 15:33
pipiche a écrit :Pour aller plus en détail:

Le lastseen est mis à jour par le plugin, mais cela sans déclancher une mise-à-jour du lastupdate (qui lui n'est visible que de Domoticz en runtime).

Le lastseen est mis-à-jour lors des echanges entre le device/zigate/plugin. Par contre si cela ne modifie pas le statut de la widget dans Domoticz, seul le lastseen et mis-à-jour. Pourquoi ? Pour éviter de declancher trop d'événements coté Domoticz
Et on ne peut pas récupérer cette valeur ? Car dans la console c'est bien ce paramètre qui est analysé pour la santé des devices ?

Envoyé de mon Mi A1 en utilisant Tapatalk
Regarde le post que j'ai mis en référence. Je crois que @benp a fournie le script qui va bien

Re: Gestion du lastseen

Publié : 26 août 2019, 15:51
par Wolfen38
J'ai essayé, mais j'ai des erreurs tout de suite, que je ne comprends pas, il me dit qu'il manque une } alors qu'elle y est....

Re: Gestion du lastseen

Publié : 26 août 2019, 17:58
par pipiche
Wolfen38 a écrit : 26 août 2019, 15:51 J'ai essayé, mais j'ai des erreurs tout de suite, que je ne comprends pas, il me dit qu'il manque une } alors qu'elle y est....
pose la question sur le post en question, peut-etre que @benp y répondra

Re: Gestion du lastseen

Publié : 01 nov. 2020, 22:45
par Paquito
Bonjour,

Voici un petit script dzvents, que j'ai créé à partir du script de Benp,
viewtopic.php?f=28&t=8251&start=80#p69239
pour surveiller le last seen de mes capteurs.

Je le partage au cas où, il pourrait servir à quelqu'un.

Code : Tout sélectionner

local devicesToCheck = {
    { ['name'] = 'Door Sensor ENOCEAN', ['DeviceIdx'] = 5 },  			-- add you device list here. First line is an example from my Domoticz.
	{ ['name'] = 'Device name 2', ['DeviceIdx'] = Idx2 },				-- find you devices IDx in Domoticz/Setup/Devices
	{ ['name'] = 'Device name 3', ['DeviceIdx'] = Idx3 },
	{ ['name'] = 'Device name 4', ['DeviceIdx'] = Idx4 },
	{ ['name'] = 'Device name 5', ['DeviceIdx'] = Idx5 },
	{ ['name'] = 'Device name 6', ['DeviceIdx'] = Idx6 }				-- last line does not have a "," ;)
}


return 
{
	on = {
     timer = {'at 11:50'},				-- choose how often you want to check if devices are alive. I check it once a day at 11:50
     httpResponses = {'lastUP' }
	},
	
    execute = function(domoticz, item)
		print('trigger:' .. tostring(item.isTimer) .. '/' .. tostring(item.isHTTPResponse))
		
		for i, deviceToCheck in pairs(devicesToCheck) do
			local name = deviceToCheck['name']
			local DeviceIdx = deviceToCheck['DeviceIdx']


            if (item.isTimer) then
                domoticz.openURL({
                    url = 'http://127.0.0.1:8080/json.htm?type=devices&rid='..DeviceIdx..'',
                    method = 'GET',
                    callback = 'lastUP'
                })
            end
        end

            if (item.isHTTPResponse and item.ok) then
                local Time = require('Time')
                local results = item.json.result
                
                 for i, node in pairs(results) do
                    -- convert the time stamp in the raw data into a
                    -- dzVents Time object
                    local lastUpdate = Time(node.LastUpdate)
                    print(node.Name)
                    print('Hours ago: ' .. lastUpdate.hoursAgo)
                
                    if(lastUpdate.hoursAgo > 4) then  	-- Set the threshold to consider the device timed-out, adn choose what you want to do if the device is timed-out. 
                        local message = ""				-- I sent a SMS to my phone using free-mobile SMS notifications feature.
                        message = message .. 'Device ' .. node.Name .. ' seems to be timed-out. Last seen: ' .. lastUpdate.hoursAgo ..' hours ago.'
                        domoticz.openURL('https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=xxxxxxxxxxxxxx&msg= ' .. message .. ' ')
                    end           
                end                   
            end
    end
}

Re: Gestion du lastseen

Publié : 02 nov. 2020, 10:06
par Deufo
A tout hasard, je partage mon script qui est sur le wiki :

https://github.com/pipiche38/Domoticz-Z ... evices.lua

C'est un vieux post, Wolfen38 l'utilise depuis.

Re: Gestion du lastseen

Publié : 02 nov. 2020, 10:46
par pipiche
super sympa, merci

Tu peux aussi le mettre en Contrib ici: https://github.com/pipiche38/Domoticz-Z ... er/Contrib

Re: Gestion du lastseen

Publié : 02 nov. 2020, 10:55
par Wolfen38
Oui il va nickel, ça évite les mauvaises surprises ou de devoir checker régulièrement l'état des devices.

Envoyé de mon Mi 9T Pro en utilisant Tapatalk


Re: Gestion du lastseen

Publié : 14 nov. 2020, 00:03
par Paquito
Bonjour,

Dsl pour la réponse tardive. J'étais absent pendant quelques jours.

@Pipiche:
Ok je vais le mettre dans Contrib.

@Deufo:
Si c’est ok pour toi, je vais mettre dans les commentaires le lien vers ton script, car il est bien plus complet que le mien.
Juste pour éviter la confusion d'avoir deux scripts qui font la même chose dans Contrib.

@Pipiche:
J'ai un autre bout de code pour déclencher une action en cas de batterie faible.
C'est un script très simple mais ça pourrait peut-être servir à quelqu’un.
Si c'est ok pour toi je peux le mettre aussi dans Contrib.

Code : Tout sélectionner

-- This dzvents script is intended to trigger an action in case of low battery device.

local devicesToCheck = {
    { ['name'] = 'Device_name_1', ['threshold'] = 15 },  -- add you device list here, and the battery level to trigger a warning.
    { ['name'] = 'Device_name_2', ['threshold'] = 15 },
    { ['name'] = 'Device_name_3', ['threshold'] = 15 },
    { ['name'] = 'Device_name_4', ['threshold'] = 15 },
    { ['name'] = 'Device_name_5', ['threshold'] = 15 },
    { ['name'] = 'Device_name_6', ['threshold'] = 15 }
}

return {
	active = true,
	on = {
		['timer'] = {
			'at 12:15 on sun'		-- Choose how often you want to check device's battery level. I check it once a week at 12:15
		}
	},
	execute = function(domoticz)

		local message = ""

		for i, deviceToCheck in pairs(devicesToCheck) do
			local name = deviceToCheck['name']
			local threshold = deviceToCheck['threshold']
			local bat_level = domoticz.devices(name).batteryLevel
            print('Device: ' .. name .. ' Battery Level: ' ..bat_level)

			if ( bat_level < threshold) then
				message = message .. 'Device ' .. name .. ' is low  battery. Battery level is ' .. bat_level .. ' %. '
			end
		end

		if (message ~= "") then    	-- Write here what you want to do if a device has a battery level below threshold.
		    local urlmsg = ""		-- I send a SMS to my phone using free-mobile SMS notifications feature.
		    urlmsg = 'https://smsapi.free-mobile.fr/sendmsg?user=XXXXXXXX&pass=xxxxxxxxxxxxxx&msg= ' .. message .. ' '
			domoticz.log('Low battery devices found: ' .. message, domoticz.LOG_ERROR)
			domoticz.openURL(urlmsg)
		end
	end
}