jojo Posté(e) le 16 décembre 2015 Auteur Signaler Partager Posté(e) le 16 décembre 2015 : heureusement qu'on fait des erreurs, ce n'est que comme ça qu'on apprend Lien vers le commentaire Partager sur d’autres sites More sharing options...
vilajea1 Posté(e) le 16 décembre 2015 Signaler Partager Posté(e) le 16 décembre 2015 ça marche merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
flamalex Posté(e) le 20 décembre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 20 décembre 2015 Auteur Signaler Partager 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
flamalex Posté(e) le 21 décembre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Partager 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é Lien vers le commentaire Partager sur d’autres sites More sharing options...
domo Posté(e) le 21 décembre 2015 Signaler Partager Posté(e) le 21 décembre 2015 pour ma part j'ai pas trouvé de changement Lien vers le commentaire Partager sur d’autres sites More sharing options...
flamalex Posté(e) le 21 décembre 2015 Signaler Partager 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% Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 21 décembre 2015 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Partager 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é" Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 21 décembre 2015 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
flamalex Posté(e) le 22 décembre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 23 décembre 2015 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
flamalex Posté(e) le 23 décembre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
ASTECH44 Posté(e) le 24 décembre 2015 Signaler Partager Posté(e) le 24 décembre 2015 Excellent. Merci JOJO Lien vers le commentaire Partager sur d’autres sites More sharing options...
kioneoranga Posté(e) le 27 décembre 2015 Signaler Partager Posté(e) le 27 décembre 2015 Merci pour cet update Lien vers le commentaire Partager sur d’autres sites More sharing options...
Domotique Posté(e) le 19 juillet 2016 Signaler Partager Posté(e) le 19 juillet 2016 Super Merci jojo trop cool ton script merci encore Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yannick Posté(e) le 4 août 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 4 août 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yannick Posté(e) le 4 août 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
54allan54 Posté(e) le 7 août 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 7 août 2016 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
54allan54 Posté(e) le 8 août 2016 Signaler Partager Posté(e) le 8 août 2016 Super merci beaucoup Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 8 août 2016 Auteur Signaler Partager Posté(e) le 8 août 2016 mais de rien, le forum est làpour ça, on a tous commencé un jour Lien vers le commentaire Partager sur d’autres sites More sharing options...
54allan54 Posté(e) le 8 août 2016 Signaler Partager Posté(e) le 8 août 2016 Voila c'est modifié 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés