Włączanie i wyłącza...
 
Powiadomienia
Wyczyść wszystko

Włączanie i wyłączanie żarówek

103 Wpisów
6 Użytkownicy
2 Likes
8,818 Wyświetleń
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Panowie coś mam źle bo oświetlenie nadal włączane jest w dzień przez czujkę.

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('at nighttime') 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
}
 
Dodane : 02/11/2021 9:56 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

Może przed

if item == motion and dz.time.matchesRule('at nighttime') then -- detekcja aktywna

zamień na

if item == motion and (domoticz.time > '30 minutes before sunset' and domoticz.time < '15 minutes after sunrise') then -- detekcja aktywna

timer ustaw na

timer = { 'every 1 minutes'}

 
Dodane : 02/11/2021 11:04 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

To powinno działać ale była wersja dzVents która nie reagowała na "at nigttime" , zmień te dwie linie gdzie masz at nighttime na 

 timer = {'between sunset and sunrise'}


 if item == motion and dz.time.matchesRule('between sunset and sunrise') then -- detekcja aktywna
 
Dodane : 02/11/2021 11:08 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@steel_rat warto jak to możliwe unikać niepotrzebnego wykonywania się skryptów , zaproponowałeś żeby skrypt wykonywał się co minutę nawet wtedy gdy nie ma ruchu , to zły pomysł szczególnie gdy tych skryptów przybywa. Domoticz jest jednowątkowy czyli nie wykona 20 skryptów na raz, a im więcej skryptów co minutę tym większe lagi się zrobią 

 
Dodane : 02/11/2021 11:18 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

@isom No to właściwie ten timer jest nie potrzebny. Powinno zostać tylko czujniki na które ma reagować. Myślałem że coś jest tam jeszcze sprawdzane co minute.

 
Dodane : 02/11/2021 11:29 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@steel_rat timer ustawiony w taki sposób ( tylko w nocy) powoduje ,że skrypt w dzień się nie uruchamia , przy ustawieniu co minutę będzie się wykonywał 24/7 . Skoro ma to działać w połączeniu z ruchem z PIR nie unikniesz timera ale możesz go ograniczyć 

 
Dodane : 02/11/2021 11:57 pm
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Panowie dalej nie robi skrypt jak powinien w dzień normalnie odpala oświetlenie ja coś zle wstawiłem ?

return {
    on = {
    devices = {
      'Garaż',    -- nazwa wlacznik w domoticz 
      'Czujka Pir' -- nazwa czujnika w domoticz
    },
    timer = {'between sunset and sunrise'}
  },
  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 sunset and sunrise') 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
}
 
Dodane : 03/11/2021 6:26 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Logi z tego skryptu z wieczora i z dnia trzeba tu wstawić , ten skrypt działa u mnie, sprawdziłem . Nie masz w systemie innego skryptu np blockly który włącza to oświetlenie ? 

Żeby sprawdzić nawet teraz wystarczy zamienić miejscami suset z sunrise czyli 

timer = {'between sunrise and sunset'}

i to samo w wierszu 

if item == motion and dz.time.matches
 
Dodane : 03/11/2021 7:58 pm
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

No właśnie mam taki bloczek:

Bloczek Garaż Satel

Może to wprowadzać zamęt ? Ten bloczek służy do tego co chciałem zrobić aby po włączeniu łącznikiem oś było aktywne przez ustalony czas a czujka ten czas resetowała. Zrobiłem sobie to na integrze.

Logi z dnia wrzucę jutro ponieważ teraz mam logi tylko od godziny 19:00

 
Dodane : 03/11/2021 8:55 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Te logi już nie potrzebne , to blockly włącza oświetlenie , przecież tam nie ma że ma włączać tylko w nocy . Czujnik satela aktywuje ten wirtualny PIR a to ma właczyć Garaż ot cała zagwostka . Usuń połowę tego blockly odpowiedzialną za włączenie Garażu i zobaczysz że będzie ok

 
Dodane : 03/11/2021 9:13 pm
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Wyłączę bloczek na próbę.

Ale jak wyłączę skrypt to bloczek mi nie zapali światła z czujki tylko zgasi po zapaleniu z klawisza po ustalonym czasie w integrze.

 
Dodane : 03/11/2021 9:26 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Całego nie możesz wyłączyć bo satel wysyła 1 albo 3 i to nie zadziała ze skryptem dzVents , konwersja musi zostać trzeba tylko wywalić załączenie Garaż 

 
Dodane : 03/11/2021 9:58 pm
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Do samej konwersji dla tego skryptu mam inny block. Ten block jest do tego aby czujka resetowala czas po włączeniu przez łącznik na ścianie więc mogę go wyłączyć na próbę śmiało pozbędę się tylko gaszenia światła jeśli ktoś zapali łącznikiem.

 
Dodane : 03/11/2021 11:02 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@daro1003 jak dublujesz sobie logikę w kilku skryptach to nie jest najlepiej. Ten bloczek który wstawiłeś robi tylko tyle że konwertuje 1 satela na OFF wirtualki a 3 satela na ON , w drugiej części na podstawie stanu wirtualnego PIR włącza lub wyłącza Garaż , jak masz drugi skrypt który robi to samo co pierwsza część tego bloczku to zapytam się po co ?

Skrypt dzVents pewnie działa tylko co z tego, jak równolegle działa bloczek który cały dzień włącza to samo oświetlenie . To tak jak byś na jednej linii satela podłączył dwa czujniki jeden w pokoju a drugi na zewnątrz i był zdziwiony że nikogo nie ma w pokoju a system wali alarmy. 

 
Dodane : 04/11/2021 9:18 am
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Hej @isom wyłączyłem ten bloczek i działa skrypt jak należy.

Mam pytanko odnoście tego skryptu co mi wcześniej podesłałeś:

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'},

 

Rozumiem że dodaje ten skrypt i nazwy przełączników zmieniam na własne i te przełączniki są kontrolowane i wyłączane w czasie pomiędzy podanymi godzinami.

I mogę dodać również garaż i nie będzie kolidowało z obecnym skryptem na garaż ? 

Co przypadku gdy się zasiedzę się w danym pomieszczaniu w godzinach wieczornych ? Światło zgaśnie mimo że czujka ma ruch ? Nie powinno chyba ?

Na obecną chwile czyli czas budowy warto dodać wszystkie przełączniki ponieważ jak zapomnimy gdzieś zgasić oś to i tak system to zrobi za mnie.

 
Dodane : 06/11/2021 4:30 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@daro1003 wszystko masz opisane wcześniej , wszystko co dodasz do tego skryptu będzie sprawdzane co 5 min w wyznaczonym czasie i jak coś jest włączone dłużej niż godzinę zostanie wyłączone . Jak się zasiedzisz a będziesz aktywował PIR to światło co najwyżej zgaśnie na chwilę . Te skrypty ze sobą nie kolidują 

 
Dodane : 07/11/2021 9:58 am
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Mam jeszcze dwa pytania:

1. Jak robię konwersje z satela na domoticza kolejnych czujek to dla każdej czujki robię nowy bloczek czy wszystkie w jednym ?

2. W skrypcie v3 jeśli chcę zapalać żarówkę z dwóch różnych czujek wystarczy że dodam tak czujniki:

return {
    on = {
    devices = {
      'Garaż',    -- nazwa wlacznik w domoticz 
      'Czujka Pir 1' -- nazwa czujnika w domoticz 2
      'Czujka Pir 2' -- nazwa czujnika w domoticz 2
    }
  },
  data =
    {
        warunek = { initial = false },
    },
    	logging =   
    {
        level = domoticz.LOG_DEBUG, 
        marker = 'PIR Lampa',
    },
  execute = function(dz, item)
        
        local maxSeconds = 200
        local motion = dz.devices('Czujka Pir 1') -- nazwa czujnika 
        local motion = dz.devices('Czujka Pir 2') -- nazwa czujnika 
        local switch = dz.devices('Garaż') -- nazwa włacznika

        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
}
 
Dodane : 15/12/2021 8:16 am
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

AD 1 To Ty decydujesz jak to sobie zrobić można w jednym dużym bloku lub dla każdego odzielnie

AD 2 Nie wystarczy tak zmienić skrypt , mając dwa czujniki i oba identyfikowane jako "motion" nie ma możliwości stwierdzenia na podstawie którego ma się włączać oświetlenie. Albo tworzysz tabelę z listą czujników i potem odnosisz się do tej tabeli a nie konkretnego czujnika , albo każdy czujnik musi być widziany jako np motion1 , motion2 itd.

 
Dodane : 16/12/2021 10:46 am
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

@isom taki skrypt przydałby się do również do włączania pompki obiegu ciepłej wody do łazienek i kuchni. Czujka w danym pomieszczeniu odpala pompkę obiegu wody.

Spróbowałem coś sklecić zerknij:

return {
    on = {
        'Sonoff 1',    -- nazwa wlacznik w domoticz 
        }
    local devicesToCheck = 
        {
         'Pir 1',  -- Tabela czujek pir
	     'Pir 2',
         'Pir 3',
	     'Pir 4',
	     'Pir 5'
	}
  },
  data =
    {
        warunek = { initial = false },
    },
    	logging =   
    {
        level = domoticz.LOG_DEBUG, 
        marker = devicesToCheck,
    },
  execute = function(dz, item)
        
        local maxSeconds = 200
        local motion = evicesToCheck  -- odniesienie do tabeli
        local switch = dz.devices('Sonoff 1') -- nazwa włacznika

        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
}

 

 
Dodane : 18/12/2021 1:46 pm
Daro1003
(@daro1003)
Wpisów: 761
Mistrz Patron Strony Donator 2K19, Donator 2K20, Donator 2K21, Donator 2K23
Autor tematu
 

Będzie to działać ?

 
Dodane : 24/12/2021 9:33 am
Strona 4 / 6
Udostępnij: