Aller au contenu

Messages recommandés

  • 1 mois après...
Posté(e)

Bonjour,

J'espère que je suis dans la bonne section !

Je souhaite piloter automatiquement, avec mon HC2, mon extracteur d'air de la salle de bain en fonction de l'humidité.

Pour la mesure de l'humidité j'ai un capteur ST814, qui est bien paramétré dans mon HC2.

Pour piloter les deux vitesses de l'extracteur, j'ai branché les deux fils correspondants sur deux sorties de l'IPX800. 

J'arrive à  activer l'une ou l'autre des vitesses à  partir de l'IPX.

Maintenant, je souhaiterai que les vitesses se mettent en marche en fonction de deux seuils d'hygrométrie, mais je ne sais pas comment paramétrer cela dans le HC2, sachant que c'est l'une ou l'autre des vitesses, et qu'il faut s'assurer de ne pas lancer les deux vitesses en même temps.

Je suis en version 3.591 pour le HC2 et en version 3.05.38 pour l'IPX.

Merci d'avance.

Posté(e)

Tu peux déjà  piloter ton IPX depuis ta HC2 ?

 

Si non, je te propose d'importer ce module virtuel et de remplacer l'adresse IP par celle de ton IPX et le port (par défaut 9870).

 

En haut du module, tu verras des carrés :

 

525279ipx.png

 

Si le carré est plein c'est que le relais est activé. Dans le cas de l'image, on voit que seul le relais 2 est sur ON.

 

Avec cela, tu pourras faire un ON ou OFF sur les 8 relais principaux de ton IPX.

 

Après, tu n'as plus qu'à  créer tes scènes comme tu le souhaite.

IPX800_Relais.vfib

  • Upvote 4
Posté(e)

merci pour le module virtuel, il fonctionne bien.

où puis-je récupérer l'icone de l'IPX ?

maintenant, pour ma scène qui va lancer la vitesse 1 ou la vitesse 2, je ne vois pas comment la faire, sachant que je suppose qu'il faut utiliser une variable globale pour suivre l'état de l'extracteur....

Posté(e)

je continue à  chercher de mon côté et j'ai deux questions pour la scène : 

- faut-il 3 scènes différentes ? une pour éteindre l'extracteur si l'humidité est < 70%, une pour allumer la vitesse 1 si 70 =< HR < 80, et une pour allumer la vitesse 2 si HR >=80, ou bien peut-on faire une seule scène ?

- pour comparer l'humidité, je prends bien le module Hygro de ma salle de bain, le comparateur "<", et dans le bloc vert je mets "ON"  "70" et "0" dans la case rouge ?

Posté(e)

Click sur l'image avant de l'enregistrer.

 

 

Tu es sà»r que tu veux faire cela en mode bloc ?

 

En LUA cela serait assez simple

--[[
%% autostart
%% properties
id_hydro value
%% globals
--]]

local id_hydro = XXX
local id_vd_ipx = XXX
local btn_relay_vitesse1_ON = XXX
local btn_relay_vitesse1_OFF = XXX
local btn_relay_vitesse2_ON = XXX
local btn_relay_vitesse2_OFF = XXX


local hygrometrie = tonumber(fibaro:getValue(id_hydro, "value"))

if (hygrometrie < 70) then

   --- Si moins de 70% on eteint tous
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse2_OFF)
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse1_OFF)

else if (hygrometrie < 80 then

   --- plus de 70 mais moins de 80%, vitesse 1
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse2_OFF)
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse1_ON)

else

   --- plus de 80%, à  fond les boulons
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse1_ON)
   fibaro:call(id_vd_ipx, "pressButton", btn_relay_vitesse2_ON)

end

En mode bloc, je suis très très vite perdu quand il y a trop de condition.

post-339-0-76462700-1413212799_thumb.png

Posté(e)

merci, effectivement en mode bloc je ne m'en sortais pas...

ton code lua fonctionne, j'ai juste rajouté une parenthèse et un end, mais je n'aurai jamais pu l'écrire tout seul.

Posté(e)

La scène pour l'extracteur fonctionne en manuel mais pas en automatique : lorsque le premier seuil hygrometrique est atteint, l'extracteur ne se met pas en route, si je lance la scène manuellement, il se met bien en marche. Puis si l'hygrométrie redescend en dessous du seuil, l'extracteur ne s'arrête pas, il faut que je lance ànouveau la scène manuellement pour l'arrêter.

Posté(e)

que faut-il changer en ligne 3 %% autostart ?

(( je suis vraiment désolé de poser ce genre de questions, je suis complètement débutant, j'ai changé là  où tu avais mis XXX, mais je ne sais pas qu'il faut changer d'autres choses !!!)))

faut-il également changer quelque chose en ligne 5 id_hydro value ?

merci d'avance.

Posté(e)

En effet, c'est la 5 ;) 

 

id_hydro value doit être remplacé par l'identifiant de ton capteur suivis de value ... si ton capteur à  l'ID 123 cela donne

 

123 value

 

 

Voilà .

 

En faisant ainsi, tu dis au scénario de se déclencher à  chaque changement de valeur de ton capteur.

Posté(e)

J'ai un autre souci : j'ai branché un capteur filaire d'ouverture de fenêtre sur mon entrée digitale 1 de mon ipx, puis j'ai créé un périphérique virtuel pour afficher l'état de la fenêtre dans mon HC2 (oui, BenjyNet, je sais, c'est naze ;) ).

Dans le main loop, j'ai mis ceci :

 
fibaro:sleep(2000)
-- récupération état entrée digitale 1 de l'IPX1
IPX1 = Net.FHttp("xxx.xxx.xxx.xxx")
response = IPX1:GET("/api/xdevices.json?cmd=10")
 
response = json.decode(response)
 
fibaro:setGlobal("Ipx1Input1", response.IN1)
 
-- récupération Id du périphérique virtuel
vDeviceID = fibaro:getSelfId(); 
 
-- initialisation variable globale FenetreSdbRdc
if (fibaro:getGlobalValue ("Ipx1Input1") == "1") 
  then fibaro:setGlobal("FenetreSdbRdc", "Fermée")
  elseif (fibaro:getGlobalValue ("Ipx1Input1") == "0") 
  then fibaro:setGlobal("FenetreSdbRdc", "Ouverte")
  else fibaro:setGlobal("FenetreSdbRdc", "Erreur")
end  
 
-- initialisation valeur dans la barre d'état du périphérique virtuel
fibaro:log(fibaro:getGlobalValue("FenetreSdbRdc").." ")
 
-- changement de l'icone du périphérique virtuel en fonction de l'état
if (fibaro:getGlobalValue ("Ipx1Input1") == "1") 
  then fibaro:call(vDeviceID, "setProperty", "currentIcon", "1000") 
  elseif (fibaro:getGlobalValue ("Ipx1Input1") == "0") 
  then fibaro:call(vDeviceID, "setProperty", "currentIcon", "1001")
  else fibaro:call(vDeviceID, "setProperty", "currentIcon", "device_dead0")
end
 

Dés que je redémarre le HC2, tout fonctionne bien post-163-0-27683700-1413442862_thumb.jpg post-163-0-07527000-1413442855_thumb.jpg

Au bout, d'une heure ou deux, cela ne fonctionne plus dans le HC2 post-163-0-85671800-1413443619_thumb.jpg , alors que l'état de l'entrée dans l'IPX800 change bien.

Je suis obligé de redémarrer le HC2 pour que cela refonctionne pendant un heure ou deux...

Posté(e)

Il faut déporter le code de ton main loop dans un bouton et dans le main loop tu mets :

--fibaro:sleep(2000)
fibaro:call(fibaro:getSelfId(), "pressButton", <numéro du bouton>)

Le soucis est qu'il y a un bug avec JSON dans le main loop et que cela le fait planté après un moment. En déportant le code dans un bouton et faisant que le main loop "appuie" sur le bouton toutes les X secondes, le problème disparait.

C'est un bug connu.

Posté(e)

j'ai déporté le code dans un bouton, le seul petit souci "esthétique", c'est que le bouton "clignote" toutes les X secondes

post-163-0-98434900-1413446789_thumb.jpg  post-163-0-67638300-1413446795_thumb.jpg

mais je préfère cela plutôt que cela ne fonctionne pas

merci

 

ps: j'espère que la V4 et les plugins vont solutionner cela (clin d'oeil à  BenjyNet)

Posté(e)

j'ai déporté le code dans un bouton, le seul petit souci "esthétique", c'est que le bouton "clignote" toutes les X secondes

post-163-0-98434900-1413446789_thumb.jpg  post-163-0-67638300-1413446795_thumb.jpg

mais je préfère cela plutôt que cela ne fonctionne pas

merci

 

ps: j'espère que la V4 et les plugins vont solutionner cela (clin d'oeil à  BenjyNet)

×
×
  • Créer...