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


Chyba błąd HCL


msokol

Recommended Posts

Witam,

Mam taką scenę która ma się uruchomić co minute i zdekrementować zmienną jak jest większa od zera.

Zmienna jest inkrementowana w innej scenie wywołanej ruchem.

Ustawiłem max, ilość instancji na 1 i automatyczny start z centralką.

Teoretycznie ta scena powinna być wywoływana tylko przez timer, niestety przy każdym ruchu (inkrementacji zmiennej w inne scenie) ta jest także wywoływana.

Wywala mi wtedy także komunikat ze liczba instancji została przekroczona.

Coś tu chyba jest nie tak albo ja jestem głupi.

Proszę o pomoc bo banalna sprawa a się poddałem.

Pozdrawiam.

 

 

 

Please login or register to see this attachment.

Link to comment
Share on other sites

Nie wiem czy o to chodzi, ale scena wywołuje się co minutę, więc nie dziwi mnie fakt, że został przekroczony limit instancji...

Niestety nie mam doświadczenia ze scenami bloczkowymi, ale kiedyś próbowałem też kontrolować w ten sposób czas po jakim ma się gasić światło. Ponieważ niewiele wiedziałem o Lua, to też posiłkowałem się scenami bloczkowymi i jedyne co wiem, to że nic z tego nie wyszło. Nie udało mi się wdrożyć kontrolowania za pomocą zmiennych.

 

Nie wiem czy w ten sposób Ci pomogę, bo nie jest to odpowiedź na Twoje pytanie, ale jeśli słusznie się domyślam i chodzi Ci o gaszenie światła na schodach po jednej minucie od zapalenia (nie interesuje Cię czy jest jeszcze ruch na schodach?), to może lepiej po prostu zrobić scenę wywoływaną przez zapalenie światła, która po 60 sekundach sprawdza czy światło jest wciąż zapalone i je gasi? Na przykład tak:

Please login or register to see this attachment.

 

Druga scena mogłaby zapalać światło na schodach po wykryciu ruchu. W tym wypadku żadna ze scen nie ma potrzeby być wywoływana 1440 razy dziennie, bo to się dzieje w przypadku Twojej sceny ze zmienną.

 

Jeśli chodzi o wywołanie przez inkrementację zmiennej, to być może (choć jest to tylko gdybanie) wyzwalacze sceny są pobierane z pierwszego warunku niezależnie od tego czy jest w nim koniunkcja czy alternatywa... Logicznie rzecz biorąc masz oczywiście rację, że zmienna nie powinna wcale być sprawdzana jeśli scena nie jest wywołana timerem.

Edited by hoomee
Link to comment
Share on other sites

On ‎05‎.‎11‎.‎2016 at 0:06 PM, msokol said:

Witam,

Mam taką scenę która ma się uruchomić co minute i zdekrementować zmienną jak jest większa od zera.

Zmienna jest inkrementowana w innej scenie wywołanej ruchem.

Ustawiłem max, ilość instancji na 1 i automatyczny start z centralką.

Teoretycznie ta scena powinna być wywoływana tylko przez timer, niestety przy każdym ruchu (inkrementacji zmiennej w inne scenie) ta jest także wywoływana.

Wywala mi wtedy także komunikat ze liczba instancji została przekroczona.

Coś tu chyba jest nie tak albo ja jestem głupi.

Proszę o pomoc bo banalna sprawa a się poddałem.

Pozdrawiam.

 

 

 

Please login or register to see this attachment.

 

interwal "co minute" startuje sam co minute i sprawdza czy warunki zostaly spelnione (minela juz minuta?, czas pomiedzy 0:00 a 23:59?, swiatlo_schody > 0 ?). 

 

Twoje swiatlo_schody jest zawsze wieksze (no chyba ze nie) niz 0, scena twoja sprawdza to co minute, i poniewaz swiatlo_schody zawsze wieksze niz 0 i czas zawsze pomiedzy 0:00 a 23:59 to "and" dziala i scena zmniejsza swiatlo_schody (oczywiscie jesli minela juz minuta). Powinno wiec dzialac tylko co minute, niezaleznie czy sie zwiekszylo swiatlo_schody.

 

Zrobilem taka sama scene, przestawilem na lua (na HC2) zeby sprawdzic co sie dzieje i czy nie ma bledow konwersji, i "niespodzianka", ten sam problem co u ciebie.

 

Dlaczego tak jest?

 

Podczas zapisywania (i tak powinno byc) scena juz staruje, jesli dopiero po zapisaniu wylaczysz zeby nie startowala przy zmianie zmiennej to i tak startuje po zapisaniu bo jedna instancja leci juz. Wyraznie widze ze inkrementowanie zmiennej powoduje wystartowanie reczne (trigger = other), tutaj scena sprawdza juz tylko czy jest pomiedzy 0:00 i 23:59 no i czy swiatlo_schody wieksze nix 0. A wiec wyglada dobrze, zadnych bledow konwersji z bloczkow na lua.

 

Na czym polega blad: po prostu scena juz lecaca ignoruje fakt ze wylaczyles wyzwalanie poprzez zmiane zmiennej.

 

To jest troche uciazliwe, i mozna tez przyjac jako powazny blad, bo w sumie trzeba wyjsc z zalozenia ze zmiana w scenie powinna przy zapisywaniu sceny - jesli scena sie zmienila - zakonczyc wszystkie inne instancje i wystartowac od nowa jesli warunki startu sa spelnione. Tym bardziej kroki takie jak : zrobienie sceny bloczkowej, zmiana jejwarunku wyzwolenia, konwersja na lua, zmiana lua zeby widzie co staruje, zatrzymanie sceny i startowanie od nowy to tyle zmain ze powinno napewno juz tylko stratowac na podstawie aktualnej sceny, a nie instancji ktorej juz nie powinno byc w pamieci.

 

Co mozna zrobic zeby od razu dzialalo:

- zrob nowa scene, wybierz interwal, wybierz zmienna > 0, wybierz reszte, wylacz warunek "zmienne wyzwalajace" i dopiero wtedy zapisz

 

Wystartowanie HC2 dziala tez, nie mam juz zandych HCL a wiec nie moge sprawdzic.

 

 

EDIT: testy przeprowadzone na v4.100

 

Edited by tinman
Link to comment
Share on other sites

  • Topic Author
  • 11 hours ago, hoomee said:

    Nie wiem czy o to chodzi, ale scena wywołuje się co minutę, więc nie dziwi mnie fakt, że został przekroczony limit instancji...

    Niestety nie mam doświadczenia ze scenami bloczkowymi, ale kiedyś próbowałem też kontrolować w ten sposób czas po jakim ma się gasić światło. Ponieważ niewiele wiedziałem o Lua, to też posiłkowałem się scenami bloczkowymi i jedyne co wiem, to że nic z tego nie wyszło. Nie udało mi się wdrożyć kontrolowania za pomocą zmiennych.

     

    Nie wiem czy w ten sposób Ci pomogę, bo nie jest to odpowiedź na Twoje pytanie, ale jeśli słusznie się domyślam i chodzi Ci o gaszenie światła na schodach po jednej minucie od zapalenia (nie interesuje Cię czy jest jeszcze ruch na schodach?), to może lepiej po prostu zrobić scenę wywoływaną przez zapalenie światła, która po 60 sekundach sprawdza czy światło jest wciąż zapalone i je gasi? Na przykład tak:

    Please login or register to see this attachment.

     

    Druga scena mogłaby zapalać światło na schodach po wykryciu ruchu. W tym wypadku żadna ze scen nie ma potrzeby być wywoływana 1440 razy dziennie, bo to się dzieje w przypadku Twojej sceny ze zmienną.

     

    Jeśli chodzi o wywołanie przez inkrementację zmiennej, to być może (choć jest to tylko gdybanie) wyzwalacze sceny są pobierane z pierwszego warunku niezależnie od tego czy jest w nim koniunkcja czy alternatywa... Logicznie rzecz biorąc masz oczywiście rację, że zmienna nie powinna wcale być sprawdzana jeśli scena nie jest wywołana timerem.

    Witam,

    Dzięki za sugestie. Proponowana  scena jest odporna na kolejne ruchy - po prostu po 60s wyłączy. In i dekrekementacji co minutę  używam w wielu różnych scenach z wieloma zmiennymi, więc te 1440 razy na dobę to nie problem a dzięki temu mam prostsze sceny i jest ich  dużo mniej - przy HCL opóźnienia na skomplikowanych scenach to nawet z 3-4 sekundy a jak mam proste sceny to w 1-1,5 sekundy od zdarzenia się zwykle wyrabia.

    Tak czy inaczej planuję przesiadkę na HC2 więc większość problemów zniknie.

    Jakby wbudować w HCL zmienne autodekrementowane, to życie stałoby się prostsze.

    Pozdrawiam,

    Marcin Sokół

    Link to comment
    Share on other sites

  • Topic Author
  • 37 minutes ago, tinman said:

     

    Co mozna zrobic zeby od razu dzialalo:

    - zrob nowa szene, wybierz interwal, wybierz wariable > 0, wybierz reszte, wylacz warunek zmienne wyzwalajace i dopiero wtedy zapisz

     

    Wystartowanie HC2 dziala tez, nie mam juz zandych HCL a wiec nie moge sprawdzic.

     

    EDIT: testy przeprowadzone na v4.100

     

    Witam,

    Dzięki za profesjonalną pomoc - niechcący wykryliśmy błąd - zgłosić do suportu fibaro?

     

    Zauważyłem że problem zniknął - mam ustawiony restart centralki w nocy i jak już się przestałem bawić sceną, to chyba po restarcie zaczęła działać zgodnie z teorią. Obserwacja co się uruchamia po wykryciu ruchu potwierdziła, że tylko scena zależna od ruchu która incrementuje zmienną startuje a już dekrementacja co 1minutę nie startuje, więc wygląda OK.

    Planuję się przesiąść na HC2 - wtedy będę miał pewnie nie pełną, ale większą kontrolę tym co centralka wyrabia. W HCL brak If-then-ELSE to poważny problem.

     

    Pozdrawiam

    Marcin Sokół

    Link to comment
    Share on other sites

    23 minutes ago, msokol said:

    (...)

    Planuję się przesiąść na HC2 - wtedy będę miał pewnie nie pełną, ale większą kontrolę tym co centralka wyrabia. W HCL brak If-then-ELSE to poważny problem.

     

    Pozdrawiam

    Marcin Sokół

     

    Przede wszystkim wtedy nie będziesz musiał się bawić zmiennymi :) Mam pełno świateł, które wyłączają się (lub włączają) w określonych sytuacjach i nie używam przy tym ani zmiennych in- lub dekrementowanych ani boolean. A to wszystko w dwóch scenach: jedna do wyłączania wielu świateł po pewnym czasie od włączenia (każdy czas oddzielnie ustawiony dla każdego światła), a druga do włączania przez określone wyzwalacze i wyłączania po spełnieniu określonych warunków. I żadna z nich nie musi sprawdzać nic co minutę.

    W każdym razie dobrze, że działa :)

    Pozdrawiam

    • Like 1
    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
    Reply to this topic...

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