Welcome to Smart Home Forum by FIBARO
Dear Guest,
as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.
As a member you can:
- Start new topics and reply to others
- Follow topics and users to get email updates
- Get your own profile page and make new friends
- Send personal messages
- ... and learn a lot about our system!
Regards,
Smart Home Forum by FIBARO Team
Question
MCKula 1
Proszę o pomoc w rozwiazaniu problemu... oto moj quickapp mierzacy pobor pradu przez pralke. W założeniu ma on sprawdzac co sekundę czy jest pobór pradu powyzej 4 Watt jesli tak to zaczyna nasłuchować czy pobor prądu spadł ponizej 4 Watt przez minute, jesli tak to ma uruchomic scene o id311. Gdzie lezy błąd ,że nie wywoływana jest scena o id311 ?
-- QuickApp fields
-- ID urządzenia, którego stan będzie monitorowany
local lvn_WashingMachine_ID = 415
-- Próg mocy (w watach), powyżej którego urządzenie uznaje się za włączone
local lvn_WashingMachinePowerON = 4.0
function QuickApp:onInit()
-- Wywoływane po inicjalizacji QuickAppu
self:debug("QuickApp:onInit")
-- Inicjalizacja licznika czasu
self.lvn_TimeCounter = 0
-- Inicjalizacja flagi monitorującej stan prania
self.lvb_Washing = false
-- Inicjalizacja flagi monitorującej zakończenie prania
self.lvb_WashingFinished = false
-- Ustawienie interwału sprawdzania stanu pralki (co sekundę)
self:checkWashingMachine()
end
function QuickApp:checkWashingMachine()
-- Pobranie aktualnej mocy urządzenia
local power = tonumber(fibaro.getValue(lvn_WashingMachine_ID, "power"))
-- Jeśli moc jest większa od progu i flaga prania nie jest ustawiona
if power > lvn_WashingMachinePowerON and not self.lvb_Washing then
-- Zapisanie czasu rozpoczęcia prania
self.lvt_WashingMachineStartTime = os.time()
-- Ustawienie flagi prania
self.lvb_Washing = true
-- Zresetowanie flagi zakończenia prania
self.lvb_WashingFinished = false
self:debug("Washing Machine started: ", os.date())
-- Jeśli moc jest nadal większa od progu, resetujemy licznik
elseif power > lvn_WashingMachinePowerON then
self.lvn_TimeCounter = 0
-- Jeśli moc spadła poniżej progu, a licznik jest mniejszy lub równy 60 sekund, zwiększamy licznik
elseif power < lvn_WashingMachinePowerON and self.lvn_TimeCounter <= 60 then
self.lvn_TimeCounter = self.lvn_TimeCounter + 1
-- Jeśli moc jest poniżej progu, a licznik przekroczył 60 sekund, uznajemy pranie za zakończone
elseif power < lvn_WashingMachinePowerON and self.lvn_TimeCounter > 60 then
self:debug("Washing finished.")
-- Resetujemy flagę prania
self.lvb_Washing = false
-- Ustawiamy flagę zakończenia prania
self.lvb_WashingFinished = true
-- Uruchamiamy scenę
self:runScene()
end
-- Ustawienie interwału sprawdzania stanu pralki na ponowne wykonanie za sekundę
fibaro.setTimeout(1000, function()
self:checkWashingMachine()
end)
end
function QuickApp:runScene()
-- Jeśli pranie zostało zakończone
if self.lvb_WashingFinished then
-- ID sceny do uruchomienia
local sceneID = 311
-- Uruchomienie sceny
fibaro.startScene(sceneID)
self:debug("Scene with ID ", sceneID, " has been started.")
end
end
usuniecie formatowania
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.