Pour ceux que ça intéresse :
Les QA prennent tous leurs sens avec un IPX, c'est génial !! je partage :
Principe ultra simple :
Le QA permet de piloter la sortie de l'IPX.
Le retour d'état de la sortie se fait via les messages PUSH de l'IPX.
DANS LA HC3 :
- il faut créer un utilisateur spécifique pour que l'IPX puisse se connecter à la HC3 (et prendre autre chose que le super user...)
- il faut créer un QA avec comme type rôle Binary Swicth.
- vous choisissez les icones qui vont bien, les différents réglages de notifications, la pièce, ...
- Vous lui donnez un type (lights, sprinkler, ...)
- vous créez 3 variables dans le QA :
IP = adresse IP de l'IPX
password = user:password encodé en base 64 (celui permettant de se connecter sur l'IPX)
IpxOutNumber=N° de la sortie que vous voulez qu'il pilote
- vous créez un label avec comme nom "LBL_State" (permettra de récupérer les éventuels messages d'erreur)
et dans le code vous insérez cela :
function QuickApp:onInit()
self:debug("onInit")
end
-------------------------------------------------------------------------------------
-- Méthodes pouvant être appelées de partout
-------------------------------------------------------------------------------------
function QuickApp:turnOn()
self:Switch(self:getVariable("IpxOutNumber"),1)
end
function QuickApp:turnOff()
self:Switch(self:getVariable("IpxOutNumber"),0)
end
-------------------------------------------------------------------------------------
-- Function pour actionner la sortie défini dans la variable
-------------------------------------------------------------------------------------
function QuickApp:Switch(Num,State)
self.http = net.HTTPClient({timeout=3000})
self.http:request("http://"..self:getVariable("IP").."/preset.htm?set"..Num.."="..State,
{
options = {
headers = {['Authorization']='Basic '..self:getVariable("password")},
method = 'GET'
},
success = function(response) self:updateView("LBL_State", "text", tostring(response.data)) end,
error = function(err) self:updateView("LBL_State", "text", tostring(err)) end
})
end
-------------------------------------------------------------------------------------
-- Function pour réceptionner le retour d'état de la sortie
-------------------------------------------------------------------------------------
function QuickApp:ReceiveState(status)
self:debug(status)
if status == 1 then
self:updateProperty("value", true)
else
self:updateProperty("value", false)
end
end
Dans l'IPX :
les messages push de chaque sortie seront sous la forme : /api/callAction?deviceID=284&name=ReceiveState&arg1=1
en rouge = adresse IP de la HC3
en vert = le user:mot_de_passe (en clair) pour se connecter à la HC3 (avec l'utilisateur créé plus haut)
en jaune = l'ID du QA que vous avez créé
il ne faut pas oublier, dans la gestion des accès de la HC3, d'autoriser le user, créé spécifiquement plus haut, à utiliser le QA !!!
pour piloter le QA depuis une scène en LUA :
--pour le pilotage
fibaro.call(284, "turnOn")
--pour connaitre son status
fibaro.getValue(284, "value")
Divers :
Pour créé rapidement d'autres QA, il suffit d'exporter le QA qui vient d'être créé (fichier .fqa) et de l'importer pour passer à une autre sortie.
Il faudra alors, modifier la variable "IpxOutNumber" du QA.
Attention de penser au droits d'accès pour ce nouveau QA du coup...
Fichier DEMO :
Demo_IPX.fqa
Cela m'a été demandé en MP, donc je partage mon QA IPX (version Parent/Child) (POUR UN IPX version 3 et non version 4 ou 5) .
Différent de celui présenté en début de ce topic...
Edit du 03/08/2022 :
il faut que que le firmware de l'IPX soit minium en 3.05.74B et le site en 3.05.74
contacter GCE pour la mise à jour.
Fichier :
IPX.fqa
Je fais pas de tutos complet car pas le temps...
Mais très rapide description pour se lancer, après je vous laisse adapter à vos besoins.
1. il faut activer cette option dans l'IPX :
de cette manière à chaque changement d'une valeur dans l'IPX, une trame est envoyée à la HC3.
2. Renseigner les 3 variables dans le QA (onglet variable).
l'IP de l'IPX, le password (en clair - je sais... no comment... ) et le port (9898)
3. Renseigner la variable "Liste" dans le code :
selon vos entrées/sorties de l'IPX.
_Name = le nom de votre QA Child
_var = le N° entrée ou sortie dans l'IPX
_varName = suivant si c'est une entrée ou une sortie : entrée = IPX_INPUT ; sortie = IPX_OUTPUT
local Liste = {
{_class = "IPX_OUT", _name = "Eclairage NORD", _type = "com.fibaro.binarySwitch", _var = 3, _varName = "IPX_OUTPUT", _icon = 1068},
{_class = "IPX_OUT", _name = "Eclairage SUD", _type = "com.fibaro.binarySwitch", _var = 4, _varName = "IPX_OUTPUT", _icon = 1068},
{_class = "IPX_OUT", _name = "Eclairage OUEST", _type = "com.fibaro.binarySwitch", _var = 5, _varName = "IPX_OUTPUT", _icon = 1068},
{_class = "IPX_OUT", _name = "Eclairage Escalier", _type = "com.fibaro.binarySwitch", _var = 7, _varName = "IPX_OUTPUT", _icon = 1068},
{_class = "IPX_IN", _name = "IN7", _type = "com.fibaro.binarySensor", _var = 7, _varName = "IPX_INPUT", _icon = 1068},
{_class = "IPX_IN", _name = "IN8", _type = "com.fibaro.binarySensor", _var = 8, _varName = "IPX_INPUT", _icon = 1068},
}
Ici je n'utilise que 2 type de QA Child (binarySwitch et binarySensor)
S'il en fallait d'autres, à vous de modifier le QA Parent en conséquence.
Le numéro de l'icône correspond à mes besoins, je vous laisse donc gérer vos ID d'icones
Le bouton "CreatChild" permet de créer les child listé ci-dessus.
Remarque concernant le compteur :
Je n'utilise qu'un seul compteur, qui n'a pas de QA Child propre à lui.
Je récupère la valeur de ce compteur dans la trame de l'IPX pour l'envoyer à un autre QA totalement indépendant.