jojo Posté(e) le 16 décembre 2015 Auteur Signaler Posté(e) le 16 décembre 2015 : heureusement qu'on fait des erreurs, ce n'est que comme ça qu'on apprend
flamalex Posté(e) le 20 décembre 2015 Signaler Posté(e) le 20 décembre 2015 Bonjour à Tous, dans le VD je souhaiterai ajouter dans les "labels", en plus du"name" , la piece (room) ou se situe le module concerné, comment faire ? j'ai essayé avec getRoomName, mais je m'y prends mal enfin, je souhaiterai un message push lorsque l'une des batteries est < à x% merci
jojo Posté(e) le 20 décembre 2015 Auteur Signaler Posté(e) le 20 décembre 2015 voici le code àmettre dans le bouton batteries pour afficher le nom de la pièce ---------------------------------- -- User Settings ---------------------------------- -- icones pour 0, 25, 50, 75 & 100 % local iconebatt = {39, 40, 41, 42, 43} ---------------------------------- -- DO not change bellow this line ---------------------------------- local modules = {} local batt -- charge de la batt local battmin = 100 -- % charge de la batterie chargée au min HC2 = Net.FHttp("127.0.0.1",11111) -- memorise LastCheck time local LastCheck = os.date("%d/%m/%y %H:%M") -- clear labels for i = 1, 10 do fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label" ..i.. ".value", "") end --------------- --FUNCTIONS --------------- function exclude(name) return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité" end --------------- --END FUNCTIONS --------------- local parentIds = {} local uniqueParentId = true local response = HC2:GET("/api/devices") local json = json.decode(response) 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 batt = tonumber(v.properties.batteryLevel) if batt == 255 then batt = 0 end if (batt < battmin) then battmin = batt end table.insert(modules, {batt, v.name .. " (" .. v.id .. "-"..fibaro:getRoomName(fibaro:getRoomID(v.id))..")"}) end -- if exclude end -- if batteryLevel end -- for -- sort table function comp(w1,w2) return tonumber(w1[1]) < tonumber(w2[1]) end table.sort(modules,comp) -- display labels --if string.len(modules[1][2]) >= 29 then -- modules[1][2] = string.sub(modules[1][2], 1, 28) --end for index, value in ipairs(modules) do pcall( function() fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. "..." .. value[1] .. "%") end ) end -- display LastCheck fibaro:debug(LastCheck) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastCheck.value", LastCheck) -- display Icon fibaro:debug("battmin = "..battmin) battmin = math.floor((battmin - 1)/25) + 2 fibaro:debug("Icone batterie : "..battmin) fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt[battmin]) (àla place du code existant)
flamalex Posté(e) le 21 décembre 2015 Signaler Posté(e) le 21 décembre 2015 Super Jojo, ca fonctionne j'ai changé la ligne 48 et c'est Good il me reste a trouver le push
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Posté(e) le 21 décembre 2015 oui, mais tu dois également mettre les lignes 59 à61 en commentaire, car elle a pour objectif de tronquer la ligne si elle est trop longue, pour que tout tinne sur une ligne. Pour le push, il faut se poser les bonnes questions : fréquence du push, 1 par device ? Car sinon tu sera innondé
domo Posté(e) le 21 décembre 2015 Signaler Posté(e) le 21 décembre 2015 pour ma part j'ai pas trouvé de changement
flamalex Posté(e) le 21 décembre 2015 Signaler Posté(e) le 21 décembre 2015 ok, concernant les pushs j'ai 5 modules sur batterie, je souhaite, que si l'un d'entre eux passe la barre des (par exemple) 35%, recevoir un push "batterie module baievitrée salon <35%" EDIT: j'ai 5 modules sur batterie, dont 1 à 94% et 4 à 100% on va partir sur 1 push si batterie < à 85%
Sakkhho Posté(e) le 21 décembre 2015 Signaler Posté(e) le 21 décembre 2015 Sauf que si ç est comme chez moi les batteries ç est souvent de 40% àil faut changer ... Fibaro est la gestion des % ç est pas du tout ca.
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Posté(e) le 21 décembre 2015 @flamalex, ok, mais tu re!ois un push àchaque cycle de vérification par le VD ? Car sinon, c'est "chiadé"
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Posté(e) le 21 décembre 2015 voici le bouton batterie modifié pour les pushs : IDs des téléphones sous forme de table dans pushID et le niveau d'alerte dans pushLevel. L'alerte est envoyée àchaque run du script. Le message est générique : niveau d'alerte et niveau de batterie minimum. Mets un niveau d'alerte à80% pour tester. L'application te dira précisément de quelle batterie il s'agit. ---------------------------------- -- User Settings ---------------------------------- -- icones pour 0, 25, 50, 75 & 100 % local iconebatt = {39, 40, 41, 42, 43} local pushID = {177} -- 0 = no push; sinon entrer les ID séparés par une , local pushLevel = 10 -- niveau de batterie en dessous duquel il y a min 1 batterie pour notification push ---------------------------------- -- DO not change bellow this line ---------------------------------- local modules = {} local batt -- charge de la batt local battmin = 100 -- % charge de la batterie chargée au min HC2 = Net.FHttp("127.0.0.1",11111) -- memorise LastCheck time local LastCheck = os.date("%d/%m/%y %H:%M") -- clear labels for i = 1, 10 do fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label" ..i.. ".value", "") end --------------- --FUNCTIONS --------------- function exclude(name) return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité" end -- fonction push notification function push(msg) if pushID[1] ~= 0 then for i = 1, #pushID do fibaro:call(pushID[i], "sendPush", msg.." ("..os.date("%d/%m à%H:%M")..")") end end end --------------- --END FUNCTIONS --------------- local parentIds = {} local uniqueParentId = true local response = HC2:GET("/api/devices") local json = json.decode(response) 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 batt = tonumber(v.properties.batteryLevel) if batt == 255 then batt = 0 end if (batt < battmin) then battmin = batt end table.insert(modules, {batt, v.name .. " (" .. v.id .. "-"..fibaro:getRoomName(fibaro:getRoomID(v.id))..")"}) end -- if exclude end -- if batteryLevel end -- for -- sort table function comp(w1,w2) return tonumber(w1[1]) < tonumber(w2[1]) end table.sort(modules,comp) -- display labels --if string.len(modules[1][2]) >= 29 then -- modules[1][2] = string.sub(modules[1][2], 1, 28) --end for index, value in ipairs(modules) do pcall( function() fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. "..." .. value[1] .. "%") end ) end -- display LastCheck fibaro:debug(LastCheck) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastCheck.value", LastCheck) -- display Icon fibaro:debug("battmin = "..battmin) if battmin < pushLevel then msg = "Il y a au moins une batterie sous le niveau minimum ("..pushLevel.."%) : "..battmin.."%." push(msg) end battmin = math.floor((battmin - 1)/25) + 2 fibaro:debug("Icone batterie : "..battmin) fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt[battmin]) 2
flamalex Posté(e) le 22 décembre 2015 Signaler Posté(e) le 22 décembre 2015 Salut Jojo, ca fonctionne super franchement, chapeau comment peut on ajouter au message push, en plus du % de batterie restant, le "name" et la" room" du Module concerné? et enfin, faut il mettre un trigger, pour etre informé dés qu'une batterie est < au level? plutôt que de faire un push
jojo Posté(e) le 23 décembre 2015 Auteur Signaler Posté(e) le 23 décembre 2015 les trigger ne fonctionnent qu'avec des scènes. Ici, c'est un VD qui tourne toutes les heures par défaut, mais paramétrable (voir la doc du module). Je ne recommande pas de mettre le nom du device dans le push, car 1) il sera trop long 2) si en même temps" 2 devices passent sous le seuil critique, l'info risque de ne pas être complète. 3) le push est là pour te signaler queque-chose. Comme ceci en l'occurence n'est pas critique dans l'heure, tu as le temps de te connecter sur l'interface WEB pour voir de quel modules il sagit
flamalex Posté(e) le 23 décembre 2015 Signaler Posté(e) le 23 décembre 2015 ok, je vais faire comme ça je vais regarder pour le paramétrage du vd 1x/jr ou 1x/mois
Domotique Posté(e) le 19 juillet 2016 Signaler Posté(e) le 19 juillet 2016 Super Merci jojo trop cool ton script merci encore
Yannick Posté(e) le 4 août 2016 Signaler Posté(e) le 4 août 2016 salut Jojo, Comment ça va ? Je viens vers toi parce que depuis mon passage réussi en v4.090, ton VD ne fonctionne plus. Il me renvoie une erreur à la ligne 56 du VD [ERROR] 13:26:28: line 56: attempt to concatenate a nil value et voici mon code ---------------------------------- -- User Settings ---------------------------------- -- icones pour 0, 25, 50, 75 & 100 % local iconebatt = {1002,1003,1004,1005,1006} local pushID = {385,304} -- 0 = no push; sinon entrer les ID séparés par une , local pushLevel = 30 -- niveau de batterie en dessous duquel il y a min 1 batterie pour notification push ---------------------------------- -- DO not change bellow this line ---------------------------------- local modules = {} local batt -- charge de la batt local battmin = 100 -- % charge de la batterie chargée au min HC2 = Net.FHttp("127.0.0.1",11111) -- memorise LastCheck time local LastCheck = os.date("%d/%m/%y %H:%M") -- clear labels for i = 1, 10 do fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label" ..i.. ".value", "") end --------------- --FUNCTIONS --------------- function exclude(name) return name == "Main_Zwave_Device" or name == "Seismomètre" or name == "Luminosité" end -- fonction push notification function push(msg) if pushID[1] ~= 0 then for i = 1, #pushID do fibaro:call(pushID[i], "sendPush", msg.." ("..os.date("%d/%m à %H:%M")..")") end end end --------------- --END FUNCTIONS --------------- local parentIds = {} local uniqueParentId = true local response = HC2:GET("/api/devices") local json = json.decode(response) 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 batt = tonumber(v.properties.batteryLevel) if batt == 255 then batt = 0 end if (batt < battmin) then battmin = batt end table.insert(modules, {batt, v.name .. " (" .. v.id .. "-"..fibaro:getRoomName(fibaro:getRoomID(v.id))..")"}) end -- if exclude end -- if batteryLevel end -- for -- sort table function comp(w1,w2) return tonumber(w1[1]) < tonumber(w2[1]) end table.sort(modules,comp) -- display labels --if string.len(modules[1][2]) >= 29 then -- modules[1][2] = string.sub(modules[1][2], 1, 28) --end for index, value in ipairs(modules) do pcall( function() fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", value[2].. "..." .. value[1] .. "%") end ) end -- display LastCheck fibaro:debug(LastCheck) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastCheck.value", LastCheck) -- display Icon fibaro:debug("battmin = "..battmin) if battmin < pushLevel then msg = "Il y a au moins une batterie sous le niveau minimum ("..pushLevel.."%) : "..battmin.."%." push(msg) end battmin = math.floor((battmin - 1)/25) + 2 fibaro:debug("Icone batterie : "..battmin) fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconebatt[battmin]) La ligne 56 chez moi c'est celle-ci table.insert(modules, {batt, v.name .. " (" .. v.id .. "-"..fibaro:getRoomName(fibaro:getRoomID(v.id))..")"}) tu peux me dire ce qu'il a de changer entre la V4.080 et la V4.090 ? Merci pour ton aide
Steven Posté(e) le 4 août 2016 Signaler Posté(e) le 4 août 2016 C'est probablement un module qui n'est dans aucune "Room" ou dans la Room 0 qui n'existe pas (ou plus, je ne sais pas) fait un print(v.name) juste avant ta ligne 56 pour voir le nom du module qui plante. 1
Yannick Posté(e) le 4 août 2016 Signaler Posté(e) le 4 août 2016 Merci Steven, Effectivement j'avais un module qui n'était pas affecté à une pièce. Cela venait de là ! Merci
54allan54 Posté(e) le 7 août 2016 Signaler Posté(e) le 7 août 2016 Bonjour. Je suis nouveau dans le monde de la domotique, j'ai recu ma HC2 hier et j'en suis satisfait j'aimerais installer le plugin mais bizarrement je n'ai pas l'option Add Plugin, suis-je le seul ? Merci pour vos reponses
jojo Posté(e) le 7 août 2016 Auteur Signaler Posté(e) le 7 août 2016 il ne s'agit pas d'un plugin, mais un Virtual Device. Pour cela tu vas dans l'onglet Devices -> Add or Remove Device -> To add the virtual device 1
jojo Posté(e) le 8 août 2016 Auteur Signaler Posté(e) le 8 août 2016 mais de rien, le forum est làpour ça, on a tous commencé un jour
Messages recommandés