Jump to content

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


  • 0

Powiadomienie o zakończeniu pracy pralki QuickApp


MCKula

Question

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

 

Edited by MCKula
usuniecie formatowania
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Cześć

 

Z tego co widze nie uruchamiasz wogole funkcji setTimeout,

dlatego nie ma petli i funkcja checkWashingMachine uruchamia sie tylko raz.

Link to comment
Share on other sites

  • 0
  • Inquirer
  • Czy moglbys moze poprawic kod tak aby funkcjonowal zgodnie z zalozeniem ?

    Link to comment
    Share on other sites

    • 0

    Witajcie, nie chciałbym, żebyście odebrali mój post jako krytykę lub wymądrzenie się, ale czy qapp nie obciąża zasobów, to jest jednak jakaś pętla, która coś tam sprawdza. 

    Proponuje prostrze rozwiązanie, tworzysz zmienną globalną i dwie sceny blokowe

     

    Please login or register to see this attachment.

     

    i drugą scenę

    Please login or register to see this attachment.

    Oczywiście, możesz tu wstawić, zamiast Pusha, blok wywołujący inną scenę.

    U mnie te sceny działają ponad 1,5 roku i nie było sytuacji fałszywego powiadomienia bądź jego braku

    • Like 1
    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Powiem Ci ,ze to jest genialne w swojej prostocie i działa !!! Zaczne teraz testowac to z innymi ustawieniami. Dzieki wielkie.

    Edited by MCKula
    Link to comment
    Share on other sites

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Answer this question...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...