Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

Merci pour ta réponse j'ai bien fais debug sur le bouton batteries  start  aussi les modifs mais toujours pas de réponse du debug !! pas de résultat page noir !!

Posté(e)

C'est tout bon je n'avais pas vu la MJ du code de Mr Steven tout est ok

Un grand merci à  lui pour le suivi de ces codes  :60:

Posté(e)

Bonjour Steven et à  tous,

 

J'ai tenté ton module sur ma HC2 v4 et j'ai cette erreur la 

 

[ERROR] 21:51:52: line 13: bad argument #1 to 'find' (string expected, got nil)

 
 
Une idée ?
 
Merci
Posté(e)

oops non !!! j'avais pas vu ! désolé,

 

j'ai copier le code, pas de soucis quand je fais démarrer, après qu'elle genre de réaction cela fera par la suite ?

 

Merci en tout cas

Posté(e)

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.

Posté(e)

Il faut au minima 10 modules ?

j'ai bien enregistré comme convenu, pas d'erreur cette fois, j'ai cliquer sur démarrer mais il ne se passe rien, peu être a cause que je n 'ai pas les 10 modules ?

Posté(e)

ca marche nickel, merci beaucoup :)

 

Par contre j'arrive pas a changer ton icon avec celui fournit par défaut de la HC2, impossible d'importer

Posté(e)

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à  :)

Posté(e)

Suite a la mise a jour de Steven pour une version 4.xx ou devons mettre cette commande pour le pourcentage .Merci 

:if (tonumber(batt) == 255) then batt = 0 end

  • 3 semaines après...
Posté(e)

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
Posté(e)

pour éviter les doublons en cas de device avec plusieurs fonction, je crois qu'il faut regarder du coté de parentID. bon ba je vais me pencher dessus alors :)

Posté(e)

ba il faut regarder du coté des ParentID mais pas encore commencé pour le code... en plus je débute donc faudra etre un peu patient :)

Posté(e)

 

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
)
Posté(e)

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
Posté(e)

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
Posté(e)

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

Posté(e)

 @ 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

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