fibaro fgdw-001 als Schalter

Hallo zusammen

Ich hab ein Problem mit dem Fibaro fgdw-001 Fensterkontakt.
Meine Jalousiemotoren von Jalousiescout geben leider keine Position zurück und können nur mit den Funktionen hoch, runter, stopp gesteuert werden.
Aus diesem Grund habe ich diese lediglich über einen Relayschalter mit Fibaro verbunden und lasse die Jalousien zeitgesteuert hoch und runter.
Das funktioniert auch tip top.
Nur jetzt ist Sommer und meine Frau lässt die Jalousien am Nachmittag schon runter. Fibaro erkennt das nicht und sendet dann zum Zeitpunkt, an welchem die Jalousien runter gehen sollten, ein Signal. Obwohl sie schon unten sind. Resultat: Die Jalousie fährt hoch, statt unten zu bleiben.
Wenn nun aber die Jalousien schon unten sind, wollte ich mit dem Fensterkontakt an Fibaro mitteilen, dass das Signal nicht mehr gesendet werden muss.
Also sind die Storen unten dann mach nichts.
Sind die Storen oben, dann sende das Signal.
Leider komme ich da mit den Grafischen Szenen nicht weiter.
Vielleicht hat schon mal jemand etwas ähnliches im LUA geschrieben?
um runter fahren, zu unterbinden?

Hallo,

eventuell verstehe ich Dein Problem nicht. Warum steuerst Du Deine Jalousiemotoren mit einem Relais und nicht mit einem Fibaro Roller Shutter? Den die geben nach korrekter Kalibrierung die Position zurück und nicht die Motoren.

Das wär die einfachste Lösung.
Das Problem ist nur, dass die Motoren nur eine Steuerleitung haben und diese nur jeweils mit dem Impuls die Funktion wechselt.

erster Impuls = runter, nächster Impuls = Stopp, nächster Impuls = hoch, nächster Impuls wieder runter usw…
nur über die Funkfernsteuerung werden die Funktionen einzeln angesteuert.

Daher kann ich das ganze leider nicht mit Rollershutter Steuern.
Alle Motoren zu ersetzen wär leider auch wieder ein riesen Aufwand.

Daher dachte ich, ich kann mit dem Fensterkontakt feststellen, wenn die Jalousie unten ist, wenn ich die Szene am Abed starte um die Jalousie nach unten zu lassen.
Sind die Jalousien schon unten,gehen sie dann nämlich wieder hoch.

So ,möchte ich also quasi den Befehl geben: 15 Minuten nach Sonnenuntergang Jalousien Impuls auslösen wenn der Fesnterkontakt nicht geschlossen ist.
So könnte ich mein Problem lösen.

Leider schaff ich das aber nicht und vermute, dass dies nur mit LUA möglich ist.
LUA behersche ich aber leider nicht :frowning:

Daher hoffe ich, es hat schon mal jemand etwas ähnliches gemacht oder hat ne Idee, wie ich das in LUA umsetzen kann.

@rcschoeni

OK, Du hast also Funkmotoren. Das ist natürlich ein Problem. Denke dass ich Dir das in LUA machen kann, aber erst am Wochenende. Sollte kein Problem darstellen.

Wow! Das wär natürlich Hammer jeep.
Zeit ist kein Problem… Ich bin froh, wenn das tatsächlich funktioniert.

Wünsche Dir einen coolen Tag

@rcschoeni
so, ich hoffe Du kannst mit dem Code was anfangen und in Deinem Script verwenden. Es wird im Prinzip nur die Position des Sensor (Auf/Zu) abgefragt.

--[[
%% properties
000 value
%% events
--]]
-- Wenn man das Script bei Änderungen des Sensors Triggern will, dann auch oben
-- im Header die ID bei value eintragen

local sensor = 000-- ID des Tür/Fenstersensors

if (tonumber(fibaro:getValue(sensor, 'value')) == 0)
   then
   print('Rolladen ist geschlossen')
   print('Keine Ansteuerung des Relais notwendig')
else
   print('Rolladen ist noch offen')
   print('Impuls zum Relais schicken')
end

Viel Erfolg!

Hallo Jeep

Super, vielen Dank.
Es läuft schon mal so weit, dass ich die Meldung erhalte dass die Store offen ist oder dass sie geschlossen ist und kein Impuls gesendet werden soll.
Nur wie schick ich das Signal an das Relay?

Wenn ich das unter 000 Value eintrage geschieht nichts.
Auch wenn ich die ID der Szene (Store einschalten) Eintrage passiert nichts.

Vielen Dank für Deine sehr geschätzte Unterstützung und einen schönen Sonntagabend

@rcschoeni
Hi,
hab gedacht Du hast das schon angesteuert. Aber vermutlich mit Blockszene. Wenn man die in LUA umwandelt kann man die Befehle sehen.
Hab mal noch 2 Zeilen eingefügt.

 
--[[
%% properties
000 value
%% events
--]]
-- Wenn man das Script bei Änderungen des Sensors Triggern will, dann auch oben
-- im Header die ID bei value eintragen
 
local sensor = 000 -- ID des Tür/Fenstersensors
local relais = 111 -- ID des Relais
if (tonumber(fibaro:getValue(sensor, 'value')) == 0)
   then
   print('Rolladen ist geschlossen')
   print('Keine Ansteuerung des Relais notwendig')
else
   print('Rolladen ist noch offen')
   print('Impuls zum Relais schicken')
   fibaro:call(relais, 'turnOn')
end
 

Hi Jeep

Super, klappt so, vielen Dank.

Hab gedacht, ich kann das dann in mein bestehendes Script einfügen.
Scheint aber nicht ganz so einfach zu sein…
Das wurde mit Blockszenen erstellt:

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and os.date("%H:%M", os.time()-15*60) == fibaro:getValue(1, "sunsetHour")) )
)
then
	fibaro:call(93, "turnOn");
	setTimeout(function()
		fibaro:call(106, "turnOn");
	end, 200000)
	setTimeout(function()
		fibaro:call(102, "turnOn");
	end, 280000)
	setTimeout(function()
		fibaro:call(112, "turnOn");
	end, 340000)
	setTimeout(function()
		fibaro:call(124, "turnOn");
	end, 405000)
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
	fibaro:call(93, "turnOn");
	setTimeout(function()
		fibaro:call(106, "turnOn");
	end, 200000)
	setTimeout(function()
		fibaro:call(102, "turnOn");
	end, 280000)
	setTimeout(function()
		fibaro:call(112, "turnOn");
	end, 340000)
	setTimeout(function()
		fibaro:call(124, "turnOn");
	end, 405000)
end

end

Ist das relativ einfach möglich oder soll ich vieleicht einfach für die 6 Storen 6 Szenen machen?
Dann wäre es aber super, wenn ich den Faktor Sonnenuntergang noch rein kriegen würde.

Sorry. Aber LUA scheint doch etwas komplizierter als HTML :wink:

Wär super, wenn du mir helfen könntest.

Beste Grüsse und einen schönen Sonntagabend

Roger

@rcschoeni,
Sorry für die späte Antwort. War die letzten beiden Wochen viel unterwegs.
Also 6 Szenen würde ich auf alle Fälle vermeiden, ich denke das Du auch keine 6 Fenstersensoren einsetzen
willst. Wenn Du noch Hilfe benötigst bitte hier melden.
Die Abfrage könnte so aussehen:

 
if ( os.date("%H:%M", os.time()-15*60) == fibaro:getValue(1, "sunsetHour") 
   and tonumber(fibaro:getValue(sensor, 'value')) == 1 ) then
   fibaro:call(93, "turnOn");
   setTimeout(function()
  	fibaro:call(106, "turnOn");
   end, 200000)
  setTimeout(function()
	fibaro:call(102, "turnOn");
  end, 280000)
  setTimeout(function()
	fibaro:call(112, "turnOn");
  end, 340000)
  setTimeout(function()
	fibaro:call(124, "turnOn");
  end, 405000)
end   

Hallo Jeep

Kein Problem… Bin froh um deine Hilfe.
Es ist so, dass ich tatsächlich 5 Fenstersensoren einsetzen möchte.
Deshalb müsste das tonumber(fibaro:getValue(187, 'value')) == 1 ) then
vor die Relay 93, 102, 106, 112, 124. Hab eben probiert, komme aber nicht auf die Lösung.

Vielen Dank für Deine Unterstützung Jepp und einen schönen Sonntag Nachmittag

Grüsse Roger

OK, dann muss man halt für jeden Sensor eine Abfrage machen, ungefähr so:

--[[
%% autostart
%% properties
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
  local currentDate = os.date("*t");
  local startSource = fibaro:getSourceTrigger();
  if ( os.date("%H:%M", os.time()-15*60) == fibaro:getValue(1, "sunsetHour"))
     then
     if tonumber(fibaro:getValue(sensor1, 'value')) == 1 then
     	 fibaro:call(93, "turnOn");
     end
     if tonumber(fibaro:getValue(sensor2, 'value')) == 1 then
	    setTimeout(function()
	      fibaro:call(106, "turnOn");
	    end, 200000)
     end
     if tonumber(fibaro:getValue(sensor3, 'value')) == 1 then 
        setTimeout(function()
		  fibaro:call(102, "turnOn");
	    end, 280000)
     end
     if tonumber(fibaro:getValue(sensor4, 'value')) == 1 then
	    setTimeout(function()
		 fibaro:call(112, "turnOn");
	    end, 340000)
     end
     if tonumber(fibaro:getValue(sensor5, 'value')) == 1 then
	    setTimeout(function()
		  fibaro:call(124, "turnOn");
	    end, 405000)
     end
  end
  setTimeout(tempFunc, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
   tempFunc()
else
  local startSource = fibaro:getSourceTrigger();
  if ( startSource["type"] == "other")
     then
     fibaro:debug('Start geklickt!')
     if tonumber(fibaro:getValue(sensor1, 'value')) == 1 then
    	 fibaro:call(93, "turnOn");
     end
     if tonumber(fibaro:getValue(sensor2, 'value')) == 1 then
        setTimeout(function()
	      fibaro:call(106, "turnOn");
        end, 200000)
     end
     if tonumber(fibaro:getValue(sensor3, 'value')) == 1 then 
        setTimeout(function()
	      fibaro:call(102, "turnOn");
	    end, 280000)
     end
     if tonumber(fibaro:getValue(sensor4, 'value')) == 1 then
	    setTimeout(function()
	      fibaro:call(112, "turnOn");
	    end, 340000)
     end
     if tonumber(fibaro:getValue(sensor5, 'value')) == 1 then
	    setTimeout(function()
	      fibaro:call(124, "turnOn");
	    end, 405000)
     end
  end
end


Musst halt die Werte für sensor1 bis sensor5 ändern. Dadurch dass Du nach jedem Rolladen ein paar Sekunden
Verzögerung eingebaut hast, sieht es ein wenig kompliziert aus. Wenn ich keine Tippfehler reingebracht habe
könnte es so funktionieren.

Wow Jeep, Du bist genial!
Hab es mal testweise laufen lassen und es scheint durchzulaufen.
Dienstag sollten die weiteren Sensoren kommen, dann kann ich den definitiven Test vornehmen.
Vielen, vielen Dank für Deine sehr geschätzte Unterstützung.

Beste Grüsse und gute Nacht

Alles funktioniert einwandfrei und läuft sauber durch.
Hammer! Vielen herzlichen Dank Jeep das ist echt klasse und bringt einen ernormen Mehrkomfort.

Vielen vielen Dank und Guten Nacht, Grüsse, Roger