Instancje

  • 5 Odpowiedzi
  • 5669 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline v41n

  • ** 35
  • 0
  • Nazwa i wersja ID: v41n
Instancje
« dnia: Lipiec 18, 2016, 12:36:33 pm »
Witam,

Szukałem, ale nigdzie nie ma konkretnego wytłumaczenia. Nawet support fibaro nie odpowiada na te pytania.

Co to są instancje? Po co są? i dlaczego następuje przekroczenie limitu instancji?
Czy jest ktoś w stanie to szczegółowo wytłumaczyć?

Jeszcze mi się nie udało zrobić sceny, która by nie przekroczyła limitu.
Jako przykład załączam zdjęcie prostej sceny, która informuje o rozbrojeniu alarmu na podstawie stanu wszystkich czujek.

Jak jest to gdzieś wyjaśnione, ale ja nie znalazłem, to proszę o link i skasowanie tematu.


Piotrek
 
*

Offline andre

  • Moderator Globalny
  • ***** 258
  • 3
  • Nazwa i wersja ID: HA(AIS)+HC2 4.570,GRENTON1.0+LK v2.0+BLE+RPi...
Odp: Instancje
« Odpowiedź #1 dnia: Lipiec 18, 2016, 10:56:27 pm »
Witaj.
Ponieważ to Twój pierwszy  wpis na forum rozumiem, że nie chodzi  o definicję słownikową instancji tylko praktyczne znaczenie tego pojęcia na HC2. Dlatego  podaję Ci link do naszego dawnego forum gdzie zostawiliśmy trochę potu a konkretnie do rewelacyjnego poradnika kolegi Traktor 69 (jak to przeczyta to pozdrawiamy serdecznie i zapraszamy do nas) a zwłaszcza część 11.003  Zrób sobie kilka testów w/g jego wzoru i poczytaj temat dokładnie a będziesz oświecony praktycznie na wieki.
http://forum.fibaro.com/index.php?/topic/16652-baza-podstawowych-skrypt%C3%B3w-w-praktyce-poradnik/
*

Offline v41n

  • ** 35
  • 0
  • Nazwa i wersja ID: v41n
Odp: Instancje
« Odpowiedź #2 dnia: Lipiec 20, 2016, 10:21:07 pm »
Witam,

Ok. Przeczytałem 50 razy podany wątek. Zmodyfikowałem scenę. Żeby sprawdzić co się dzieje wprowadziłem debug. Ale nadal wyskakuje mi błąd instancji. I nie mam pojęcia dlaczego ...
Poniżej podaję kod. Bardzo BARDZO proszę na podanym przykładzie wytłumaczyć mi dlaczego następuje przekroczenie instancji.

--[[
%% properties
964 armed
965 armed
967 armed
966 armed
968 armed
969 armed
988 armed
989 armed
%% events
%% globals
--]]

    fibaro:debug("sceneInstance: "..fibaro:countScenes())
    fibaro:debug("SCENE START --------------------------")
    fibaro:debug("sceneInstance: "..fibaro:countScenes())
   
if fibaro:countScenes() > 1 then
    fibaro:debug("SCENE ABORT --------------------------")
    fibaro:abort()
    end

if (( tonumber(fibaro:getValue(964, "armed")) > 0 ) and ( tonumber(fibaro:getValue(965, "armed")) > 0 ) and ( tonumber(fibaro:getValue(967, "armed")) > 0 ) and ( tonumber(fibaro:getValue(966, "armed")) > 0 ) and ( tonumber(fibaro:getValue(968, "armed")) > 0 ) and ( tonumber(fibaro:getValue(969, "armed")) > 0 ) and ( tonumber(fibaro:getValue(988, "armed")) > 0 ) and ( tonumber(fibaro:getValue(989, "armed")) > 0 )) then
fibaro:call(58, "sendDefinedPushNotification", "94");
    end

Debug:
[DEBUG] 23:02:08: sceneInstance: 1
[DEBUG] 23:02:08: SCENE START --------------------------
[DEBUG] 23:02:08: sceneInstance: 1
[DEBUG] 23:02:10: sceneInstance: 1
[DEBUG] 23:02:10: SCENE START --------------------------
[DEBUG] 23:02:10: sceneInstance: 1
[DEBUG] 23:02:15: sceneInstance: 1
[DEBUG] 23:02:15: SCENE START --------------------------
[DEBUG] 23:02:15: sceneInstance: 1
[DEBUG] 23:02:17: sceneInstance: 1
[DEBUG] 23:02:17: SCENE START --------------------------
[DEBUG] 23:02:17: sceneInstance: 1
*

Offline viperlodz

  • Moderator Globalny
  • ***** 838
  • 23
  • Nazwa i wersja ID: HC3 / HC2/ HC3L / Yubii
Odp: Instancje
« Odpowiedź #3 dnia: Lipiec 20, 2016, 11:03:56 pm »
Uzbrajaasz pewnie wszystkie w jednym momencie w takim wypadku zawsze wyskoczy błąd instancji.


Tu jest miejsce co wchodzi do sceny.
964 armed
965 armed
967 armed
966 armed
968 armed
969 armed
988 armed
989 armed
*

Offline v41n

  • ** 35
  • 0
  • Nazwa i wersja ID: v41n
Odp: Instancje
« Odpowiedź #4 dnia: Lipiec 21, 2016, 07:23:49 am »
Uzbrajam albo w jednym momencie albo każdą osobno w ostępach 5 sekundowych.
Dodam, że debug pokazuje tylko jedną instancję bo ustawieniach sceny ustawiłem tylko jedną.

Czyli nie ma możliwości, żeby nie pokazywało błędu instancji?
*

Offline v41n

  • ** 35
  • 0
  • Nazwa i wersja ID: v41n
Odp: Instancje
« Odpowiedź #5 dnia: Lipiec 21, 2016, 10:06:45 pm »
Po lekturze i uwagach przerobiłem kod i działa. Nie powoduje przekroczenia instancji. Dzięki za pomoc.
Niektóre linijki mogą być zbędne bo sobie testowałem. Jutro zoptymalizuje.

--[[
%% properties
964 armed
%% events
%% globals
--]]

local czas = os.time()


    fibaro:debug("sceneInstance: "..fibaro:countScenes())
    fibaro:debug("SCENE START --------------------------")
    fibaro:debug("sceneInstance: "..fibaro:countScenes())
if fibaro:countScenes() > 1 then
    fibaro:debug("SCENE ABORT --------------------------")
    fibaro:abort()
  fibaro:killScenes(45)
    end

    fibaro:debug("Start")


 
if tonumber(fibaro:getValue(964, "armed")) > 0 then 
while true do
    if os.time() - czas > 60 then
        fibaro:debug("Upłynął czas")
        fibaro:call(964, "setArmed", 0)
        break
        end
   
    if ( tonumber(fibaro:getValue(965, "armed")) > 0 ) and ( tonumber(fibaro:getValue(967, "armed")) > 0 ) and ( tonumber(fibaro:getValue(966, "armed")) > 0 ) and ( tonumber(fibaro:getValue(968, "armed")) > 0 ) and ( tonumber(fibaro:getValue(969, "armed")) > 0 ) and ( tonumber(fibaro:getValue(988, "armed")) > 0 ) and ( tonumber(fibaro:getValue(989, "armed")) > 0 ) then
    fibaro:call(58, "sendDefinedPushNotification", "94");
        fibaro:call(46, "sendDefinedPushNotification", "94"); 
     
break
    end   
    end
end


if tonumber(fibaro:getValue(964, "armed")) == 0 then 
while true do
    if os.time() - czas > 60 then
        fibaro:debug("Upłynął czas")
        break
        end
           
      if ( tonumber(fibaro:getValue(965, "armed")) == 0 ) and ( tonumber(fibaro:getValue(967, "armed")) == 0 ) and ( tonumber(fibaro:getValue(966, "armed")) == 0 ) and ( tonumber(fibaro:getValue(968, "armed")) == 0 ) and ( tonumber(fibaro:getValue(969, "armed")) == 0 ) and ( tonumber(fibaro:getValue(988, "armed")) == 0 ) and ( tonumber(fibaro:getValue(989, "armed")) == 0 ) then
    fibaro:call(58, "sendDefinedPushNotification", "95");
        fibaro:call(46, "sendDefinedPushNotification", "95");
break
    end   
    end
end

fibaro:debug("Koniec")