Aller au contenu

My Batteries


Steven

Messages recommandés

@Diuck, marche pas non plus,il est un peu tot ce matin, je reessaierai plus tard, le boulet est toujours entre l'ecran et la chaise ;-) 

 

j'ai essaye le code de @cocolabombe0, pas mieux. Dans mon debug du bouton, fenetre noire et rien dans la liste.

 

C'est pe une info importante, le seul module sur batterie est la ZRC100, ca peut-etre une influence ;-)

 

le code a tout de meme l'air de fonctionner car il me met la bonne icone, mais n'affiche pas le nom dans le label

Modifié par pepite
Lien vers le commentaire
Partager sur d’autres sites

bonjour messieurs,

 

je vous mets le code derriere le bouton au cas où...toujours pas d'affichage pour moi ;-) que ce soit avec le module de Steven ou cocolabombe0

 

Merci

function exclude(name)
return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité"
end
 
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response = HC2:GET("/api/devices")
local json = json.decode(response)
local modules = {}
local parentIds = {}
 
local uniqueParentId = true
 
for k, v in ipairs(json) do
if (type(v.properties.batteryLevel) == "number") then
if (not exclude(v.name) and v.visible and (not uniqueParentId or not parentIds[v.parentId])) then
parentIds[v.parentId] = true
table.insert(modules, {v.properties.batteryLevel, v.name .. " (" .. v.id .. ")"})
end
end
end
 
function comp(w1,w2)
return tonumber(w1[1]) < tonumber(w2[1])
end
 
table.sort(modules,comp)
 
for index, value in ipairs(modules) do
pcall( function()
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. " ... " .. value[1] .. "%")
end
)
end

j'oubliais, avec celui de coco : l'icone s'affiche bien..ca a l'air de tourner..mais  pas de label..

Modifié par pepite
Lien vers le commentaire
Partager sur d’autres sites

Voila le fichier que j'ai modifié. 

Mes images sont 90 et 91 à  modifier.

 

 

@ Coco une question tu l'insert ou ton code ?  ;)

{"name":"My Batteries","type":"virtual_device","properties":{"deviceIcon":1087,"currentIcon":"90","log":"","logTemp":"","mainLoop":"local nbHeure = 12\n\nlocal i = 0\nwhile true do\n\tif (i >= (nbHeure*2) or i == 0) then\n    \ti = 0\n\t\tfibaro:call(fibaro:getSelfId(), \"pressButton\", \"11\")\n\tend\n\tfibaro:sleep(30*60*1000)\n  \ti = i + 1\nend","ui.Label1.value":"thermostat (49) ... 33%","ui.Label10.value":"17 (17) ... 91%","ui.Label2.value":"fenetre (7) ... 58%","ui.Label3.value":"66.0 (67) ... 70%","ui.Label4.value":"chauffage sdb (54) ... 71%","ui.Label5.value":"chauffage (6) ... 73%","ui.Label6.value":"Chauffage SaM (44) ... 74%","ui.Label7.value":"chauffage salon (42) ... 74%","ui.Label8.value":"82.0 (83) ... 90%","ui.Label9.value":"61.0 (62) ... 90%","visible":"true","rows":[{"type":"label","elements":[{"id":1,"lua":false,"waitForResponse":false,"caption":"","name":"Label1","favourite":false,"main":true}]},{"type":"label","elements":[{"id":2,"lua":false,"waitForResponse":false,"caption":"","name":"Label2","favourite":false,"main":false}]},{"type":"label","elements":[{"id":3,"lua":false,"waitForResponse":false,"caption":"","name":"Label3","favourite":false,"main":false}]},{"type":"label","elements":[{"id":4,"lua":false,"waitForResponse":false,"caption":"","name":"Label4","favourite":false,"main":false}]},{"type":"label","elements":[{"id":5,"lua":false,"waitForResponse":false,"caption":"","name":"Label5","favourite":false,"main":false}]},{"type":"label","elements":[{"id":6,"lua":false,"waitForResponse":false,"caption":"","name":"Label6","favourite":false,"main":false}]},{"type":"label","elements":[{"id":7,"lua":false,"waitForResponse":false,"caption":"","name":"Label7","favourite":false,"main":false}]},{"type":"label","elements":[{"id":8,"lua":false,"waitForResponse":false,"caption":"","name":"Label8","favourite":false,"main":false}]},{"type":"label","elements":[{"id":9,"lua":false,"waitForResponse":false,"caption":"","name":"Label9","favourite":false,"main":false}]},{"type":"label","elements":[{"id":10,"lua":false,"waitForResponse":false,"caption":"","name":"Label10","favourite":false,"main":false}]},{"type":"button","elements":[{"id":11,"lua":true,"waitForResponse":false,"caption":"Batteries","name":"Button11","empty":false,"msg":"function exclude(name)\n\treturn name == \"Main_Zwave_Device\" or name == \"Seismomètre\" or name == \"Luminosité\"\nend\n \nlocal HC2 = Net.FHttp(\"127.0.0.1\", 11111)\nlocal response = HC2:GET(\"/api/devices\")\nlocal json = json.decode(response)\nlocal modules = {}\nlocal parentIds = {}\n \nlocal battlow = \"ok\"\nlocal iconebattok = 90\nlocal iconebattnok = 91\nlocal battlimite = 30  -- % charge sous lequel icône rouge\n\nlocal uniqueParentId = true\n \nfor k, v in ipairs(json) do\n  if (type(v.properties.batteryLevel) == \"number\") then\n\tif (not exclude(v.name) and v.visible and (not uniqueParentId or not parentIds[v.parentId])) then\n\t   parentIds[v.parentId] = true\nif (v.properties.batteryLevel < battlimite and battlow == \"ok\") then battlow = \"nok\" end      \n      \t   table.insert(modules, {v.properties.batteryLevel, v.name .. \" (\" .. v.id .. \")\"})\n\tend\n  end\nend\n \nfunction comp(w1,w2)\n\treturn tonumber(w1[1]) < tonumber(w2[1])\nend\n \ntable.sort(modules,comp)\n \nfor index, value in ipairs(modules) do\n  \tpcall( function() \n\t\tfibaro:call(fibaro:getSelfId(), \"setProperty\", \"ui.Label\"..index..\".value\", value[2].. \" ... \" .. value[1] .. \"%\")\n    \tend\n  \t)\nend\n\nif battlow == \"ok\"\n  then\n    fibaro:call(fibaro:getSelfId(), \"setProperty\", \"currentIcon\", iconebattok)\n  else\n    fibaro:call(fibaro:getSelfId(), \"setProperty\", \"currentIcon\", iconebattnok)\nend","buttonIcon":0,"favourite":false,"main":true}]}]},"actions":{"pressButton":1,"setSlider":2,"setProperty":2}}
Lien vers le commentaire
Partager sur d’autres sites

J'ai juste copier des bouts de code en modifier une variable.
Sur mon code, j'ai rajouté au bouton:

entre tous les local du début du code

local battlow = "ok"
local iconebattok = 90
local iconebattnok = 91
local battlimite = 30  -- % charge sous lequel icône rouge

Ce code au dessus de table.insert... en v4....

if (v.properties.batteryLevel < battlimite and battlow == "ok") then battlow = "nok" end     

Et mes icones tout à  la fin du code
 

if battlow == "ok"
  then
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebattok)
  else
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebattnok)
end

 ----------------------------------------------------------------------------------------------------------------------

Code du bouton complet que j'utilise:

function exclude(name)
	return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité"
end
 
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response = HC2:GET("/api/devices")
local json = json.decode(response)
local modules = {}
local parentIds = {}
 
local battlow = "ok"
local iconebattok = 90
local iconebattnok = 91
local battlimite = 30  -- % charge sous lequel icône rouge

local uniqueParentId = true
 
for k, v in ipairs(json) do
  if (type(v.properties.batteryLevel) == "number") then
	if (not exclude(v.name) and v.visible and (not uniqueParentId or not parentIds[v.parentId])) then
	   parentIds[v.parentId] = true
if (v.properties.batteryLevel < battlimite and battlow == "ok") then battlow = "nok" end      
      	   table.insert(modules, {v.properties.batteryLevel, v.name .. " (" .. v.id .. ")"})
	end
  end
end
 
function comp(w1,w2)
	return tonumber(w1[1]) < tonumber(w2[1])
end
 
table.sort(modules,comp)
 
for index, value in ipairs(modules) do
  	pcall( function() 
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. " ... " .. value[1] .. "%")
    	end
  	)
end

if battlow == "ok"
  then
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebattok)
  else
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebattnok)
end
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Pas bien écrit mais j'ai rajouter les dernières icones de couillerot.

function exclude(name)
	return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité"
end
 
local HC2 = Net.FHttp("127.0.0.1", 11111)
local response = HC2:GET("/api/devices")
local json = json.decode(response)
local modules = {}
local parentIds = {}
 
local battlow = "100"
local iconebatt100 = 95
local iconebatt075 = 93
local iconebatt050 = 94
local iconebatt025 = 92
local iconebatt000 = 91
 
local uniqueParentId = true
 
for k, v in ipairs(json) do
  if (type(v.properties.batteryLevel) == "number") then
	if (not exclude(v.name) and v.visible and (not uniqueParentId or not parentIds[v.parentId])) then
	   parentIds[v.parentId] = true
if (v.properties.batteryLevel <= 75 and battlow == "100") then battlow = "75" end  
if (v.properties.batteryLevel <= 50 and battlow == "75") then battlow = "50" end
if (v.properties.batteryLevel <= 25 and battlow == "50") then battlow = "25" end  
if (v.properties.batteryLevel <= 5 and battlow == "25") then battlow = "000" end

  
      table.insert(modules, {v.properties.batteryLevel, v.name .. " (" .. v.id .. ")"})
	end
  end
end
 
function comp(w1,w2)
	return tonumber(w1[1]) < tonumber(w2[1])
end
 
table.sort(modules,comp)
 
for index, value in ipairs(modules) do
  	pcall( function() 
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. " ... " .. value[1] .. "%")
    	end
  	)
end
 
if battlow == "100"
  then
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt100)
  elseif battlow == "75"
   then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt075)
  elseif battlow == "50"
    then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt050)
	  elseif battlow == "25"
    then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt025)
else 
	fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt000)
end

Mais je ne sais pas si on peut arrivé jusqu'à  5% car quand j'ai modifié le code, je ne voyais plus le niveau critique du module

Lien vers le commentaire
Partager sur d’autres sites

voici ma v3.0 pour le firmware 3.x

 

Changements  : 

 

My_Batteries_v3.0.vfib

Lien vers le commentaire
Partager sur d’autres sites

 

J'ai modifié depuis un moment mon code et il répond à  ta demande alors soit tu fermes les yeux et tu développes ton propre code pour t'entrainer, soit tu peux copier celui-ci :

function exclude(name)
	return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité"
end

local HC2 = Net.FHttp("127.0.0.1", 11111)
local response = HC2:GET("/api/devices")
local json = json.decode(response)
local modules = {}
local parentIds = {}

local uniqueParentId = true

for k, v in ipairs(json) do
  if (type(v.properties.batteryLevel) == "number") then
	if (not exclude(v.name) and v.visible and (not uniqueParentId or not parentIds[v.parentId])) then
	   parentIds[v.parentId] = true
      	   table.insert(modules, {v.properties.batteryLevel, v.name .. " (" .. v.id .. ")"})
	end
  end
end

function comp(w1,w2)
	return tonumber(w1[1]) < tonumber(w2[1])
end
    
table.sort(modules,comp)

for index, value in ipairs(modules) do
  	pcall( function() 
		fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. " ... " .. value[1] .. "%")
    	end
  	)
end

@Steven... j'ai craqué   :P .. tout ok pour moi ! merci

Lien vers le commentaire
Partager sur d’autres sites

Sakkhho,

Mes codes fonctionnent sur 3.x. (je n'ai pas encore osé faire le grand sot ...)

 

Voici la v3.1 de ma version du module (en firmware 3.x).

Changements : il ne faut plus modifier le code pour ajuster l'intervalle (en heures) des vérifications : intervalle à  rentrer dans le champ TCP Port du VD

post-1320-0-16392800-1424539103_thumb.jpg

My_Batteries_v3.1.vfib

 

Toutes les versions et icônes de ce VD se trouvent sur GoogleDrive (lien dans ma signature)

Lien vers le commentaire
Partager sur d’autres sites

Voici la version 3.2 avec une correction d'un bug au niveau de l'affichage : si le nbr de device sur batterie diminue, les dernière ligne ne se mettent pas à  blanc. Dans l'exple ci-dessous, on voit 2 fois le même device à  la fin

post-1320-0-80421900-1424801598_thumb.jpg

 

My_Batteries_v3.2.vfib

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...