Witam. Forum przeglądam dość często, ale moje piewsze pytanie bo nie mogę znaleźć sensownej odpowiedzi.
Mam problem z blockly ale może uda się rozwiązać temat za pośrednictwem dzvents.
Do rzeczy.
Mam kontaktron w drzwiach by sygnalizował jak zamek jest nie zamknięty po 22 czyli zmienna NOC.
W blockly ustawiłem powiadomienie na pushover bo z tego korzystam i jest super, ale tylko w momencie jak zmienna noc wskoczy na 1 i tylko raz. Nie potrafię poskładać kafelek aby powiadomienie przychodziło co np 60sekund tak bym nie przegapił powiadomienia, oraz powiadomienie że już zamknięte.
Pomyślałem o dzvents i skrypcie, ale nie ogarniam jeszcze tego na tyle by samemu skonstruować skrypt.
Czy będzie ktoś tak dobry i pomoże.
Rzeczy z których korzystam.
Skonfigurowany i działający pushover
Zmienna NOC
Przełącznik kontaktron o nazwie Drzwi zew góra
Pozdrawiam.
Widziałem ten temat, niestety nie wiem jak go za bardzo edytować, potrzebuję coś na "zaczepkę". Chciałem powiadomienia pushover i zmienną noc dodać. tam tego nie ma.
@piotrbanasik w tym skrypcie do którego link wstawił @dzidzi20 nie potrzeba deklarować powiadomienia pushover , bo domyślnie wysyła na wszystko co jest skonfigurowane w Domoticz .
Jedno co trzeba zmienić to timer , żeby wysyłał tylko w nocy i do tego nie potrzebna jest zmienna noc.
Masz tu na szybko przerobiony skrypt pod Twoje potrzeby
marker = "Kontrola wejść"
i
data = {
['Drzwi zew góra'] = {initial=0},
@isom dzieki wielkie, skrypt działa super. Poprawiłem te "krzaki w literówkach" troche teks powiadomień by był lepiej czytelny
Dzięki wielkie.
@piotrbanasik tekst w powiadomieniu był taki dlatego, że do ten skrypt pozwala na obsługę wszystkich wejść czy okien w domu i po rozbudowaniu tabeli urządzeń może być np Brama wjazd , brama garaż , Okno taras itd . Przy jednych drzwiach rzeczywiście ten tekst jest trochę do bani . Fajnie że działa
@isom wiem że cię męczę ostatnio, ale czy możesz mi zmodyfikować ten skrypt by działał z drugim dodanym kontaktronem? Np jeśli zamek 1 i 2 jest otwarty wyślij powiadomienie. Jeśli zamek 1 lub 2 jest zamknięty nie wysyłaj.
Proszę o pomoc w tym samym temacie. Do tej pory bawiłem się tylko bloczkami. I chciałem jak koledzy ustawić powiadomienia mail o otwartej bramie garażowej. Niestety na bloczkach poległem, a na dzVents się nie znam.
Zmieniłem w skrypcie nazwę na nazwę swojego kontraktonu, a także zmieniłem
"data = {
['nazwa mojego kontraktonu'] = {initial=0}
ale i tak nie otrzymuję maili.
Co jeszcze mam zmienić aby zadziałało?
Maile skonfigurowane za pomocą bloczków typu send mail otrzymuję.
@jacekk nie widzę twoich zmian , ale przypuszczam że skoro nie masz błędów w logach to wszystko zrobiłeś ok . Co do wysyłania wiadomości e-mail to ponieważ skrypt wysyła powiadomienia na wszystko co zostało skonfigurowane w Ustawienia , Powiadomienia , to polecam skonfigurować zakładkę e-mail w tych ustawieniach . Można tam wpisać adresy e-mail jednego lub kilku odbiorców
Jak mogę wysłać zrzut ekranu? Próbowałem wysłać ale nie mogłem załączyć pliku. Żaden format pliku nie chciał mi się załadować.
jak wcześniej pisałem maila ma skonfigurowanego w Domoticzu Ok bo dochodzą do mnie maile proste typu „Garaż otwarty” skonfigurowane w „klockach”.
@jacekk który skrypt używasz ? Jeśli ten kilka postów wyżej to on działa tylko w nocy , jak dodałeś ten skrypt do domoticz ? , wstaw logi z domoticz gdy otwierasz lub zamykasz tą bramę .
Dodałem poniższy skrypt w user variable poprzez kopiuj wklej
local devicesToCheck = { -- table with doors to check and the minutes before the first warning is given { ['name'] = 'Stan Bramy', ['threshold'] = 20 }, } -- number of times you are warned about an open door local alertCount = 3 return { on = { timer = {'every 2 minutes'}, }, logging = { level = domoticz.LOG_INFO,ERROR, marker = "kontrola" }, -- count per door of the number of alerts per door data = { ['Brama Garaż'] = {initial=0}, }, execute = function(domoticz) for i, deviceToCheck in pairs(devicesToCheck) do local name = deviceToCheck['name'] local threshold = deviceToCheck['threshold'] local state = domoticz.devices(name).state local minutes = domoticz.devices(name).lastUpdate.minutesAgo if ( state == 'Open') then domoticz.log('Device ' .. name .. ' staat ' .. minutes .. ' minuten open.') if (minutes > threshold) and (domoticz.data[name] < alertCount) then domoticz.data[name] = domoticz.data[name] + 1 domoticz.notify('Przypominam Otwarta ', name .. ' jest ' .. minutes .. ' minut otwarta.', domoticz.PRIORITY_HIGH) domoticz.log(' otwarta zbyt długo ' .. tostring(domoticz.data[name])) end elseif (domoticz.data[name] > 0) then domoticz.notify('Informuję ', name .. ' już zamknięta.', domoticz.PRIORITY_HIGH) domoticz.log('Device ' .. name .. ' jest ' .. minutes .. ' zamknięta') domoticz.data[name] = 0 end end end }
@jacekk W skrypcie nazwa czujnika i data muszą być takie same czyli jeśli tu jest "Stan Bramy "
local devicesToCheck = { -- table with doors to check and the minutes before the first warning is given { ['name'] = 'Stan Bramy', ['threshold'] = 20 }, }
To i Data czyli zmienna musi się tak nazywać
-- count per door of the number of alerts per door data = { ['Stan Bramy'] = {initial=0}, },
W innym przypadku nigdy nie dojdzie do spełnienia warunku jak poniżej gdyż korzysta on z nazwy
if (minutes > threshold) and (domoticz.data[name] < alertCount) then domoticz.data[name] = domoticz.data[name] + 1
Druga sprawa to lokalizacja skryptu , trzeba wkleić ten kod w domoticz , zdarzenia , dzvents , czyli wchodzimy w zdarzenia (tak jak w blockly) wybieramy dzVents minimal , kasujemy zawartość tego przykładu i w to wolne okno wklejamy ten kod i zapisujemy pod dowolną nazwą
Czy tak jest ok?
Wkleiłem tak jak pisałeś w zdarzenia wybierałem dzVents minimal wymazałem co było i wkleiłem poniższy kod i zapisałem
Bo nadal nie otrzymuje maili
local devicesToCheck = {
-- table with doors to check and the minutes before the first warning is given
{ ['name'] = 'Kontaktron Garaż', ['threshold'] = 1 },
}
-- number of times you are warned about an open door
local alertCount = 3
return {
on = {
timer = {'every 2 minutes'},
},
logging = {
level = domoticz.LOG_INFO,ERROR,
marker = "Kontrola wejść"
},
-- count per door of the number of alerts per door
data = {
['Kontaktron Garaż'] = {initial=0},
},
execute = function(domoticz)
for i, deviceToCheck in pairs(devicesToCheck) do
local name = deviceToCheck['name']
local threshold = deviceToCheck['threshold']
local state = domoticz.devices(name).state
local minutes = domoticz.devices(name).lastUpdate.minutesAgo
if ( state == 'Open') then
domoticz.log('Device ' .. name .. ' staat ' .. minutes .. ' minuten open.')
if (minutes > threshold) and (domoticz.data[name] < alertCount) then
domoticz.data[name] = domoticz.data[name] + 1
domoticz.notify('Przypominam Otwarta ',
name .. ' jest ' .. minutes .. ' minut otwarta.',
domoticz.PRIORITY_HIGH)
domoticz.log(' otwarta zbyt długo ' .. tostring(domoticz.data[name]))
end
elseif (domoticz.data[name] > 0) then
domoticz.notify('Informuję ',
name .. ' już zamknięta.',
domoticz.PRIORITY_HIGH)
domoticz.log('Device ' .. name .. ' jest ' .. minutes .. ' zamknięta')
domoticz.data[name] = 0
end
end
end
}
@isom co 2 minuty w logach pojawia mi sie to
@jacekk w logach jest super , a ile czasu czekasz na to powiadomienie , zostaw otwarty garaż na 10 minut i zobacz co się stanie albo wstaw logi po dwóch minutach od otwarcia tego garażu
W którym miejscu mam zmienić na 2 minuty?
Otworzyłem garaż na 2 h i żadnego maila nie otrzymałem. Co może być nie tak?
Nie mam szklanej kuli, logi przy otwartej bramie i konfiguracja e-mail to wtedy można coś powiedzieć