Timer för kaffebryggare

Post Reply
svante
Medlem
Posts: 76
Joined: 14 Dec 2011, 10:08
12

Hejsan.
Jag har länge haft en grym kaffetimer i min HC2 som jag hittade här på forumet. Blev tyvärr tvungen att fabriksåterställa HC2 nyligen utan möjlighet att lägga in backup....

Nu har jag letat som en galning men lyckas inte hitta den igen...
Det var en LUA-scen som startade en nedräkning när förbrukningen låg på ett visst värde. Finns ägaren till koden kvar och kan dela med sig av den igen månne? Eller kan någon scripta ihop något riktigt smart? Jag har tyvärr inte kunskapen själv, och inte tid att lära mig.

Tack på förhand!
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Jag kör med denna som jag tidigare publicerat på detta forum, kanske är denna du söker?

Code: Select all

--[[
%% properties
272 power
%% globals
--]]

-- abort any unnecesary scenes started 
if fibaro:countScenes() > 1 then fibaro:abort() end

local Wattkaffebryggare = tonumber(fibaro:getValue(272, "power"))
fibaro:debug("Kaffebryggare Watt: " .. Wattkaffebryggare)

local countdown=25
countdown=countdown*6 
repeat 
    fibaro:sleep(10000) 
  if tonumber(fibaro:getValue(272, "power"))<55 then
    fibaro:abort()
   
  else 
    countdown=countdown-1 
  end 
  until countdown==0 
  fibaro:call(272, "turnOff") 
  fibaro:debug("Glömt Bryggaren igen? Stänger av den åt dig")
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
svante
Medlem
Posts: 76
Joined: 14 Dec 2011, 10:08
12

Sonnyboy! Det var exakt den jag letat efter! Tack som fan!
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej,
Kan någon förklara för mig hur den här lua scenen fungerar, är intresserad att ha någon slags timer på min bryggare också.
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

Texan wrote:Hej,
Kan någon förklara för mig hur den här lua scenen fungerar, är intresserad att ha någon slags timer på min bryggare också.
I stora drag så mäter den om kaffebryggaren drar över en viss watt och startar en loop som räknar ner till noll och sedan stänger av pluggen. Går förbrukningen ner under nedräkningen (man stänger av bryggaren själv) så avbryts räkningen automatiskt.
Det du skall göra är att byta "272" till ditt enhetsnummer, justera gränsen för watt (i exemplet <55) och sedan hur länge du vill bryggaren skall vara på genom att ändra countdown till önskat antal minuter (i exemplet 25min).

Var detta svaret du sökte eller ville du har mer preciserat?
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

Använder förövrigt varianter på denna både till badrumsbelysningen som gärna glömdes stängas av och till köksfläkten där halogenlamporna ofta stod och brann hela dagen.
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Earplugged wrote:
Texan wrote:Hej,
Kan någon förklara för mig hur den här lua scenen fungerar, är intresserad att ha någon slags timer på min bryggare också.
I stora drag så mäter den om kaffebryggaren drar över en viss watt och startar en loop som räknar ner till noll och sedan stänger av pluggen. Går förbrukningen ner under nedräkningen (man stänger av bryggaren själv) så avbryts räkningen automatiskt.
Det du skall göra är att byta "272" till ditt enhetsnummer, justera gränsen för watt (i exemplet <55) och sedan hur länge du vill bryggaren skall vara på genom att ändra countdown till önskat antal minuter (i exemplet 25min).

Var detta svaret du sökte eller ville du har mer preciserat?

Så man trycker på pluggen manuellt och sedan känner scenen av om bryggaren är på eller avslagen, är den på efter tidsintervallet/nedräkningen så stänger scenen av pluggen.


Du får gärna dela med hur varianten ser ut för glömda lampor som du nämner.

Tackar
User avatar
sonnyboy
Proffsmedlem
Posts: 669
Joined: 26 Sep 2013, 08:05
10
Location: Västerås

Texan wrote:
Så man trycker på pluggen manuellt och sedan känner scenen av om bryggaren är på eller avslagen, är den på efter tidsintervallet/nedräkningen så stänger scenen av pluggen.
Tackar
Låt säga så här, pluggen är alltid igång, men när du knäpper på kaffebryggaren så känner pluggen att den är igång med hjälp av denna rad i koden "272 power"
Exempel min bryggare går upp mot 2000w när den startar, sen när den är klar och bara varmhåller kaffet så ligger den runt 52w och när då kaffebryggaren dragit mindre än 55w i 25 minuter så stänger den av "pluggen" OM du inte stängt av bryggaren på knappen, då kommer pluggen att känna att den drar 0w och då strängs timern av.
Fibaro HomeCenter 2
Fw 4.600
BeyondMeasure 1.10
EventRunner
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

Earplugged wrote:
Texan wrote: Du får gärna dela med hur varianten ser ut för glömda lampor som du nämner.
Tackar
Det är i princip samma kod där man byter Power till Value för att se status istället för förbrukning.
Ändra 74 till ditt nummer på brytaren så stängs lampan av efter 15min, i koden nedan har jag även ett villkor om den andra lampan 69 i badrummet (som är rörelsestyrd) är tänd så fördröjs släckningen ytterligare.
tidigare körde jag all belysning med rörelsesensor på toaletten men eftersom den inte registrerade rörelserna i duschen så tröt tålamodet på sambon efter några incidenter i totalt mörker... :-)

--[[
%% properties
74 value
%% globals
--]]

-- abort any unnecesary scenes started
if fibaro:countScenes() > 1 then fibaro:abort() end

local Lampa = tonumber(fibaro:getValue(74, "value"))
fibaro:debug("Lampa lyser? 0=Nej 1=Ja: " .. Lampa)

local countdown=15 --Fördröjning i minuter
countdown=countdown*6
repeat
fibaro:sleep(10000)
if tonumber(fibaro:getValue(74, "value"))<1 then
fibaro:abort()

else

if tonumber(fibaro:getValue(69, "value"))>0 then
countdown=15 --anges i minuter
countdown=countdown*6

else
countdown=countdown-1
end
end
fibaro:debug("Nedräkning: " .. countdown)
until countdown==0
fibaro:call(74, "turnOff")

fibaro:debug("Lampa spegel stängs av nu")
Farbror Grå
Medlem
Posts: 76
Joined: 23 Oct 2014, 09:20
9
Location: Göteborg

Jag har funderat på en lösning på problemet med att rörelsesensorn inte känner rörelser i duschen. En Fibaro universalsensor kopplas till en flödesgivare (typ vattenmätare men den behöver bara indikera flöde inte räkna förbrukning).
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Earplugged wrote:
Earplugged wrote:
Texan wrote: Du får gärna dela med hur varianten ser ut för glömda lampor som du nämner.
Tackar
Det är i princip samma kod där man byter Power till Value för att se status istället för förbrukning.
Ändra 74 till ditt nummer på brytaren så stängs lampan av efter 15min, i koden nedan har jag även ett villkor om den andra lampan 69 i badrummet (som är rörelsestyrd) är tänd så fördröjs släckningen ytterligare.
tidigare körde jag all belysning med rörelsesensor på toaletten men eftersom den inte registrerade rörelserna i duschen så tröt tålamodet på sambon efter några incidenter i totalt mörker... :-)

--[[
%% properties
74 value
%% globals
--]]

-- abort any unnecesary scenes started
if fibaro:countScenes() > 1 then fibaro:abort() end

local Lampa = tonumber(fibaro:getValue(74, "value"))
fibaro:debug("Lampa lyser? 0=Nej 1=Ja: " .. Lampa)

local countdown=15 --Fördröjning i minuter
countdown=countdown*6
repeat
fibaro:sleep(10000)
if tonumber(fibaro:getValue(74, "value"))<1 then
fibaro:abort()

else

if tonumber(fibaro:getValue(69, "value"))>0 then
countdown=15 --anges i minuter
countdown=countdown*6

else
countdown=countdown-1
end
end
fibaro:debug("Nedräkning: " .. countdown)
until countdown==0
fibaro:call(74, "turnOff")

fibaro:debug("Lampa spegel stängs av nu")
Hur ser koden ut ifall jag inte behöver den andra villkoret som kollar den andra lampan? :oops:
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Behöver lite hjälp med koden.
Om jag startar scenen så kör den 1gång och släcker lampan efter 5min. Men sedan ifall jag tänder lampan igen så tycks inte scenen köra så lampan förblir tänd.

Code: Select all

--[[
%% properties
74 value
%% globals
--]]

-- abort any unnecesary scenes started 
if fibaro:countScenes() > 1 then fibaro:abort() end

local Lampa = tonumber(fibaro:getValue(152, "value"))
fibaro:debug("Lampa lyser? 0=Nej 1=Ja: " .. Lampa)

local countdown=5 --Fördröjning i minuter
countdown=countdown*6 
repeat 
fibaro:sleep(10000) 
if tonumber(fibaro:getValue(152, "value"))<1 then
fibaro:abort()

else 

if tonumber(fibaro:getValue(69, "value"))>0 then 
countdown=15 --anges i minuter
countdown=countdown*6

else
countdown=countdown-1 
end
end 
fibaro:debug("Nedräkning: " .. countdown)
until countdown==0 
fibaro:call(152, "turnOff")

fibaro:debug("Lampa i garderoben stängs av nu")
sycorax
Ny medlem
Posts: 18
Joined: 04 Jan 2017, 22:05
7

Hej,

Jag gjorde en modifiering av lua-koden i denna tråd. Min timer består av en vd (virtuell device) där man kan ställa in timerns värde i minuter som sätts till en global variabel. Den vd slår på WallPlug:en som kaffebryggaren sitter i och kollar om det ligger någon last, dvs om kaffebryggarens switch är påslagen. Om den inte är påslagen skickar den en push till min mobil att jag glömt att slå på kaffebryggarens switch. Om kaffebryggarens switch är påslagen (dvs det finns en last i watt) startas en scene "Timer" som meddelar att kaffebryggaren startat. Efter 10min meddelar den att kaffet är klart via push och därefter stängs WallPlug:en av när timern har löpt ut (också med push).
Om jag stänger av bryggaren innan timern löpt ut så stänger den av WallPlug åt mig.

Gött --> Bara att rigga kaffekokaren innan man går och lägger sig så kan jag starta den i sängen på morgonen ;)

Här är koden för den som vill testa. Det som måste ändras är id:n på enhet (i mitt fall WallPlug med id=19) och notifications (push) till mobil. Alt. ta bort notifications i koden.

Virtual Device "Coffee Timer" -->

Virtuell Device &quot;Coffee Timer&quot;
Virtuell Device "Coffee Timer"
Skapa en global variabel "CoffeeTimer" med värdet 60 -->
Global variable (sätts av VD och läses av scene)
Global variable (sätts av VD och läses av scene)
VD Label
VD Label
VD Button 60min
VD Button 60min
Code Button 60min -->

Code: Select all

local value = 60
local vd = 32 -- VDevice ID  
fibaro:call(vd, "setProperty", "ui.sliderSetTime.value", value)
fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", '60min')
fibaro:setGlobal('CoffeeTimer', value)
fibaro:debug('Button 60min LUA Triggered!')
VD Button 45min
VD Button 45min
Code Button 45min -->

Code: Select all

local value = 45
local vd = 32 -- VDevice ID  
fibaro:call(vd, "setProperty", "ui.sliderSetTime.value", value)
fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", '45min')
fibaro:setGlobal('CoffeeTimer', value)
fibaro:debug('Button 45min LUA Triggered!')
VD Button 30min
VD Button 30min
Code Button 30min -->

Code: Select all

local value = 30
local vd = 32 -- VDevice ID  
fibaro:call(vd, "setProperty", "ui.sliderSetTime.value", value)
fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", '30min')
fibaro:setGlobal('CoffeeTimer', value)
fibaro:debug('Button 30min LUA Triggered!')
VD Slider
VD Slider
Code Slider -->

Code: Select all

local vd = 32 -- VDevice ID 
local value = fibaro:getValue(vd, "ui.sliderSetTime.value")

--local sliderLevel = math.floor((value / 100) * 80)
--fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", sliderLevel.. 'min')
fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", value.. 'min')
fibaro:setGlobal('CoffeeTimer', value)
fibaro:debug('Slider ' ..value.. 'min LUA Triggered!')
VD Button Start Timer
VD Button Start Timer
Code Start Timer -->

Code: Select all

local startSource = fibaro:getSourceTrigger()

if ( ( tonumber(fibaro:getValue(19, "value")) == 0 ) or startSource["type"] == "other" ) then
  fibaro:call(19, "turnOn")
end

if ( (tonumber(fibaro:getValue(19, "power")) <= 0) or startSource["type"] == "other") then
  fibaro:call(16, "sendDefinedPushNotification", "36")
  fibaro:call(24, "sendDefinedPushNotification", "36")
  fibaro:call(19, "turnOff");
end
VD Main Loop
VD Main Loop
Code Main loop -->

Code: Select all

local value = fibaro:getGlobal('CoffeeTimer')
local vd = 32 -- VDevice ID 
fibaro:call(vd, "setProperty", "ui.sliderSetTime.value", value)
fibaro:call(vd, "setProperty", "ui.labelCoffeeTimer.value", value.. 'min')
fibaro:sleep(500)  -- Update every 0,5sec
Skapa en ny scene.
Scene - Kaffe Timer
Scene - Kaffe Timer
Scene code Kaffe Timer -->

Code: Select all

--[[
%% properties
19 power
%% globals
--]]

local debug = false        -- Debug or not (No debug = false)
local coffeeWallPlug = 19 -- WallPlug 1
-- 31 = Notifikation, Kaffet klart!
-- 32 = Notification, Stänger av kaffebruggaren!
-- 34 = Notification, Kaffebryggaren har startat!
-- 35 = Notification, Stängde av WallPlug till kaffebryggaren!
-- 36 = Notification, Du har glömt att slå på brytaren till kaffebryggaren!
local kkMobileId = 16     -- My mobile HTC M9
local elleMobileId = 24   -- Elle mobile HTC 10

-- abort any unnecesary scenes started 
if (fibaro:countScenes() > 1) then
  if ( debug == true ) then fibaro:debug("Nr of Scenes = " .. fibaro:countScenes()) end
  fibaro:abort()
end

local watt = tonumber(fibaro:getValue(coffeeWallPlug, "power"))
if ( debug == true ) then fibaro:debug("Kaffebryggare using: " .. watt .. " Watt") end

local value = fibaro:getGlobal('CoffeeTimer')
local countdown = value     -- Timer from GLOBAL variable 'CoffeeTimer'
--local countdown = 60        -- Timer 60min
local manualTurnOff = false -- Stängde av kaffebryggarens on/off manuellt.
local coffeeDone = 10       -- Kaffe klart efter 10min
countdown = countdown * 6   -- Timer starts with value 360 and counting down to 0
                            -- Between every decrement of countdown is 10sec (the sleep function)
local coffeeReady = 0       -- Reset variable
coffeeReady = countdown - (coffeeDone*6)


-- If switch to coffee maker is on -->
if ( tonumber(fibaro:getValue(coffeeWallPlug, "value")) > 0 ) then
  -- Send notification --> Kaffebryggaren har startat!
  fibaro:call(kkMobileId, "sendDefinedPushNotification", "34") -- My
  fibaro:call(elleMobileId, "sendDefinedPushNotification", "34") -- Elle
  if ( debug == true ) then fibaro:debug("Kaffebryggaren har startat! ") end
end


-- *** MAIN LOOP START ***
repeat 
  fibaro:sleep(10000) -- Sleep 10sec
  
  if ( debug == true ) then fibaro:debug("Kaffebryggaren använder: " .. watt .. " Watt" ) end
  if ( debug == true ) then fibaro:debug("Variable countdown = " .. countdown) end
  
  -- Did you turn off coffe maker before timer exceeded? (WallPlug 0 watt)
  if ( (countdown > 0) and (tonumber(fibaro:getValue(coffeeWallPlug, "power")) == 0) ) then
    if ( debug == true ) then fibaro:debug("Du stängde av kaffebryggaren! ") end
    if ( debug == true ) then fibaro:debug("Reset variable countdown to 1! ") end
    manualTurnOff = true
    countdown = 1 -- last in repeat loop will do the last decrement of 'countdown'
    if ( debug == true ) then fibaro:debug("Variable countdown: " .. countdown) end
  end
      
  -- Coffee Ready to serve?
  if (countdown == coffeeReady) then
    fibaro:call(kkMobileId, "sendDefinedPushNotification", "31") -- My
    fibaro:call(elleMobileId, "sendDefinedPushNotification", "31") -- Elle
    if ( debug == true ) then fibaro:debug("Coffee ready to serve!") end
  end  
  countdown = countdown - 1
  if ( debug == true ) then fibaro:debug("Countdown = " .. countdown) end
until countdown == 0
-- *** MAIN LOOP END (Timer off) ***

-- Then finish with these commands -->
fibaro:call(coffeeWallPlug, "turnOff") -- Turn off Wall Plug

-- Did you turn of coffee maker manualy?
if (manualTurnOff == true) then
  fibaro:call(kkMobileId, "sendDefinedPushNotification", "35") -- My
  fibaro:call(elleMobileId, "sendDefinedPushNotification", "35") -- Elle
  if ( debug == true ) then fibaro:debug("Stängde av WallPlug till kaffebryggaren!") end
else
  -- Är WallPlug avstängd?
  if (( tonumber(fibaro:getValue(coffeeWallPlug, "value")) > 0 )) then
    fibaro:call(kkMobileId, "sendDefinedPushNotification", "32") -- My
    fibaro:call(elleMobileId, "sendDefinedPushNotification", "32") -- Elle
    if ( debug == true ) then fibaro:debug("Stänger av kaffebryggaren!") end
  else
    fibaro:call(kkMobileId, "sendDefinedPushNotification", "33")
    fibaro:call(elleMobileId, "sendDefinedPushNotification", "33")
    if ( debug == true ) then fibaro:debug("Wall Plug stängdes inte av!!!") end
  end
end

if ( debug == true ) then fibaro:debug("Kaffebryggare använder: " .. watt .. " Watt") end

-- End Timer Scene...
fibaro:abort()
Bifogar även iconer som jag använde:
ICO --&gt; Coffee Timer
ICO --> Coffee Timer
Coffee_Timer_Icon.png (66.85 KiB) Viewed 15184 times
ICO --&gt; Timer - Kaffe
ICO --> Timer - Kaffe
timer-icon (1).png (8.95 KiB) Viewed 15184 times
/Sycorax[/color]
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej,
Har någon möjlighet att göra om denna så att den fungerar med HC3?
sycorax
Ny medlem
Posts: 18
Joined: 04 Jan 2017, 22:05
7

Hej Texan,

Det var länge sedan jag lade ut denna topic "Timer för kaffebryggare". Själv kör jag fortfarande HC2 med denna VD. Vad är det som skiljer sig mot HC2 jämfört med HC3?
User avatar
Texan
Medlem
Posts: 169
Joined: 25 Dec 2015, 15:07
8

Hej sycorax,

Jag är för dålig på lua etc för att kunna förklara vad som skiljer sig åt. Kanske någon annan kan flika in ....
Post Reply