Scen - solupp/solner med hjälp av Fibaro motion sensor?

Post Reply
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej,
Helt ny på detta så jag skulle vilja ha hjälp med en scen som tänder och släcker lampor när sol går upp/ner men samtidigt släcker/tänder tidigare/senare ifall det är molnigt/mörkare eller ljusare med hjälp av styrning från motion sensorn?
Har för mig att jag läst någon som gjort sådan scen men kan inte hitta någon information om det.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Hejsan
det svåra är att hitta ett optimalt och bra lux värde från sensorn då det är många faktorer som spelar in. Dels är sensorn inte så snabb att uppdatera värdet om man inte justerar tiden men då drar batteriet slut fortare, sen är det lampor och andra saker som kan ställa till det. Inte alltid der ger en bra lösning.

Själv kör jag endast på upp och nedgång med en liten justering av tiden under sommar halvåret vilket jag tycker fungerar ypperligt. Har ca 30min före solnedgång under host/vinter sen justerar jag det till 15-20min före när det börjar bli ljusare ute.

Men vill du fortfarande ha en sådan scen så kan jag hjälpa dig förståss.

Mvh Jonny
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej Jonny,
Jag skulle vilja iaf prova att köra med en sådan scen även fast det skulle dra mycket batteri från sensorn. Kanske går att fixa annan matning till den beroende på hur det fungerar.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Prova den här, återkom om du önskar andra funktioner eller om något inte fungerar som tänkt

Code: Select all

luxSensor = 94				-- ID of luxsensor
local luxValue = "300"		-- value of luxsensor to do stuff if below or above
local BeforeSunset = 30		-- minutes before sunset
local AfterSunrise = 30		-- minutes after sunrise
lights ={5,29}				-- ID of lights

if (tonumber(fibaro:countScenes()) > 1) then 
	fibaro:debug(os.date() .. " - One instance of script already running");  
 	fibaro:abort()
end

while true do 
	local sunUp = os.date("%H:%M", os.time()-AfterSunrise*60)
	local sunDown = os.date("%H:%M", os.time()+BeforeSunset*60) 

	if ( sunUp == fibaro:getValue(1, "sunriseHour") or luxValue > fibaro:getValue(luxSensor, "value") ) 
	then 
    	for i = 1,#lights do
    	devices = lights[i];
        	fibaro:call(devices, "turnOff")
    	end
	elseif ( sunDown == fibaro:getValue(1, "sunsetHour") or luxValue < fibaro:getValue(luxSensor, "value") ) 
	then
    	for i = 1,#lights do
    	devices = lights[i];
        	fibaro:call(devices, "turnOn")
    	end
    end
  fibaro:sleep(30000)
end 
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej Jonny,

För att jag skall förstå vad jag gör.........
Det jag behöver ändra är rad 1 till vad min sensor har för nummer, och rad 5 sätter jag id numren på vilka lampor som jag vill styra.
Mao så behöver jag bara leka med rad 1 till 5.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Yes det stämmer


Regards Jonny Larsson
From my iPhone6+ med Tapatalk
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Behöver jag ändra på några inställning på sensorn, så som poll tid etc etc?
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej igen,

Går det att lägga till så att man släcker vid ett visst klockslag?
Vet inte om jag var tydlig, men jag skulle vilja ha så att lampor tänds X minuter innan solupp och släcks X minuter efter solupp och om det är molnigt och solen inte lyser förrän senare på dagen då släcks det efter sensorn. Sedan så tänds lampor X minuter innan solnedgång eller tidigare mha sensor om det blev molnigt. Sedan så vill jag släcka för natten på ett bestämt klockslag.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Fungerar det inte?
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Igår var det rätt mulet hela dagen, så det blev att lampa var på hela dagen och kvällen, när jag sedan satte lampan till off för natten så satta scenen på lampan igen efter en stund. Jag vet att jag måste hitta ett vettigt lux värde på sensor, men jag ville också säkerställa att scenen är byggd som funktionen jag beskrev annars så försöker jag trimma sensorn på fel sätt.

I'm still learning :oops:
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Bästa vore att ha en variabel för nattläge, dvs om det är natt så ska inte den delen av skriptet som tänder lampan ej köras fast luxvärdet är i princip 0
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

jompa68 wrote:Bästa vore att ha en variabel för nattläge, dvs om det är natt så ska inte den delen av skriptet som tänder lampan ej köras fast luxvärdet är i princip 0
Låter som ett bra sätt, typ en variabel där man sätter vilken tidpunkt som inte scenen skall köras, kanske?
Skall man gör en vanligt block scen där man bestämmer vilken tid lampan skall släckas?
User avatar
Bamsefar
Z-Wave Kung
Posts: 1232
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Har varit på resa, men tänkte att jag kan bidra med min lösning, som är ja liknande det du antagligen efterfrågar. För att jämföra med jompa68's, så är detta tänkt att hantera mera hur ljust det är och inte när det är natt enligt klockan - jag personligen gillar denna lösning bättre än att bara gå på teoretiskt mörker enligt klocka och kalender. Det är viktigt att komma ihåg att det finns minst lika många lösningar som personer, alla har olika smak.

Jag har i alla fall infört en lösning som håller reda på hur ljust det är ute, och med tre lägen: Ljust / Skymning / Mörkt. I princip räcker detta, men jag är på väg in i en lösning (kan ta några månader) som kommer glida mera mjukt mellan Ljust och Mörkt (dvs flytande "Skymning" om man så vill).

Jag har i princip en scen, som startas av tre sensorer:

Code: Select all

--[[
%% autostart
%% properties
32 value
41 value
97 value
%% globals
--]]

-- Bara en aktiv instans av denna scen...
if (fibaro:countScenes() > 1) then fibaro:abort() end

-- 32 - Ljussensor arbetsrum
-- 41 - Ljussensor vardagsrum

local Dusk_LUX = tonumber(fibaro:getGlobalValue("LUX_Dusk"))
local Dark_LUX = tonumber(fibaro:getGlobalValue("LUX_Dark"))

-- 97 - Fuktighetssensor terrass, för att ge lite mera ljus när det regnar typ..?

local Extra_LUX = tonumber(fibaro:getValue(97, "value")) * 2

-- Och så låter vi Dusk_LUX (skymning) påverkas med detta värde:
-- Det bör ge extra känslighet när det är regnit eller liknande ute och därmed
-- ge ljus lite tidigare helt enkelt...? Let's try at least :-)

Dusk_LUX = Dusk_LUX + Extra_LUX

--fibaro:debug("Dusk_LUX : "..Dusk_LUX)
--fibaro:debug("Vardagsrum  :"..fibaro:getValue(41, "value"))
--fibaro:debug("Arbetsrum  :"..fibaro:getValue(32, "value"))

-- Grundprincip: 
-- 	Om mörkare än Dark_LUX så är det mörkt
-- 	Om ljusare än Dusk_LUX så är det ljust
-- 	Om mörkare än Dusk_LUX, men ljusare än Dark_LUX, så är det skymning - dvs mitt imellan mörkt och ljust

if	(
	tonumber(fibaro:getValue(32, "value")) < Dark_LUX and
	tonumber(fibaro:getValue(41, "value")) < Dark_LUX
	)
then
	if ( fibaro:getGlobalValue("Dagsljus") ~= "Mörkt" )
	then
		fibaro:setGlobal("Dagsljus", "Mörkt")
--		fibaro:debug("Nu vart det Mörkt!")
	end
elseif	(
	tonumber(fibaro:getValue(32, "value")) < Dusk_LUX and
	tonumber(fibaro:getValue(41, "value")) < Dusk_LUX
	)
then
	if ( fibaro:getGlobalValue("Dagsljus") ~= "Skymning" )
	then
		fibaro:setGlobal("Dagsljus", "Skymning")
--		fibaro:debug("Nu vart det Skymning!")
	end
elseif	(
	tonumber(fibaro:getValue(32, "value")) > Dusk_LUX and
	tonumber(fibaro:getValue(41, "value")) > Dusk_LUX
	) or (
-- Försöka hantera när det blir väldigt ljust bara i vardagsrummet, men inte i arbetsrummet...
	( tonumber(fibaro:getValue(32, "value")) + tonumber(fibaro:getValue(41, "value")) ) > Dusk_LUX*3
	)
then
	if ( fibaro:getGlobalValue("Dagsljus") ~= "Ljust" )
	then
		fibaro:setGlobal("Dagsljus", "Ljust")
--		fibaro:debug("Nu vart det Ljust!")
    end
end
Testar Home Assistant på Raspberry Pi4B - nice :mrgreen:
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej Jonny.
Vet inte om det är jag som satt fel värde på lux men det känns som att scenen inte vill ex. tända lampan tillräckligt tidigt vissa eftermiddagar/kvällar och ibland när jag tycker att lampan borde vara tänd på kvällen så är den släckt och om jag tänder den manuellt på kvällen så släcks den igen. Sedan har en helt annan lampa som inte var med i scenen påverkats precis som systemet blandat ihop enheter.

Finns det möjlighet att skriva koden där jag har möjligen att påverka när lampan skall vara släckt resp tänd och exempelvis ha en variabel där lampan skall vara släckt för natten?

Lampor som jag vill styra vill jag ha möjlighet att ha helt släckta på natten fram till morgonen till solen går upp och för att släckas x antal min efter det att solen gått upp, sedan åter tändas x minuter innan solen går ner för att sedan släckas för natten. Och där lux sensorn har möjligheten att förlänga tiden då lampan släck på morgonen och tidigarelägga tändningen på kvällen.
Post Reply