Aller au contenu

Messages recommandés

Posté(e)

Super module et j'ai même fait une version Zwave (noeuds morts) avec la même structure de code.(si ça intéresse qql'un je peux le poster)

 

 

Par contre ce matin, j'ai un smoke sensor qui s'est arrêté (problème de pile qui était à  50% depuis qqles jours et qui est passée de 50% à  ... 0,5v tout d'un coup) Donc 2 questions :

 

1) Je "vois" toujours le smoke sensor avec une batterie à  50% (malgré plusieurs mises à  jour) Strange ! le smoke sensor indique 0°C en température et est vraiment sans pile! le HC2 a l'air de ne pas se mettre à  jour (rapidement)

 

2) Est-ce normal de changer les piles d'un smoke sensor en qqles mois (moins de 6 mois)  ? Au début, j'avais mis un "intervalle de réveil à  3600 mais depuis que je suis passé à  50% de batterie je suis revenu à  21600...Quelqu'un a-t-il une expérience avec ce capteur ?

Posté(e)
@JM13

J'avais oublié un petit détail, lorsqu'une pile est à  l'état critique, Fibaro renvoi 255 au lieu du pourcentage de batterie restant.

Une nouvelle version est donc disponible, le 255 est remplacer par 0 pour affiché le module en tête de liste.

 

Pour les flemmards ou ceux qui ont personnalisé leur module, le code modifié est ici, c'est juste la ligne 7 qui a été ajoutée  :



local modules = {}
for i = 1, 350 do
if (string.find(fibaro:get(i, 'isBatteryOperated'), "1" )) then
local batt = fibaro:getValue(i, 'batteryLevel')
if (batt and (tonumber(batt) ~= nil)) 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)

C'est vrai que c'est agréable, sur ce forum il y a une grande communauté de béta testeurs et un béta tout court (mais je l'aime bien quand même celui-ci) :)

  • Upvote 3
Posté(e)

Pour l'instant, je ne les lit pas et je comptais me réserver une soirée complète pour le faire. Maintenant que je sais que tu y participes, je vais rajouter une soirée à  mon agenda. Tu penses que cela va suffire ?  :P

Posté(e)

Même làtu as réussi me cité (bon pour une fois, c'est pas méchant WAF->HAF) :)

Cool tes 658 premières pages, tu auras fini quand les 2765 autres ?

  • Upvote 1
Posté(e)

Fredo & Steven ... on dirait un vieux couple qui se dispute  :rolleyes: on va finir par vous paxer tous les deux !    :rolleyes:

 

 

Pour le VD sur les batteries, la modif en effet corrige une faiblesse de l'algorithme mais je pense quand même qu'il doit y avoir un loup dans le HC2.

 

Comme mon smoke sensor est SANS batterie, j'ai l'impression qu'il n'y a pas de mise à  jour de la dernière valeur connue...donc reste à  50%.

Ce qui est étrange aussi c'est que le HC2 ne voit pas ce capteur comme "mort" (même après 24h et reboot)

 

A suivre ...

Posté(e)

Effectivement sans batterie, il ne pourra jamais t'envoyer son état.

N'as-tu pas coché par mégarde "Ne pas marquer comme mort" ?

Posté(e)

Ce qui est bizarre, c'est que même le script ne le voit pas  mort. J'ai repris ta structure et fait le module suivant :


-- ------------------- DEVICES SETTINGS ---------------------
local userID = 2;	 		-- User ID (email used to notify) 2 = admin
local SmartPhone = 33;		-- SmartPhone
local Max_Node = 350; 		-- List of nodes you want to check
local dtLog = os.date(); 	-- Datation 
 
local modules = {}

 
-- Fonction Printlog -----------------
function Printlog(message)
  fibaro:debug(message)
  fibaro:log(message)
end

-- Fonction comparaison -----------------
function comp(w1,w2)
	return tonumber(w1[1]) < tonumber(w2[1])
end

-- ---------------- START ENGINE LOOP PROCESS ------------------
Printlog("Zwave script started at " .. dtLog);
fibaro:sleep(500);

-- Analyse du réseau Zwave --

for id = 1, 5 do --RAZ Affichage des 5 premiers affichages
	fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..id..".value", "RAS") 
end


for id = 1, Max_Node do
 
  if (string.find(fibaro:getValue(id, 'dead'), "1" )) then       -- dead node found
    table.insert(modules, {id, fibaro:getName(id) .. " (" .. id .. ")"})
    fibaro:debug("Le device : "..id.." est taggé comme mort");

    local name = fibaro:getName(id);
    local room = fibaro:getRoomNameByDeviceID(id);
    local message = dtLog .. "[status] Le device (" .. name .. " ID#" .. id .. " dans la pièce [" .. room .. "]) est taggé comme noeud mort." 
      -- try to wakeUp device
      	fibaro:wakeUpDeadDevice(id);
    	fibaro:sleep(1000);
      -- send mail & PUSH
        fibaro:call(userID, "sendEmail", "Information Zwave - Noeuds morts", message);
     --   fibaro:call(SmartPhone, "sendPush", "Information Zwave - Noeuds morts "..message);
      -- Affichage
        fibaro:call(fibaro:getSelfId(), "setProperty", "ui.status.value", "Dead node found");
        Printlog(message)
    end -- end dead node found
  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])
    	end
  	)
end

fibaro:call(userID, "sendEmail", "Information HC2 - Test Zwave réalisé ", dtLog);
fibaro:call(SmartPhone, "sendPush", "Information HC2 - Test Zwave réalisé le "..dtLog);
Printlog("Zwave script done the " .. dtLog);

Posté(e)

Ben si ton module n'apparait pas comme "Dead" à  l'écran, c'est qu'il n'est pas notifié comme "Dead" dans la base de données de ta HC2.

 

Ton script ne verra donc rien, puisqu'il interroge la base uniquement.

 

Il serait intéressant de connaitre l'intervalle de réveille et de le comparer ... pourrais-tu essayer ce code :

local id = 16

local modifSensor = fibaro:getModificationTime(tonumber(id), "valueSensor")
local modifValue = fibaro:getModificationTime(tonumber(id), "value")
local wakeup = os.time()-fibaro:getValue(tonumber(id), "wakeUpTime")

local recent = math.max(modifSensor, modifValue)
fibaro:debug(os.date("%c", recent))
fibaro:debug(os.date("%c", wakeup))

if (recent > wakeup) then
	fibaro:debug(fibaro:getName(id) .. " est en vie")
else
	fibaro:debug(fibaro:getName(id) .. " est probablement mort")    	
end

Posté(e)

Steven,

 

Effectivement, ton petit code remonte bien que le capteur est "probablement mort"  :) MAIS le capteur n'ayant plus de piles depuis le 27/08 à  18h le débug ci-dessous reste étrange

[DEBUG] 09:12:18: 1409375018
[DEBUG] 09:12:18: 1409204558
[DEBUG] 09:12:18: 1409447538
[DEBUG] 09:12:18: Sat Aug 30 07:03:38 2014
[DEBUG] 09:12:18: Sun Aug 31 03:12:18 2014
[DEBUG] 09:12:18: Smoke_Sensor est probablement mort

Là , je crois que c'est le HC2 qui n'ayant plus de communication avec le capteur, ne remets pas les données à  jour (ce qui n'est pas le cas pour d'autres capteurs)

Posté(e)

Désolé...résurrection  :) même sans pile ...c'est un capteur mutant  :D

[DEBUG] 09:31:54: 1409470189
[DEBUG] 09:31:54: 1409204558
[DEBUG] 09:31:54: 1409448714
[DEBUG] 09:31:54: Sun Aug 31 09:29:49 2014
[DEBUG] 09:31:54: Sun Aug 31 03:31:54 2014
[DEBUG] 09:31:54: Smoke_Sensor est en vie

Il est cette fois noté comme mort dans l'interface Fibaro  (c'est déjà  bien ;)) mais le script le voit "vivant".

 

Je crois que c'est le moment de remettre la pile ... et d'attendre la V4 pour voir s'il la gestion du Zwave s'est améliorée !!

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