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
Witam!
Choć wiele zdążyłem się nauczyć przeglądając forum i implementując u siebie publikowane tutaj rozwiązania, to szukając rozwiązania czy podpowiedzi nie znajduję działającego rozwiązania na obecny "problem". Chciałbym mianowicie wiedzieć ile czasu(minut) utworzony (Dummy switch) "Pompa" był w stanie "On" dzisiaj a ile wczoraj (próbowałem z licznikiem przyrostowym). Niestety poległem i proszę o pomoc jak można to zrealizować.
@mariusz-2 Jestem więcej niż pewny, że temat był przerabiany na tym forum ale ok , nie wiem na jakim etapie wiedzy jesteś więc zaproponuję prosty skrypt dzVents , oczywiście trzeba sobie dostosować nazwy do swoich urządzeń , albo urządzenia do skryptu :))
W domoticz dodajesz zwykły licznik i edytujesz na surowe dane COUNT ( domyślnie jest energia )
Wchodzisz w zdarzenia , dodaj , dzVents , minimal , kasujesz zawartość przykłądu, wklejasz skrypt i zapisujesz .
return { on = { timer = {'every minute'} }, logging = { level = domoticz.LOG_DEBUG, marker = 'Czas pracy ', }, execute = function(dz, _ ) local switch = dz.devices('Switch') -- nazwa przełącznika local licznik = dz.devices('Licznik').counter -- nazwa licznika if switch.state == "On" then licznik = licznik + 1 dz.devices('Licznik').updateCounter(licznik) end end }
@isom Dziękuję za szybką odpowiedź. Poniżej to co mam.
local frequency = 5
local mySwitch = 'Tasmota241pompacyrkulacji'
local timeKeeper = 'Pompa_cyrkulacji'
local myTimeUnit = 'minute'
return
{
on =
{
timer = {'every '.. frequency .. ' minutes'},
devices = { mySwitch },
},
logging =
{
level = domoticz.LOG_ERROR,
marker = "getUptime" },
data =
{
state = { initial = "-" },
secondsOn = { initial = 0 },
base = { initial = 0 },
},
execute = function(dz, item)
local mySwitch = dz.devices(mySwitch)
local timeKeeper = dz.devices(timeKeeper)
local timeUnits = {
minute = 60,
hour = 3600,
second = 1,
}
local function updateCounter()
dz.data.secondsOn = dz.data.secondsOn + ( dz.time.dDate - dz.data.base )
if timeKeeper.count ~= dz.data.secondsOn / timeUnits[myTimeUnit] then
timeKeeper.updateCounter(dz.utils.round(dz.data.secondsOn / timeUnits[myTimeUnit]) )
end
end
if item.isTimer and mySwitch.active and dz.data.base ~= 0 then
updateCounter()
dz.data.base = dz.time.dDate
dz.data.state = mySwitch.state
elseif item.isDevice and mySwitch.active and dz.data.state ~= 'On' then
dz.data.base = dz.time.dDate
dz.data.state = 'On'
elseif item.isDevice and dz.data.state == 'On' then
updateCounter()
dz.data.state = 'Off'
elseif item.isTimer and dz.data.base == 0 then
dz.data.base = dz.time.dDate
dz.data.state = mySwitch.state
end
dz.log("State ==>> " .. mySwitch.state .. "; Date Time ==>> " .. dz.time.rawDate .." " ..
dz.time.rawTime .. "; " .. myTimeUnit .. "s On today ===>> " .. timeKeeper.counterToday ,dz.LOG_DEBUG)
end
}
Edit: Spróbowałem obu skryptów, po dobie liczniki się rozjechały (co prawda niewiele, ale ilość załączeń była ograniczona). Któremu wierzyć bardziej ?