Monitorowanie stanu...
 
Powiadomienia
Wyczyść wszystko

Monitorowanie stanu wejść z Satel integra

8 Wpisów
4 Użytkownicy
0 Reactions
1,384 Wyświetleń
(@piotras78)
Wpisów: 50
Kontrybutor
Autor tematu
 

Cześć

Potrzebuje cyklicznie odpytywać integre która podaje stan wejścia na zasadzie 1 - brak naruszenia, 3 naruszone i przepisywac ten stan do wirtualnych włączników on/off

zacząłem robić coś takiego jak poniżej ale wiem że jest to źle zrobione więc nawet nie odpalam (nie znam dzvents - kombinowałem z przerabianiem innego skryptu).

Najlepiej byłoby żeby sprawdzał jeszcze stan uzbrojenia systemu czyli jak jest 1 na wyjściu satela to system rozbrojony i sprawdza stan tych wejśc jak jest 3 - uzbrojony to niczego nie robi

return {
on = { timer = { 'every 2 minutes' }},

execute = function(dz, item)

local kont1 = dz.devices('Kontaktron górny - balkon Wiktor').nValue
local kont2 = dz.devices('Kontaktron górny - balkon Michalina').nValue
local kont3 = dz.devices('Kontaktron górny - okno garderoba').nValue
local kont4 = dz.devices('Kontaktron górny - balkon sypialnia').nValue
dz.devices('Okno Wiktor k').updateSwitch(kont1)
dz.devices('Okno Michalina k').updateSwitch(kont2)
dz.devices('Okno garderoba k').updateSwitch(kont3)
dz.devices('Okno sypialnia k').updateSwitch(kont4)

end
}

 

I jeszcze jeden temat przy okazji - mam głowice i termostaty w których ustawia się czas - czy jest możliwość (i jak) odczytywania czasu z domoticza i ustawianiu go automatycznie raz na dobę na tych urządzeniach (coś jak serwer czasu) ?

 
Dodane : 28/09/2020 12:47 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

A jak odpytujesz satela? Ma on moduł eth?

 
Dodane : 28/09/2020 1:18 pm
wojtek_gtx
(@wojtek_gtx)
Wpisów: 540
Ekspert Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K22, Donator 2K24
 

Do satela z tego co kojarzę jest dedykowana wtyczka pod Domoticz tyle że musi być moduł ETH 

Jak masz już taką wtyczkę to życie staje się prostsze

 
Dodane : 28/09/2020 1:22 pm
(@piotras78)
Wpisów: 50
Kontrybutor
Autor tematu
 

Mam moduł eth i wtyczkę - generalnie wszystko działa - steruje sobie nim różne rzeczy - wykorzystuje czujniki kontaktronowe i piry. 

Potrzebuje pytać o stan wejścia do sterowania głowicami. 

Mam napisany harmonogram ze zmianami temperatur w zależności od pory dnia i teraz jezeli mam otwarte okno np o 10:00 to stan tego wejścia zrealizował warunek o tej godzinie i temp. ustawiana jest na głowicy na np 10 stopni tak żeby nie grzał kaloryfer w danym pomieszczeniu. Jeżeli to okno jest długo otwarte a w tym czasie przyjdzie info o zmianie nastawy temp. z harmonogramu to temperatura ustawi się na np 22 stopnie i włączy się grzanie mimo że okno nadal jest otwarte (kontaktron zmienił swój stan tylko raz o 10 i wywołał realizacje obniżenia temp i dopóki jego stan się nie zmieni ponownie to zdarzenie zapisane w blokach nie zostanie powtórnie wykonane)

 
Dodane : 28/09/2020 2:22 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@piotras78 uważam, że tworzenie dodatkowych wirtualnych przełączników żeby widziały je klocki w blockly nie jest przyszłościowym pomysłem , ale skoro nie chcesz próbować przepisać blockly na dzVents to możesz próbować tego 

Nie testowałem tego bo nie mam jak za-symulować stanów 1 - 3 
jak byś chciał inną koncepcję np stan wszystkich okiem + selektor w domoticz 
to takie coś  
 
W obu przypadkach da się dodać stan samego alarmu w drugim rozbudowa selektora o dwa poziomy , w pierwszym przypadku powielasz skrypt i zmieniasz tylko  nazwy.
 
 
Dodane : 29/09/2020 8:22 pm
(@piotras78)
Wpisów: 50
Kontrybutor
Autor tematu
 

Wstępnie wydaje mi się że pierwszy skrypt działa prawidłowo (dokładnie sprawdze po powrocie do domu) - drugiego nie sprawdzałem.

Teraz jak się tak zastanowiłem to optymalnie byłoby żeby robił to w ten sposób:

Jeżeli okno jest otwarte powyżej 5 min (stan 3) i temperatura na termostacie jest wyższa niż 8 stopni to ustaw termostat na 8 stopni.

Uwzględniłoby to otwarcie chwilowe balkonu/tarasu (np żeby po coś wyjść) i wysyłałoby tylko informacje do termostatu do momentu ustawienia 8 stopni - w obecnej wersji wysyła to info co 2 min (wraz ze stanem okna).

Dzięki za pomoc

 
Dodane : 30/09/2020 1:47 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@piotras78 zmiany nastaw termostatu jak nie wiadomo jak masz poukładane klocki w tym swoim blockly , czarno trochę widzę . Wstaw fotkę tej układanki to może będzie łatwiej. Na tą chwilę mogę pomóc tak, że po otwarciu okna skrypt poczeka ponad 4 minuty zanim zmieni stan wirtualnego przełącznika "Stan okna".

Pierwsze odpalenie skryptu następuje po zmianie stanu faktycznego czujnika , załóżmy, że będzie to o godz 10:00:34 , o 10:01:00 skrypt  zostanie uruchomiony przez wyzwalacz czasowy  i zmieni stan wewnętrznej zmiennej z 0 na 1 , za dwie minuty kolejne wyzwolenie sprawdzi warunki czy zmienna się zgadza i kiedy aktualizował się czujnik , trzecie wyzwolenie  o 10:05:00 zmieni stan wirtualnego przełącznika "Stan okna". W tym przypadku od otwarcia okna do zmiany stanu wirtualnego przełącznika minie 4 min , 26 sek.

Zmiana czasu wyzwalania będzie regulowała długość tej pauzy .

 

 

Pamiętaj żeby dostosować nazwy urządzeń , jak w pierwszym skrypcie
 
Dodane : 30/09/2020 9:06 pm
(@piotras78)
Wpisów: 50
Kontrybutor
Autor tematu
 

Cześć

Postanowiłem się pozbyć zdarzeń blokach - duża część zajmuje mi konwersja stanów z satela integry (1/3) na on/off

Napisałem taki oto skrypt który niby działa ale tylko na trzech czujnikach (wejście 6,7,8)- dla czego reszta nie zmienia stanu ? Zmieniłem już nawet nazwy wejść na nr idx żeby pominąć błędy w pisowni. Dodatkowo przy naruszeniu jednego wejścia skryp odrazu odpytuje stany wszystkich czujników które się w nim znajdują - można to jakoś zrobić żeby wykonywał pętlę sprawdzająca tylko do danego naruszonego czujnika ?

 

return {
on = {
devices = {235, 332, 333, 334, 335, 336, 337, 338, 339, 340}
},
logging =
{
level = domoticz.LOG_DEBUG,
marker = 'Stan PIR satel',
},
execute = function(dz, device)

local wejscie1 = dz.devices (235)
local stan1 = dz.devices (648)

local wejscie2 = dz.devices (332)
local stan2 = dz.devices (642)

local wejscie3 = dz.devices (333)
local stan3 = dz.devices (643)

local wejscie4 = dz.devices (334)
local stan4 = dz.devices (641)

local wejscie5 = dz.devices (335)
local stan5 = dz.devices (645)

local wejscie6 = dz.devices (336)
local stan6 = dz.devices (644)

local wejscie7 = dz.devices (337)
local stan7 = dz.devices (639)

local wejscie8 = dz.devices (338)
local stan8 = dz.devices (640)

local wejscie9 = dz.devices (339)
local stan9 = dz.devices (647)

local wejscie10 = dz.devices (340)
local stan10 = dz.devices (646)

if wejscie1.state == '1' then
stan1.switchOff ()
elseif wejscie1.state == '3' then
stan1.switchOn ()
end

if wejscie2.state == '1' then
stan2.switchOff ()
elseif wejscie2.state == '3' then
stan2.switchOn ()
end

if wejscie3.state == '1' then
stan3.switchOff ()
elseif wejscie3.state == '3' then
stan3.switchOn ()
end

if wejscie4.state == '1' then
stan4.switchOff ()
elseif wejscie4.state == '3' then
stan4.switchOn ()
end

if wejscie5.state == '1' then
stan5.switchOff ()
elseif wejscie5.state == '3' then
stan5.switchOn ()
end

if wejscie6.state == '1' then
stan6.switchOff ()
elseif wejscie6.state == '3' then
stan6.switchOn ()
end

if wejscie7.state == '1' then
stan7.switchOff ()
elseif wejscie7.state == '3' then
stan7.switchOn ()
end

if wejscie8.state == '1' then
stan8.switchOff ()
elseif wejscie8.state == '3' then
stan8.switchOn ()
end
end
}

 
Dodane : 22/12/2020 10:40 pm
Udostępnij: