Aller au contenu

My Batteries


Steven

Recommended Posts

ok tu es bien dans le debug du bouton Batteries ?

Tu as bien appuyé sur start ?

 

post-629-0-18444400-1420987064_thumb.jpg

 

 

Tu peux aussi regarder le nombre de device que tu as maintenant car au changement des versions il y en a un paquet de créés.

Je dis cela car dans le code au début de la boucle ligne 11 du dois adapter le nombre en rouge en mettant un nombre supérieur au nombre de device de ton système

 

for i = 1, 1000 do

 

 

J'espère que cela t'aidera

Lien vers le commentaire
Partager sur d’autres sites

C'était un peu noyer dans la masse donc pas besoin de d'excuser. Je viens de rajouter l'info sur le 1er post.

 

Je comprends mal ta question. Une fois le code modifier (remplacer le code du bouton par le nouveau) et enregistrer, tu devrais voir apparaître la liste des 10 premiers modules utilisant des piles triés par ordre du plus vide au plus plein.

Lien vers le commentaire
Partager sur d’autres sites

Attention, les icônes, c'est une longue histoire. Il faut absolument cliquer dessus puis appuyer sur "Save" puis enregistrer l'image ... si tu ne fait pas cela, l'image n'est pas en 128x128 et tu ne pourras pas l'insérer.

 

Voilà  :)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

Bonjour,

J'ai rajouté la ligne de batterie = 255 et aussi enlevé les Zwave Node:xxx de la liste affichée. Par contre pas trouvé comment on récupérait le statut visible ou pas du device pour n'afficher que les devices non cachés...si quelqu'un a une idée??

Pourt les FGK, ca affichée au moins 2 lignes si capteur de température, une idée pour voir qu'il s'agit de la meme chose ?

 

 

local modules = {}


function exclude(name)
return name == "Main_Zwave_Device" or (string.find(name, "Zwave Node:")) -- or name == "Seismomètre" or name == "Luminosité"
end


for i = 1, 1000 do
    local batt = fibaro:getValue(i, 'batteryLevel')
    if (type(batt) ~= nil and (tonumber(batt) ~= nil)) then 
     if (not exclude(fibaro:getName(i))) then
if (tonumber(batt) == 255) then batt = 0 end
table.insert(modules, {batt, fibaro:getName(i) .. " (" .. i .. ")"})
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
Lien vers le commentaire
Partager sur d’autres sites

 

Bonjour,

j'ai utilisé le nouveau code pour la version 4x

Cela fonctionne bien mais j'ai un module que ressort alors qu'il est en "caché"

j'essaie depuis un moment de modifier le code pour supprimer de l'affichage les devices avec "visible": false

 

je n'arrive pas à  récupérer cette valeur ... j'ai essayé de la faire comme ceci

 

Un pro du code pourrait il me dire comment faire ?

 
local visu = tostring(fibaro:getValue(i, 'visible'))
      if (visu == false) then
      fibaro:debug("Visu oui ")
        else
        fibaro:debug("Visu non ")
        end
 
 
 

ici l'extrait du json de ce device

{
  "id": 354,
  "name": "Zwave Node: 61",
  "roomID": 0,
  "type": "com.fibaro.zwaveDevice",
  "baseType": "com.fibaro.device",
  "enabled": true,
  "visible": false,
  "isPlugin": false,
  "parentId": 1,
  "remoteGatewayId": 0,
  "interfaces": [
    "battery",
    "zwave",
    "zwaveAssociation",
    "zwaveConfiguration",
    "zwaveSlaveRouting",
    "zwaveWakeup"
  ],

 

réponse du support Fibaro: pas de fonctions pour le faire mais possibilité d'utiliser l'API (voir exemple ci dessous). pas encore implémenté dans le module, sur ma todo :)

 

--[[
%% properties
%% globals
--]]


local idOfDevice = ; --here paste device ID


local function updateDevice(deviceId, successCallback, errorCallback)
  
  local http = net.HTTPClient()
  
  http:request('http://127.0.0.1:11111/api/devices/' .. deviceId, {
      options = {
        method = 'GET'
      },
      success = successCallback,
      error = errorCallback
  })
end


deviceId = updateDevice(idOfDevice, function(resp)
    print("Status: " .. resp.status)
    local dat = json.decode(resp.data)
    print(dat.visible)
    end,
  
    function(err)
    print('error' .. err)
    end
)
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

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

Merci Steven pour ce VD  :60:  :60:

On l'importe, il n'y a rien à  faire, et ça marche.

J'ai cependant fait une mini modif : si un des modules a une batterie < niveau donné (ligne 5), l'icône passe du bleu ou rouge (merci Berale24 pour l'icône rouge)

Voici donc ma V2.0 pour le firmware 3.600

My_Batteries_v2.0.vfib

 

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

bonsoir,

 

Alors je suis un poissard je pense, rien ne s'affiche pour moi, je suis en 4.033 et j'ai fait la modif de steven pour les 4.0x ;-)

 

Une idee ?

Par curiosite j'ai aussi essaye celui de jojo mais evidemment, rien non plus puisque c'est pour 3.6

Lien vers le commentaire
Partager sur d’autres sites

 @ pepite tu as mis cette modif ? car moi je viens de le faire à  l'instant et c'est ok 

 

 

 

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

Lien vers le commentaire
Partager sur d’autres sites

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