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
Witajcie
Mam odczyt mediów (zużycie ) w domoticzu (gaz,woda) - w bloczku counter incremental pokazuje mi zużycie dzienne i całościowe i to jest OK.
W ostatnim czasie uruchomiłem wyświetlacz na którym jest kilka tempteratur, temperatura termostatu, i ciśnienie na zewnątrz.
Pojawił się problem, gdy chciałem dodać tam zużycie gazu, które mam na Counter incremental.
pokazuje mi jakąś dziwną wartość - odczytane z Domoticza
18446744073709188277 | 0/18446744073709188277 |
a na obecną chwilę mam: 3.9 m3 - zakładam, że ta dziwna wartość to ogólna ilość impulsów, bo bloczek jakoś sobie to sam przelicza i pokazuje wartość poprawnie.
Chciałbym, aby pokazać dzienne zużycie gazu w m3 - proszę o podpowiedź jak zrobić jakiś skrypt (np.dzwents)
pozdrawiam
Jacek
Wysyłam kilka parametrów z Domoticza na wyświetlacz LCD w poniższym skrypcie lua:
function round(num, dec)
return tonumber(string.format("%." ..(dec or 0).. "f", num or 0))
end
temp1=round(otherdevices_temperature['Piec_CO_grzanie'],1)
temp2=round(otherdevices_temperature['Piec_CO_powrot'],1)
temp4=round(otherdevices_temperature['Smart_Thermostat - Thermostat temp'],1)
temp5=round(otherdevices_temperature['Na_zewnatrz_Temp'],1)
temp6=round(otherdevices_temperature['Zbiornik_CWU_TEMP'],1)
temp3=round(otherdevices_temperature['Salon Temp./Wlg.'],1)
humi=round(otherdevices_humidity['Salon Temp./Wlg.'],1)
baro=round(otherdevices_barometer['Airly - Ciśnienie powietrza'],1)
-- ilosc_gazu=round(domoticzdevices['Gaz_odczyt'],1)
commandArray = {}
commandArray[1]={['OpenURL']='192.168.2.139/cm?cuser=admin&cmnd=backlog%20mem1%20'..temp1..'%3Bmem2%20'..temp2..'%3B%20mem3%20'..temp3..'%3B%20mem4%20'..temp4..'%3B%20mem5%20'..temp5..'%3B%20mem6%20'..baro..'%3B%20mem7%20'..temp6..'%3B%20mem10%20'..temp3..'%3B%20mem11%20'..humi..''}
-- wersja z dodanym parametrem ilość_gazu
-- commandArray[1]={['OpenURL']='192.168.2.139/cm?user=admin&cmnd=backlog%20mem1%20'..temp1..'%3Bmem2%20'..temp2..'%3B%20mem3%20'..temp3..'%3B%20mem4%20'..temp4..'%3B%20mem5%20'..temp5..'%3B%20mem6%20'..baro..'%3B%20mem7%20'..temp6..'%3B%20mem10%20'..temp3..'%3B%20mem11%20'..humi..'%3Bmem12%20'..ilosc_gazu..''}`return commandArray
Chciałbym na końcu dodać jeszcze wartość parametru bieżące zużycie gazu w comman Array jako: %3Bmem12%20'..ilosc_gazu..'
Niestety jak próbuję odczytać go jak niżej:
ilosc_gazu=round(domoticzdevices['Gaz_odczyt'],1)
jednak pokazuje wartość: 18446744073709217016 zamiast tego co pokazuje bloczek Counter incremental w Utility, tj. np. 8.0
Szukając na forach znalazłem pomysł jak odczytać ten parametr domoticz.devices(idxOfCounter).counterToday w dzVents. Poniższy skrypt dzVents wartość odczytuje poprawnie i zapisuje do loga ale nie potrafiłem wysłać aktualnej wartości zużycia gazu do wyświetlacza LCD.
dzVents script to send counterToday value:
local idxOfCounter=124
return {
on = {
devices = {
idxOfCounter
}
},
logging = {
level = domoticz.LOG_INFO,
marker = 'template',
},
execute = function(domoticz, device)
local ilosc_gazu = domoticz.devices(idxOfCounter).counterToday
function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
domoticz.log('Device ' .. device.name .. ' was changed', domoticz.LOG_INFO)
domoticz.log('New value counterToday is '..round(ilosc_gazu,1), domoticz.LOG_INFO)
--poniżśze nie działa
domoticz.openURL({
url = '192.168.1.205/cm?user=admin&password=XXXXXX&cmnd=.............'
})
end
}
Wyświetlacz LCD podpięty do ESP z tasmotą z czujnikiem ruchu, żeby nie świecił cały czas.
Mam tam wgrane Rule:
Rule1
ON System#Boot DO backlog DisplayMode 1; var10 0 ENDON
ON tele-DHT11#Temperature DO mem10 %value% ENDON
ON tele-DHT11#Humidity DO mem11 %value% ENDON
ON Switch3#State DO Backlog add10 1; event START ENDON
ON event#START DO event BELL=%var10% ENDON
ON event#BELL=1.000 DO backlog power2 1;ruletimer1 30;DisplayMode 0;DisplayText[l1c1]P;DisplayText[l1c2]-[l1c7]%mem1%/[l1c12]%mem2%[l1c17]%mem4%[l2c1]ZEWN:[l2c6]%mem5%[l2c12]%mem6%hPa[l2c21]CO(%var4%)%var3%[l2c28]GW%var5%%var6%%var7%[l2c34]LP%var2%[l2c38]OS%var1%[l3c1]SALN: %mem10%/[l3c12]%mem11%[l3c17]%mem7% ENDON
ON event#BELL=0 DO backlog power2 0 ENDON
ON Rules#Timer=1 DO backlog var10 0;event BELL=0;DisplayMode 1 endon
Próbowałem i ciągle bezskutecznie.
Czy ktoś może mi pomóc , może prościej będzie odczytać odczytać wartość domoticz.devices(idxOfCounter).counterToday w w tym pierwszym skrypcie lua ?
Z góry dziękuję za wskazówki i pomoc.