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

Domoticz Domoticz; counter incremental

2 Wpisów
1 Użytkownicy
0 Reactions
1,305 Wyświetleń
(@jac_k1)
Wpisów: 16
Praktykant
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#5785]

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 9:14 pm
(@jac_k1)
Wpisów: 16
Praktykant
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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 11:33 pm
Udostępnij: