Domoticz; counter i...
 
Powiadomienia
Wyczyść wszystko

UWAGAStrona 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

Kontakt

Domoticz Domoticz; counter incremental

2 Wpisów
1 Użytkownicy
0 Reactions
557 Wyświetleń
(@jac_k1)
Wpisów: 16
Praktykant
Autor tematu
 

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

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

 
Dodane : 30/12/2023 8:14 pm
(@jac_k1)
Wpisów: 16
Praktykant
Autor tematu
 

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.

 

 
Dodane : 15/01/2024 10:33 pm
Udostępnij: