Hallo Hier meine Aussenbeleuchtungssteuerung.
Tastendruck 1 = 5 min Licht
Tastendruck 2 = Dauerlicht
Tastendruck 3 = Aus
BWM stellt automatisch die jeweiligen Lampen auf 5 min Licht
Der Timer ist ein Nachtriggerbaren-Monoflop (Sorry Timer fängt immer wieder bei Trigger von vorne an).
--Declaration
{
conditions = { {
isTrigger = true,
operator = "match",
property = "cron",
type = "date",
value = { "*", "*", "*", "*", "*", "*" }
}, {
id = 830,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 831,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 835,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 836,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 840,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 841,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
}, {
id = 815,
isTrigger = true,
operator = "==",
property = "value",
type = "device",
value = true
} },
operator = "any"
}
--Aktion
-print("Start Aussenlicht")
--[[
------------------------------------------------------------------------------------
---------------------------------- Aussenlichter -----------------------------------
--------------------------- Gesteuert von Tastendrücken ----------------------------
------------------------------------------------------------------------------------
Wenn die Aussenhelligkeit < 50Lx ist
Wenn es Tag oder Nacht ist
Tastendruch 1 = 5min Licht
Tastendruck 2 = Dauerlicht
Tastendruch 3 = Aus
BWM erzeugt das Gleiche wie der 2 Tastendruck (5min Licht)
Das String-Array speichert die Tastendaten und die Zeiten der Lampe
Z_EG_xxxxxxx = Anzahl der Tastendrücke
T_EG_xxxxxxx = Abgelaufene Zeit in Minuten
So eine Globale Variabel Anlegen
local zaehler_licht =
{
Z_EG_Haustuer,
T_EG_Haustuer,
Z_EG_Garage,
T_EG_Garage,
Z_EG_Seite,
T_EG_Seite,
Z_KG_Seite,
T_KG_Seite,
Z_KG_Wohnzimmer,
T_KG_Wohnzimmer,
Z_KG_Eingang,
T_KG_Eingang,
}
Register der Eingangsmodule müßen folgendermassen gesetzt werden :
FGS-224
R20 = 1 First channel – momentary switch
R21 = 1 Second channel – momentary switch
R150 = 2 First channel – auto OFF
R151 = 2 Second channel – auto OFF
R154 = 0,5 First channel – time parameter for delayed/auto OFF and flashing modes
R155 = 0,5 Second channel – time parameter for delayed/auto OFF and flashing modes
Ohne das funktioniert die Scene nicht wegen der Signalverzögerung
--]]
------------------------------------------------------------------------------------
---------------------------------- Funktion Timer ----------------------------------
------------------------------ Aufruf Timer(Minuten) -------------------------------
------------------------------------------------------------------------------------
function Zeitzaehler(Zaehler)
local zaehler = tonumber(Zaehler)
if zaehler > 0 then
zaehler = zaehler +1
end
return tostring(zaehler)
end -- function Zeitzaehler
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
------------------------- Funktion Tastenlichtsteuerung ----------------------------
------------------------------------------------------------------------------------
function Tastenlicht(id_licht,Dimmer,Min_dimmwert,Zaehler,Timer)
local zaehler = tonumber(Zaehler) -- Tastendruckzähler
local timer = tonumber(Timer) -- Lichttimer
local dimmer = tonumber(Dimmer) -- ist es ein Dimmer
local min_dimmwert = tonumber(Min_dimmwert) -- minimale Helligkeit im Dunkeln
--print("id_licht = ", id_licht," rein zaehler = ",zaehler,"Timer = ",timer,"Tag = ",tag," Nacht = ",nacht," LUX = ",lux_messer)
if zaehler >= 0 then
if zaehler >= 4 then -- Dauerlicht aus
--print("ID = ",id_licht," zaehler = 4 !")
zaehler = 0
timer = 0
end
if zaehler == 3 then -- Dauerlicht
--print("ID = ",id_licht," zaehler = 3 !")
fibaro.call(id_licht, "turnOn") -- Licht an
fibaro.call(id_licht, "setValue", 100) -- Wenn Dimmer dann 100%
end
if zaehler == 2 then -- warten auf Lichttimer Ende
--print("ID = ",id_licht," zaehler = 2 !","Timer =",timer)
if tonumber(fibaro.getValue(id_licht, "value")) <= 1 then
fibaro.call(id_licht, "turnOn") -- Licht an
if dimmer == 1 then
fibaro.call(id_licht, "setValue", 100) -- Wenn Dimmer dann 100%
end
end
if timer == 3 then -- Licht kann aus 2 min sind um
fibaro.call(id_licht, "turnOff") -- Licht aus
if dimmer == 1 then
fibaro.call(id_licht, "setValue", min_dimmwert) -- Wenn Dimmer dann min%
end
zaehler = 0
timer = 0
end
end
if zaehler == 1 then -- Lichttimer start
--print("ID = ",id_licht," zaehler = 1 !")
if tonumber(fibaro.getValue(id_licht, "value")) <= 1 then
fibaro.call(id_licht, "turnOn") -- Licht an
if dimmer == 1 then
fibaro.call(id_licht, "setValue", 100) -- Wenn Dimmer dann 100%
end
end
zaehler = 2
timer = 1
end
if zaehler == 0 then -- Lichttimer start
--print("ID = ",id_licht," zaehler = 0 !")
end
end
if lux_messer > 50 and zaehler >= 0 then -- bei 50 Lux
fibaro.call(id_licht, "turnOff") -- Licht aus
if dimmer == 1 then
fibaro.call(id_licht, "setValue", 0) -- Wenn Dimmer dann 0%
end
zaehler = -1
timer = 0
end
if lux_messer < 50 and zaehler == -1 then
if dimmer == 1 then
fibaro.call(id_licht, "turnOn") -- Licht an
fibaro.call(id_licht, "setValue", min_dimmwert) -- Wenn Dimmer min Helligkeit
end
zaehler = 0
timer = 0
end
return tostring(zaehler),tostring(timer)
end -- function Tastenlicht
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-------------------------------------- MAIN ----------------------------------------
------------------------------------------------------------------------------------
-- Geräte-ID´s
-- Eingänge
local taster_EG_Haustuer = 830
local taster_EG_Garage = 835
local taster_KG_Wohnzimmer = 840
local taster_KG_Eingang = 815
local bwm_Strassenseite = 831
local bwm_Seite = 836
local bwm_Gartenzeite = 841
local lux_Gartenhaus = 765
-- Ausgänge
local licht_EG_Haustuer = 850
local licht_EG_Garage = 855
local licht_EG_Seite = 860
local licht_KG_Seite = 860
local licht_KG_Wohnzimmer = 865
local licht_KG_Eingang = 927
-- Globale nach Localen Variablen übertragen
tag = tonumber(fibaro.getGlobalVariable("Tag"))
--tag = 0
nacht = tonumber(fibaro.getGlobalVariable("Nacht"))
--nacht = 1
data = fibaro.getGlobalVariable("Zaehler_Licht")
zaehler_licht = json.decode(data)
lux_messer = tonumber(fibaro.getGlobalVariable("LUX_Messer"))
--lux_messer = 30
-- Anzeige was hat das Programm gestartet
--print("ID = ", json.encode(sourceTrigger.id))
--print("propperty = ", json.encode(sourceTrigger.property))
--print("type = ", json.encode(sourceTrigger.type))
--print("value = ", json.encode(sourceTrigger.value))
if json.encode(sourceTrigger.property) == '"cron"' then
--print("gestartet von cron")
-- Alle Zeitzähler einen hochzählen
zaehler_licht.T_EG_Haustuer = Zeitzaehler(zaehler_licht.T_EG_Haustuer)
zaehler_licht.T_EG_Garage = Zeitzaehler(zaehler_licht.T_EG_Garage)
zaehler_licht.T_EG_Seite = Zeitzaehler(zaehler_licht.T_EG_Seite)
zaehler_licht.T_KG_Seite = Zeitzaehler(zaehler_licht.T_KG_Seite)
zaehler_licht.T_KG_Wohnzimmer = Zeitzaehler(zaehler_licht.T_KG_Wohnzimmer)
zaehler_licht.T_KG_Eingang = Zeitzaehler(zaehler_licht.T_KG_Eingang)
----------------------------
-- Ab Hier reaktion auf Taster oder BWM
elseif json.encode(sourceTrigger.id) == tostring(taster_EG_Haustuer) and nacht == 1 then
zaehler_licht.Z_EG_Haustuer = tostring(zaehler_licht.Z_EG_Haustuer) + 1
elseif json.encode(sourceTrigger.id) == tostring(bwm_Strassenseite) and nacht == 1 then
if zaehler_licht.Z_EG_Haustuer == "0" then
zaehler_licht.Z_EG_Haustuer = "2" --Funktion Timer
zaehler_licht.T_EG_Haustuer = "1" --Timer auf 1 damit es los geht
end
if zaehler_licht.Z_EG_Garage == "0" then
zaehler_licht.Z_EG_Garage = "2" --Funktion Timer
zaehler_licht.T_EG_Garage = "1" --Timer auf 1 damit es los geht
end
elseif json.encode(sourceTrigger.id) == tostring(taster_EG_Garage) and nacht == 1 then
zaehler_licht.Z_EG_Garage = tostring(zaehler_licht.Z_EG_Garage) + 1
elseif json.encode(sourceTrigger.id) == tostring(bwm_Seite) and nacht == 1 then
if zaehler_licht.Z_EG_Seite == "0" then
zaehler_licht.Z_EG_Seite = "2" --Funktion Timer
zaehler_licht.T_EG_Seite = "1" --Timer auf 1 damit es los geht
end
if zaehler_licht.Z_KG_Seite == "0" then
zaehler_licht.Z_KG_Seite = "2" --Funktion Timer
zaehler_licht.T_KG_Seite = "1" --Timer auf 1 damit es los geht
end
elseif json.encode(sourceTrigger.id) == tostring(taster_KG_Wohnzimmer) and nacht == 1 then
zaehler_licht.Z_KG_Wohnzimmer = tostring(zaehler_licht.Z_KG_Wohnzimmer) + 1
elseif json.encode(sourceTrigger.id) == tostring(taster_KG_Eingang) and nacht == 1 then
zaehler_licht.Z_KG_Eingang = tostring(zaehler_licht.Z_KG_Eingang) + 1
elseif json.encode(sourceTrigger.id) == tostring(bwm_Gartenzeite) and nacht == 1 then
if zaehler_licht.Z_KG_Wohnzimmer == "0" then
zaehler_licht.Z_KG_Wohnzimmer = "2" --Funktion Timer
zaehler_licht.T_KG_Wohnzimmer = "1" --Timer auf 1 damit es los geht
end
if zaehler_licht.Z_KG_Eingang == "0" then
zaehler_licht.Z_KG_Eingang = "2" --Funktion Timer
zaehler_licht.T_KG_Eingang = "1" --Timer auf 1 damit es los geht
end
end
--Steuerung EG_Eingang Licht
----------------------------
zaehler_licht.Z_EG_Haustuer,zaehler_licht.T_EG_Haustuer =
Tastenlicht(licht_EG_Haustuer,"1","1",zaehler_licht.Z_EG_Haustuer,zaehler_licht.T_EG_Haustuer)
--Steuerung EG_Garage Licht
----------------------------
zaehler_licht.Z_EG_Garage,zaehler_licht.T_EG_Garage =
Tastenlicht(licht_EG_Garage,"1","0",zaehler_licht.Z_EG_Garage,zaehler_licht.T_EG_Garage)
--Steuerung EG_Seite & KG_Seite Licht
----------------------------
zaehler_licht.Z_EG_Seite,zaehler_licht.T_EG_Seite =
Tastenlicht(licht_EG_Seite,"1","0",zaehler_licht.Z_EG_Seite,zaehler_licht.T_EG_Seite)
zaehler_licht.Z_KG_Seite,zaehler_licht.T_KG_Seite =
Tastenlicht(licht_KG_Seite,"1","0",zaehler_licht.Z_KG_Seite,zaehler_licht.T_KG_Seite)
--Steuerung KG_Wohnzimmer Licht
----------------------------
zaehler_licht.Z_KG_Wohnzimmer,zaehler_licht.T_KG_Wohnzimmer =
Tastenlicht(licht_KG_Wohnzimmer,"1","0",zaehler_licht.Z_KG_Wohnzimmer,zaehler_licht.T_KG_Wohnzimmer)
--Steuerung KG_Eingang Licht
----------------------------
zaehler_licht.Z_KG_Eingang,zaehler_licht.T_KG_Eingang =
Tastenlicht(licht_KG_Eingang,"1","0",zaehler_licht.Z_KG_Eingang,zaehler_licht.T_KG_Eingang)
----------------------------
--Globale Variablen wieder zurückspielen
fibaro.setGlobalVariable("Zaehler_Licht", json.encode(zaehler_licht))
--print("Raus Aussenlicht")
Ist nichts besonderes aber gut zum lernen für Anfänger.
Grüße aus dem Sauerland
Frank