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

Problem z warunkami w scenie


Mariusz_Porada

Question

Witam,

 

potrzebuje pomocy zrozumieniu problemu. Mianowicie, w kodzie poniżej znajdują się dwa warunki:

 

1. ( tonumber(fibaro:getGlobalValue("Osw_zew_drzewa")) == tonumber("1") )

2. ( tonumber(fibaro:getGlobalValue("Osw_zew_taras")) == tonumber("1") )

 

Dlaczego drugi warunek jest "akceptowany" tylko wtedy, kiedy pierwszy jest także wykonany. Czyli muszę zmienić wartość Osw_zew_drzewa na 1, aby drugi warunek mógł być sprawdzony. 

Potrzebuje aby każdy warunek był realizowany niezależnie. 

Z góry dziękuję.

 

 

Cała scena:

 

local startSource = fibaro:getSourceTrigger();
if (
     ( tonumber(fibaro:getValue(753, "value")) > 0 )    --czujnik zmierzchu

or
startSource["type"] == "other"
)
  
then                                                    --night

          
      if (
       ( tonumber(fibaro:getGlobalValue("Osw_zew_drzewa")) == tonumber("1") )
        ) 
        
            then
                fibaro:call(972, "turnOn");
            else
                fibaro:call(972, "turnOff");
            end
          
  
       if (
       ( tonumber(fibaro:getGlobalValue("Osw_zew_taras")) == tonumber("1") )
       )  
        
            then
                fibaro:call(973, "turnOn");
            else
                fibaro:call(973, "turnOff");
            end
  
  
  else                                                    --day
  
 
        fibaro:call(972, "turnOff");
        fibaro:debug("Taras OFF")
          
        fibaro:call(973, "turnOff");
        fibaro:debug("Taras OFF")  
 
  
  
end

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Ciekawi mnie dlaczego ustawiasz status oświetlenia drzew i tarasu przez zmienne globalne - na pewno jest możliwość zrobić to łatwiej, no chyba, że masz jakieś specjalne uwarunkowania.

 

Co do kodu, to zobacz czy to Ci zadziała:

 

Please login or register to see this code.

 

Link to comment
Share on other sites

  • 0
  • Inquirer
  • Dziękuję za odpowiedź.

     

    Używam zmiennych globalnych, które ustawiane są przyciskami w urządzeniu wirtualnym.

     

    Sprawdzę kod i dam znać, czy działa. 

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Coś mi to nie działa. Zobacz info z debugera. 

     

    Nie mam dużego doświadczenia, więc zapytam, czy tak zbudowane makro będzie wyzwalana automatycznie przez poniższy warunek:

    Please login or register to see this code.

    No i chyba tam musi być > 0 ??

    if lightSensorValue  0 then

     

     

    Please login or register to see this image.

    /monthly_2022_04/image.png.3ed990e9e8ed5b17dcefe6fb7ef8d7f7.png" />

     

    Link to comment
    Share on other sites

    • 0

    Hej,

     

    Widzę, że masz HC2, a ja pisałem kod pod HC3 i tu może być różnica (nie miałem nigdy HC2 więc nie podpowiem z czego wynika błąd), ale patrząc na log to problem jest w linii 116, a w tym skrypcie czegoś takiego nie ma (ale mogę się mylić).

    Co do warunku

    Please login or register to see this code.

    to light Sensor przeważnie pokazuje ilość luxów więc jak jest noc to będzie mniej niż 1 a jak jest dzień to wartość jest większa od 1 (parę tysięcy) - rośnie logarytmicznie.

    Link to comment
    Share on other sites

    • 0
  • Inquirer
  • Poprawiłem kod (zmiany poniżej) i teraz działa, ale dokładnie tak jak mój. Nie rozumie dlaczego drugi warunek nie wyzwala 

     

    local lightSensorValue = tonumber(fibaro:getValue(753, "value"))
    local stateOfLightTree = tonumber(fibaro:getGlobalValue("Osw_zew_drzewa"))
    local stateOfLightPatio = tonumber(fibaro:getGlobalValue("Osw_zew_taras"))

    local lightTreeDeviceId = 972
    local lightPatioDeviceId = 973

     

     

    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...