Aller au contenu

Messages recommandés

Posté(e)

Je vais essayer d'expliquer simplement mon problème.

Je viens d'installer une IPX800 dans mon garage qui a sur sa sortie relais01 un éclairage extérieur de branché. Ce relais est commandé par un bouton poussoir branché sur l'entrée In02. Donc si je résume, j'appuie ça s'allume, je rappuie ça s'éteint - simple comme bonjour.

D'un autre côté j'ai aussi un éclairage extérieur que j'allume avec un FGD de la maison, associé avec son bouton poussoir.

 

Ce que je souhaite faire c'est que lorsque j'allume/éteint à  partir du FGD, ça allume/éteint le relais01 et lorsque j'allume/éteint avec le In02 ça m'allume/eteint le FGD. En gros je voudrais que les 2 s'allument et s'éteignent en même temps, quelque soit l'inter utilisé.

 

Est-ce que vous auriez un truc simple en tête.

 

Perso, j'avais pensé au push dans le sens IPX800 > HC2 > FGD pour mettre à  On ou Off, c'est simple et ça doit marcher, mais dans l'autre sens ?

Posté(e)

En ce qui me concerne, j'irais vers une Variable Globale prédéfinie avec des états ON et OFF + uns scène qui se déclenche sur modification de cette variable.

Après bah tu sais dans les 2 cas mettre àjour la variable et dans la scène qui se déclenchera, tu sais si tu dois allumer/éteindre le FGD ou le relais de ton IPX.

Ca te parle ?

Posté(e)

Oui ça me parle, mais je voulais éviter le coup de la VG et scène. Je cherchais un truc un peu plus direct, genre association, push ou autre...

Posté(e)

A mon avis, tu seras obligé de passer par une scène pour pouvoir faire du HC2 -> IPX, je ne vois rien de plus direct de faisable ... et encore tu as de la chance, car en 4.x tu peux faire de l'HTTP dans une scène sinon cela aura été Scène + Module Virtuel :)

Posté(e)

Je mettrais donc ceci dans une scène et je changerais l'IP de mon IPX et le déclencheur (id de mon FGD) XXXXXXXXXXX value 
 

--[[
%% properties
XXXXXXXXXXXXXXXXXX value
%% globals
--]]

-- ===========================
-- Paramètrage
-- ===========================
local ipx_ip = "192.x.x.x"
local ipx_relay = "1"
-- ===========================
-- Fin Paramètrage
-- ===========================

local on_off = "1" -- allumé
if fibaro:getValue((tonumber(fibaro:getSourceTrigger["deviceID"])), "value") == "0" then
	on_off = "0" --- éteint
end

local http = net.HTTPClient()
http:request("http://"..ipx_ip .."/preset.htm?set"..ipx_relay.."="..on_off, {
	options = {
		method = 'GET'
	},
	success = function(response) fibaro:debug("OK") end,
	error = function(err) fibaro:debug("Error: " ..err) end
})

Bien évidemment ... j'ai rien testé car pas du tout dans ce genre de configuration.

Posté(e)

Ah oui, tu penses qu'il n'y a rien de plus simple ?? J'avais commencé avec le coup du VD aussi. Je voudrais pas qu'il y ait de conflit entre les 2 inters.

 

Et du côté IPX je mets un push vers cette scène sur ouverture/fermeture du relais ou sur appui du bouton poussoir... ?

Posté(e)

Ouais, au tourne en rond je suis d'accord, c'est mon inquiétude aussi mais le bouton est un bouton poussoir, un appui peut faire du On et du Off. Donc mettre le push que sur On c'est pas possible.

Ou alors faut que je push sur la scène et que je gère tout ça dedans.

Posté(e)

Alors voici un script qui POURRAIT répondre à  tes besoin.

 

Il peut donc être déclenché par ton FGD ET par un PUSH car on test le type de déclenchement. En cas de déclenchement par le PUSH, on autorise uniquement 1 seul scénario à  la fois. On casse ainsi volontairement la boucle décrite dans le post précédent. Le push lance le scénario qui allume le FGD qui lui ne peut plus lancer ce scénario car il est déjà  en cours.

 

Il est composé de 2 fonctions :

  1. Switch le relay de ton IPX
  2. Cherche l'état de ton IPX et modifie l'état de ton FDG en conséquence.

--[[
%% properties
XXXXXXXXXXXXXXXXXX value
%% globals
--]]
 
-- ===========================
-- Paramètrage
-- ===========================
local ipx_ip = "192.x.x.x"
local ipx_relay = "1"
local fgd_id = XXXXXXXXXX
-- ===========================
-- Fin Paramètrage
-- ===========================


-- =============================================
-- On switch le relay de l'IPX en fonction du FGD
-- =============================================
function switchRelay(OnOrOff)
	local http = net.HTTPClient()
	http:request("http://"..ipx_ip .."/preset.htm?set"..ipx_relay.."="..OnOrOff, {
		options = {
			method = 'GET'
		},
		success = function(response) fibaro:debug("OK") end,
		error = function(err) fibaro:debug("Error: " ..err) end
	})
end


-- =============================================
-- On vérifie l'état du relay et allumer/éteint le FGD 
-- =============================================
function getRelay()
	local status = ""
	-- Etat du relai ---
	local http = net.HTTPClient()
	http:request("http://"..ipx_ip .."/api/xdevices.json?cmd=20", {
		options = {
			method = 'GET'
		},
		success = function(response) 
			string.gsub(response, "OUT"..ipx_relay.."\":(%d+)", function(d) status = d end) 
			if (status == "1") then
				fibaro:call(fgd_id, "turnOn")
			else
				fibaro:call(fgd_id, "turnOff")
			end
		end,
		error = function(err) fibaro:debug("Error: " ..err) end
	})
end


local source = fibaro:getSourceTrigger()

if (source["type"] == "property") then
	-- =============================================
	-- Déclenché par une modification survenue sur le FGD
	-- On switch le relay de l'IPX en fonction du FGD
	-- =============================================
	if fibaro:getValue(fgd_id, "value") == "0" then
		switchRelay("0")
	else
		switchRelay("1")
	end
elseif (source["type"] == "other") then
	-- =============================================
	-- Déclenché par une pression du bouton branché sur l'IPX
	-- On vérifie l'état du relay et allumer/éteint le FGD 
	-- =============================================
	if (fibaro:countScenes() == 1) then
		getRelay()
	end
end

.

Comme d'habitude, c'est à  tester  ;)

Posté(e)

Ok, dès que j'ai le temps je testor ça... mais punaise c'est quand même une usine àgaz pour un truc qui parait simple au départ.

Posté(e)

Bon après l'installation électrique effectuée cet aprem, je viens de testor. Et j'ai ça comme message d'erreur : 

[ERROR] 21:12:03: LUA error: /opt/fibaro/scenes/107.lua:45: bad argument #1 to 'gsub' (string expected, got table)
Posté(e)

C'est normal il manque tu JSON Decode àpriori pour aller chercher la bonne valeur dans le tableau JSON.

Il faut que tu insère ça avant la ligne 47 je pense.

Posté(e)

Nope pas besoin, c'est juste qu'il a oublié .data sur la ligne :

string.gsub(response.data, "OUT"..ipx_relay.."\":(%d+)", function(d) status = d end)
  • Upvote 1
Posté(e)

REX : l'ensemble est désormais fonctionnel, et les réponses sont rapides.

 

Maintenant est-ce qu'il serait possible de faire la même chose mais en protégeant l'IPX avec login/pass. Pour le moment j'en ai pas mis pour éviter les déboire de connexion mais c'est pas sécure... surtout quand ça ouvre son portail et sa porte de garage :)

Posté(e)

Bonsoir à  tous,

 

Je viens de lire avec attention le sujet, quelqu’un aurait un plan physique du branchement ?

 

Je reçois mon ipx800v3 demain et j'aimerai avant toute chose le tester sur une planche de bois en mode production avec un FGD211 et une douille à  led.

 

La chose est que je vois pas comment trop brancher ca :(

 

Merci

Posté(e)

Hein ?

Pour résumer, j'ai mon Ipx800 dans mon garage et j'ai une lumière sur le relais 1. Dans la maison j'ai un FGD qui allume une autre lumière extérieure. Moi ce que je voulais c'est associer les 2 lumières : lorsque j'allume le FGD, ça allume le relais1 et inversement.

Posté(e)

Tu as des commandes push dans chaque relais de l'IPX. Tu renseigne donc api/.......turnOn.

Puis tu fais pareil dans le HC 2, il y a 1 virtual device pour l'IPX sur le forum.

Ensuite, soit par une scene pour finaliser ta programmation, soit en assignation directe.

Voilou

  • 2 semaines après...
Posté(e)

Bonjour, savez-vous si il est possible de faire des requêtes HTTP authentifiées par login/mdp dans des scènes avec le code fourni au dessus (net.HTTPClient) ?

J'utilise setBasicAuthentication dans des VD avec FHttp mais comment faire dans ce cas dans une scène.

Une option particulière à  positionner ?

Merci d'avance. 

×
×
  • Créer...