Aller au contenu

Module Virtuel \ Phase De La Journée


Nvince76

Recommended Posts

un petit bout de code pour créer les VGs automatiquement ... (merci àLazer)

--Creation des VGs
if not VG then
	VG = {
		['Day_Phase_Nuit']   = {['default']='2300'         , ['enum']={}},
		['Day_Phase_Num']    = {['default']=''             , ['enum']={}},
		['Day_Phase']        = {['default']='0 - Erreur'   , ['enum']={"0 - Erreur","1 - Aube","2 - Aurore","3 - Matin","4 - Apres-Midi","5 - Crepuscule","6 - Soir","7 - Nuit"}},
	}
	function CreateVG(varName, varValue, varEnum)
		local isEnum = (#varEnum > 0) and 1 or 0
		local HC2 = Net.FHttp("127.0.0.1", 11111)
		local payload = '{"name":"'..varName..'","isEnum":'..isEnum..',"value":"'..(varValue or "")..'"}'
		local response, status, errorCode = HC2:POST("/api/globalVariables/"..varName, payload)
		if tonumber(errorCode) == 0 and (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then
			fibaro:debug('Global variable "'..varName..'" created')
			if isEnum > 0 then
				local payload = '{"name":"'..varName..'","isEnum":true,"enumValues":'..json.encode(varEnum)..'}'
				local response, status, errorCode = HC2:PUT("/api/globalVariables/"..varName, payload)
				if tonumber(errorCode) == 0 and (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then
					fibaro:debug('Global variable "'..varName..'" modified with enum values')
				else
					fibaro:debug('<span style="display:inline;color:red;">Error : Can not modify enum global variable, errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>')
				end
			end
		else
			fibaro:debug('<span style="display:inline;color:red;">Error : Can not create global variable, errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>')
		end
		HC2 = nil
	end
	local HC2 = Net.FHttp("127.0.0.1", 11111)
	for vg, param in pairs(VG) do
		fibaro:debug("Check if global variable '"..vg.."' exists")
		local response, status, errorCode = HC2:GET("/api/globalVariables/"..vg)
		if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then
			local jsonTable = json.decode(response)
			if not jsonTable.name or jsonTable.name ~= vg then
				fibaro:debug('Response OK but global variable "'..vg..'" does not exist...')
				CreateVG(vg, param['default'], param['enum'])
			end
		else
			fibaro:debug('Global variable "'..vg..'" does not exist...')
			CreateVG(vg, param['default'], param['enum'])
		end
	end
end -- if not VG

Lien vers le commentaire
Partager sur d’autres sites

perso ce que j'ai fait

- j'ai mis à  jour tous les VD que j'utilise qui demande des VGs avec ce code - comme ca ils sont autonomes.

- j'ai une autre VDs qui creera tous les VGs que j'utilise dans ma HC2 en cas de recovery 

Lien vers le commentaire
Partager sur d’autres sites

petit retour donc,,,,, truc bizarre, ca marcher toujours pas,,,,en etudiant le script, j'ai trouvé un truc,(mais surement perso je sais pas)

 

sur la ligne 159 (ou proche, puisque j'ai rajouter %% events (v4.062b),donc qqes ligne en plus) : if ((heure_courante >= 1200) and (Heure_Courante >= Soir) IL etait attacher : (Heure_Soir>=Soir)  et du coup ca marche, plus d'erreur,,,,,,vraiment bizarre puisque j'ai integré ton module hier. (et que je pense que vous n'avez pas d'erreur) ????

Lien vers le commentaire
Partager sur d’autres sites

oui, d'autant plus bizarre modifié comme toi ou non, je n'ai pas d'erreur.

J'aime bien connaitre les causes des non fonctionnement, mais le principal est que cela fonctionne àprésent pour toi

Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...

Salut Nvince

Merci pour ton module que j'utilise tres bien !

Une information : cet hiver le module passer de 4 à6 ( sans passer par 5)

Depuis avril ( printemps ) le module passé de 4 à5 (20h30 environ) et 6 vers 21h30 .

Je trouve que 6 se déclenche tard (fait déjànuit).

Aurais tu une info !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bonjour Philippe, 

 

Le passage à  '6 - Soir' est fixé en dur dans le code (ligne 76) comme étant Heure de Crépuscule + 1 Heure (d'où le fonctionnement depuis avril) 

local Soir = Crepuscule + 0100 ;

Le passage à  5 est basé sur le trigger  Heure du Crepuscule fourni par Fibaro.

Le module contient une option de détection automatique de la phase '6 - Soir' à  paramétrer selon le besoin et ton installation (ligne 59 à  61)

-- Start Manual Input 
    local Luminosite_ID = 340
    local Luminosite_Trip = 400
    local Luminosite_Option = 0
    local First_Icon_ID = 229		        -- Icone d'erreur
    local Loop_Timer = 0			-- en seconde
-- End Manual Input  
 
Luminosite_ID        :   L'ID du/des capteur de luminosité 
Luminosite_Trip      :   La valeur de la luminosité detectant un passage automatique NUIT>AUBE et CREPUSCULE>SOIR
Luminosite_Option :   La valeur d'activation de la prise en compte ou non de la luminosité (0 = Non, 1 = Oui)
 
 
Le fonctionnement que tu as observé cet Hiver peut être dà» à  un mauvais paramétrage de cette option ou un mauvais fonctionnement de ton capteur de luminosité.
Si la luminosité mesurée par ton detecteur  passe sous le seuil défini avant l'heure officielle du Crépuscule avancée par la box Fibaro, tu passeras directement de 4 à  6
Lien vers le commentaire
Partager sur d’autres sites

  • 8 months later...

Je suis de l'avis de pepite, le format de tes icones ne doit pas être bon (en taille ou en extension)

Il y a longtemps que j'ai travaillé sur le sujet, mais normalement quand tu importes le VD, les icones associées sont dans le package.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...