UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Wracając do tematu da rade zrobić tak:
1. Wchodzę do np garażu odpala się oś z czujki i jeśli czujka wykrywa ruch resetuje czas i świeci jeśli nie wykrywa oś gaśnie to mamy obecnie w skrypcie 3v i u mnie działa ok.
2. W tym samym skrypcie łącznik ścienny działa podobnie jak czujka czyli klikam zapala oś i tu na ustawiony czas ale jeśli czujka wykrywa ruch to ten czas resetuje jeśli nie wykryje gasi światło.
@isom jest taka możliwość ten skrypt tak zmodyfikować ? Lub czy da się to zrobić w bloczkach ?
@daro1003 w skrypcie łącznik = żarówka więc nie da się zrobić "jak łącznik = ON to włącz żarówkę na 10 min " . Możesz sobie w tym garażu ustawić auto wyłączenie w samym przełączniku albo oddzielny skrypt w blockly
1. Czyli skrypt zostawiam jak jest.
2. Auto wyłączanie robię dodatkowo w bloczkach ok ale jak jeśli czujka 5 min off to żarówka off ??
3. I czy to zadziała łącznie z skryptem który jaż mam jak dodam taki blok ?
Co do czasu ustawionego w przełączniku to słabo bo chciałbym aby czas był resetowany przez czujkę wiadomo opcja pierwsza zapalanie i gaszenie z czujki czas krótszy a zapalone z przełącznika czas długi.
Popełniłem więc taki bloczek:
Wygląda że działa bo jak kliknę w domoticzu na przełącznik to po ustawionym czasie go zgasi więc się nie gryzie z skryptem, jutro sprawdzę na budowie jak działa zapalanie i gaszenie z pira. Pytanie czy da się podać czas w minutach ?
Jednak blok nie wprowadza poprawnego działania os gaśnie po ustawionym w bloku czasie a czujka nie resetuje czasu mimo naruszeń więc mam chyba źle blok skonstruowany.
@daro1003 czego ty oczekujesz ? Skrypt dzVents jest napisany tak żeby jak ktoś chce włączyć światło na stałe to może i wtedy czujnik jest ignorowany a gdy nie włączysz włącznikiem to włączy je PIR na ustawiony czas . Dodanie dowolnego bloku nie zmieni działania tego skryptu a w bloku nie ustawisz resetowania czasu.
@isom w sumie rozwiązanie ok włącznik jest włącznikiem i działa jak w tradycyjnej instalacji a pir na ustawiony czas to dodatek jednakże zamiast tego przełącznika na stałe lepiej byłoby przełącznik na osobny czas resetowany przez czujnik ustawiam na dłuższy czas a czujnik go resetuje i jest na stałe a w wyrazie zapomnienienia gaśnie.
@daro1003 gdybym widział sens takiego rozwiązania to bym pewnie napisał taki skrypt , ale nie widzę absolutnie sensu. Jak chcę czytać książkę czy siedzę przy kompie to nie naruszam czujnika i chcę mieć oświetlenie na stałe a jak chcę wejść na 5 minut to nie włączam na stałe. Jak włączę na stałe i zapomnę to jak idę spać to system i tak zgasi .
Przekombinowany system jest gorszy niż jego brak , a co mają zrobić Ci co nie mają automatyki i zapomną ?
@isom No widzisz czyli masz skrypt który sprawdza które oś się świeci niepotrzebnie i gasi.
Tak jak piszesz w pokoju tego nie zastosuję ale u mnie żona w spiżarce zapala oś a nie gasi nigdy świeci się 24h to samo garaż, kotłownia więc dla mnie taki skrypt ma jak najbardziej sens.
Natomiast dla pokoju salonu sypialni ten skrypt v3 jest ok bo zapalam światło do puki nie zgaszę.
@daro1003 przecież Ty też masz do dyspozycji taki skrypt , tylko nie umiesz go wykorzystać . Możesz ustawić scenę w domoticz aktywowaną np włącznikiem światła w sypialni , jak to nie pasuje to możesz wykorzystać skrypt który tu wstawiłem a który sprawdza ile czasu coś jest włączone i jak za długo to wyłącza, wystarczy zmienić początek na taki
local THRESHOLD = 60 -- czas w minutach przez jaki oświetlenie może być ON local devicesToCheck = { 'Lampa1', -- Tabela przełączników zmień nazwy na swoje 'Lampa2', 'Lampa3', 'Spiżarnia' 'Garaż' } return { on = { devices = devicesToCheck, timer = {'every 5 minutes between 21:30 and 23:30'},
I będzie tak : Po godzinie 21:30 do godziny 23:30 wszystko co wskazane w tabeli będzie sprawdzane i jeżeli jest włączone dłużej niż godzinę to skrypt to wyłączy
W zasadzie to oryginalny skrypt do takich pomieszczeń jak spiżarnia czy garaż wystarczy bo nikt nie siedzi w spiżarni dłużej niż 30 minut a skrypt się wykonuje przez cały dzień co 5 minut
Ok weźmy pod uwagę skrypt który sprawdza które włączniki są powyżej ustalonego czasu czyli odpalam os łącznikiem na ścianie i mnie niema w pomieszczeniu i on mi gasi oświetlenie a co w temacie gdy jestem w pomieszczeniu powyżej czasu w skrypcie również mi zgasi mimo że czujka wykrywa ruch bo tam czujka nie resetuje czasu. Więc to nie to co chce osiągnąć.
Sam sobie kodu nie zmodyfikuje ponieważ nie wiem co jest co za co odpowiada i wogle jestem zielony w tym temacie.
Spróbuję wykombinować coś z użyciem Integry tylko stracę mnóstwo wejść i wyjść ale tam może sie uda zrobić że dane wyjście jest naruszone ustalony czas i czas się resetuje reszta powinna się wykonać w blockly.
A mogę @isom wstawić w skrypt v3 warunek którym jest godzina w jakich czujka ma zapalać światło zamiast lux ?
@daro1003 oczywiście że możesz, wystarczy dodać na początku skryptu dodatkowy wyzwalacz np między 19 a 23:00 czyli tak jak poniżej
return { on = { devices = { 'Lampa', -- nazwa wlacznik w domoticz 'PIR' -- nazwa czujnika w domoticz }, timer = { 'between 19:00 and 23:00'} },
i dodać ten warunek czasowy w wierszu
if item == motion and dz.time.matchesRule('between 19:00 and 23:00') then -- detekcja aktywna
A jeszcze można zrobić inaczej do odpalania tego skryptu z czujki mam taki bloczek:
Czy da się go tak przerobić aby wstawić zachód i wschód słońca ? Żeby bloczek był aktywny po zachodzie słońca a po wschodzie nie ?
Wtedy nie musiałbym zmieniać godzin włączenia i wyłączenia jesienną czy wiosenną pora.
To bardzo proste zmieniasz
timer = {'between aa and bb'}
na to
timer = { 'at nighttime'}
i to samo wstawiasz do wiersza
if item == motion and dz.time.matchesRule('between 19:00 and 23:00') then -- detekcja aktywna
@isom wstawiam to:
timer = { 'at nighttime'}
i to :
if item == motion and dz.time.matchesRule('between 19:00 and 23:00') then -- detekcja aktywna
ale godziny są wtedy przez system brane z:
@daro1003 a czego oczekujesz ? Przecież skoro noc - nighttime to dla systemu noc jest po zachodzie słońca i do wschodu słońca , albo ustalasz godziny albo jak nie chcesz ich co jakiś czas korygować masz godziny nocne które system sam zmienia
@isom i o to chodziło aby czas brany był z systemu a nie z ustawień ręcznych dzięki.
Hej @isom
No i skrypt nie robi wchodzę teraz do garażu i oświetlenie się odpala a nie powinno.
Coś zle wstawiłem ??
return { on = { devices = { 'Garaż', -- nazwa wlacznik w domoticz 'Czujka Pir' -- nazwa czujnika w domoticz } timer = { 'at nighttime'} }, data = { warunek = { initial = false }, }, logging = { level = domoticz.LOG_DEBUG, marker = 'PIR Lampa', }, execute = function(dz, item) local maxSeconds = 120 local motion = dz.devices('Czujka Pir') -- nazwa czujnika local switch = dz.devices('Garaż') -- nazwa włacznika if item == motion and dz.time.matchesRule('between 19:00 and 23:00') then -- detekcja aktywna if item == motion then -- detekcja aktywna if motion.active and not switch.active then -- detekcja wyzwala skrypt dz.data.warunek = true switch.cancelQueuedCommands() switch.switchOn().checkFirst() elseif motion.active and switch.active and dz.data.warunek == true then switch.cancelQueuedCommands() elseif not motion.active and dz.data.warunek == true then switch.switchOff().afterSec(maxSeconds).checkFirst() end elseif item == switch and item.active and not motion.active then dz.data.warunek = false end end }
wywal linie
if item == motion then
bo znosi warunek wyżej chyba że się mylę, nie znam skryptów domoticza.
Pozdrawiam
Rafał
Dokładnie tak jak napisał @alien jeśli wstawi się warunek "jeśli wystąpi ruch" bez dodatkowych warunków to spełnia to wymagania załączenia oświetlenia o każdej porze dnia i nocy.
trzeba usunąć to ze skryptu i zmienić
if item == motion and dz.time.matchesRule('between 19:00 and 23:00') then
na
if item == motion and dz.time.matchesRule('at nighttime') then