Aller au contenu

Recommended Posts

domo, désolé je viens de me rendre compte que je ne t'avais jamais répondu....

 

 

Entre temps, depuis que j'ai un Fibaro Button, le module virtuel plantait, car celui-ci ne déclenche plus de triggers, mais des Central Scenes, et donc le retour JSON de l'API events est différent.

J'en avait parlé sur un autre topic.

 

Je me suis aussi rendu compte que le VD plantait si un module ne se trouvait dans aucune pièce (c'est peut être ton problème domo).

 

Voici mon code qui fonctionne chez moi :

-- Last modification : September 2016 by Lazer

local excluded_id = {}    -- Comma separated list of ID to exclude
local max_events = 500    -- Maximum number of events to fetch
local max_labels = 10     -- Number of labels in virtual device
local debug = false       -- debug

local today = os.date("%d/%m/%Y")
local selfID = fibaro:getSelfId()
local j = 0

local HC2 = Net.FHttp("127.0.0.1", 11111)
local response, status, errorCode = HC2:GET("/api/panels/event?last="..max_events.."&type=id")

if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then

	local t = json.decode(response)
	for i = 1, max_events do

		local exclude = false
		for k = 1, #excluded_id do
			if excluded_id[k] == t[i].deviceID then
				exclude = true
				break
			end
		end

		if (t[i].deviceType == "com.fibaro.temperatureSensor") or
			(t[i].deviceType == "com.fibaro.humiditySensor") or
			(t[i].deviceType == "com.fibaro.lightSensor") or
			(t[i].deviceType == "com.fibaro.multilevelSensor") or
			exclude == true
		then
			if debug then
				fibaro:debug(i.." => Exclude")
			end
		else
			if debug then
				fibaro:debug(i.. " => Include : deviceID="..t[i].deviceID)
				fibaro:debug("timestamp : "..t[i].timestamp)
				fibaro:debug("deviceID : "..fibaro:getName(t[i].deviceID))
				fibaro:debug("getRoomID : "..fibaro:getRoomID(t[i].deviceID))
				if fibaro:getRoomID(t[i].deviceID) > 0 then
					fibaro:debug("getRoomName : "..fibaro:getRoomName(fibaro:getRoomID(t[i].deviceID)))
				end
				fibaro:debug("propertyName : "..(t[i].propertyName or ""))
				fibaro:debug("oldValue : "..(t[i].oldValue or ""))
				fibaro:debug("newValue : "..(t[i].newValue or ""))
			end

			--local msg = fibaro:getName(t[i].deviceID) .. " "..roomName .. " | " .. oldValue .. "->" .. newValue .. " | " .. heure

			local msg = fibaro:getName(t[i].deviceID)

			local roomID = fibaro:getRoomID(t[i].deviceID)
			if roomID > 0 then
				msg = msg .. " " .. fibaro:getRoomName(roomID)
			end

			if t[i].propertyName then
				local oldValue = ""
				local newValue = ""
				if t[i].propertyName == "value" then
					oldValue = t[i].oldValue
					newValue = t[i].newValue
				elseif t[i].propertyName == "armed" then
					if t[i].oldValue > 0 then oldValue = "armé" else oldValue = "désarmé" end
					if t[i].newValue > 0 then newValue = "armé" else newValue = "désarmé" end
				end
				msg = msg .. " | " .. oldValue .. "->" .. newValue
			elseif t[i].event then
				msg = msg .. " | " .. (t[i].event.data.keyAttribute or "")
			else
				msg = msg .. " | "
				fibaro:debug("Non supporté !!!")
			end

			local date = os.date("%d/%m/%Y", t[i].timestamp)
			local heure = os.date("%H:%M:%S", t[i].timestamp)
			msg = msg .. " | " .. heure
			if today ~= date then
				msg = msg .. " " .. date
			end

			j = j + 1
			if debug then
				fibaro:debug("j="..j)
			end
			local label = fibaro:get(selfID, "ui.Label"..j..".value")
			if label ~= msg then
				pcall(function() 
					fibaro:call(selfID, "setProperty", "ui.Label"..j..".value", msg)
				end)
			end
			if j >= max_labels then
				break
			end
		end

	end -- for

else
	fibaro:debug("Net.FHttp error")
end -- if

-- Clean labels
for k = j+1, max_labels do
	if debug then
		fibaro:debug("j="..j.." k="..k)
	end
	local label = fibaro:get(selfID, "ui.Label"..k..".value")
	if label ~= "" then
		fibaro:call(selfID, "setProperty", "ui.Label"..k..".value", "")
	end
end

fibaro:debug("OK")

Pour info, chez moi j'ai ajouté 25 labels au VD afin d'avoir plus d'historique, donc j'ai mis les paramètres suivants et ça fonctionne très bien :

- max_events = 1200
- max_labels = 25

J'ai mis un max_events assez gros, car pendant les vacances il y a très peu d'activité chez moi (uniquement simulation de présence...) et les seuls événements remontés par l'API sont les sonde de température/humidité/lux/etc, pas intéressant pour ce qu'on veut afficher. Donc 1200 me permet d'être tranquille à  affiner en fonction de votre environnement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Lazer pour la mise àjour maintenant c'est nickel

Partager ce message


Lien à poster
Partager sur d’autres sites

hello

 

l'api et/ou l'authentification à changé en 4.110, du coup le VD ne fonctionne plus

Partager ce message


Lien à poster
Partager sur d’autres sites

ah mince, tu as bien la dernière version que j'ai partagé sur cette page ?

Tu peux envoyer le log de debug ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ha non attends j'avais pas mis à jour, j'avais pas vu, je te dis

 

EDIT ; Désolé Chef , RAS 

Modifié par Sakkhho

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut a tous

comment faire pour que la date et l heure soit afficher et pas que l heure ?

merci

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Remplacer :

			if today ~= date then
				msg = msg .. " " .. date
			end

 

Par :

				msg = msg .. " " .. date

 

(donc en fait, juste supprimer la condition)

 

 

EDIT : j'en déduis à la lecture de l'autre topic que tu utilises une vieille version totalement dépassée, tu ferais mieux de relire ce topic, et en particulier cette page-ci.....

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

depuis la mise à jour d'aout,

ce module virtuel ne fonctionne plus chez moi??

 

avez vous le meme problème?

Partager ce message


Lien à poster
Partager sur d’autres sites

Il fonctionne très bien en 4.510, tu dois avoir une vieille version, relis cette page

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, 

 

Est ce que ce VD fonctionne en 4.55 ? 

 

Je suis intéressé par à l'utilisé :P

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui si tu utilises bien la dernière version du code LUA

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai copier coller ton code ci-dessus, celui du 2 octobre 2016, 

 

Mais je n'arrive pas a avoir de donnes sur le VD (il apparait vide)

 

On est d'accord que le code de la première page n'est plus d'actualité ? 

Partager ce message


Lien à poster
Partager sur d’autres sites

En effet, le code de la première page ne fonctionne plus, il faut remplacer le code par celui qui se trouve sur cette page.

 

Vérifie tes Labels, tu dois avoir un souci.

Sinon regarde si tu vois des choses dans la zone de debug du bouton.

Partager ce message


Lien à poster
Partager sur d’autres sites

hello,

 

ok, merci @Lazer bon j'avais correctement chargé le bon code  (ça au moins c'est juste)

 

Je vois rien de rien sur le Debug, il n'affiche rien 

 

Voici mes Labels... est ce qu'il faut les renseigner ?

 

merci d'avance

 

 

Capture d’écran 2019-09-14 à 10.11.37.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tes labels semblent OK.

Tu peux activer le debug = true, il devrait te donner plus d'infos dans la fenêtre de debug pour comprendre ce qui se passe

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci de ta réponse @Lazer

 

Voici le Debug obtenu : 

1616580004_Capturedecran2019-09-14a14_01_22.png.d33213cf9a16bfe4afed5b8e50740db7.png

 

Cela semble ressemble à la première ligne du code, non ? 

 

2113057375_Capturedecran2019-09-14a14_03_52.png.0cc96d23a06a462197bb2179ac297c93.png

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé mais là c'est totalement incohérent, je te demande de mettre debug = true, et ce n'est pas le cas sur la capture d'écran que tu me montres.... donc là vraiment je ne comprends rien et je peux pas t'aider.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de tester en 4.550 soucis de " [DEBUG] 17:56:00: Net.FHttp error", j'ai mis l'IP de ma box et le port 80 à la ligne :

local HC2 = Net.FHttp("127.0.0.1", 11111)

Une idée du soucis?

Partager ce message


Lien à poster
Partager sur d’autres sites

Il ne faut plus mettre l'IP, il faut utiliser 127.0.0.1 comme dans le code, il ne faut donc pas modifier cette ligne.

 

Les seules lignes modifiables par l’utilisateur sont :

local excluded_id = {}    -- Comma separated list of ID to exclude
local max_events = 500    -- Maximum number of events to fetch
local max_labels = 10     -- Number of labels in virtual device
local debug = false       -- debug

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×