Asystent AI
Powiadomienia
Wyczyść wszystko

Domoticz - Przepływ wody

11 Wpisów
2 Użytkownicy
0 Reactions
2,167 Wyświetleń
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 
[#3040]

Proszę o sprawdzenie skryptu do przeliczania przepływu na podstawie licznika Tasmoty. Tasmota liczy impulsy przepływomierza i co 60 sekund wysyła wartość do Domoticza na IDX Custom Sensor (testowalem też Counter) resetująć lokalny licznik.

 

Domoticz - urządzenia:

IDX: 103, Nazwa: Przeplyw_Domoticz, Podtyp: Custom Sensor, Jednostka: [impulsy/min]

IDX: 124, Nazwa: Przeplyw_Domoticz, Podtyp: Waterflow, Jednostka: [l/min]

IDX: 125, Nazwa: Przeplyw_Domoticz2, Podtyp: Custom Sensor, Jednostka: [l/h]

 

 

Reguła 1:

return {
on = {
devices = {
103
}
},
execute = function(domoticz, device)
domoticz.devices(124).updateWaterflow(((domoticz.devices(103).flow / 60) + 8 / 6) - 80)
end
}

Error LOG:

2022-08-15 14:50:03.734 Status: dzVents: Info: Handling events for: "Pompa_Przeplyw_Pulse", value: "340;1"
2022-08-15 14:50:03.734 Status: dzVents: Info: ------ Start internal script: Przeplyw: Device: "Pompa_Przeplyw_Pulse (Virtual)", Index: 103
2022-08-15 14:50:03.735 Status: dzVents: Debug: Processing device-adapter for Przeplyw_Domoticz: Waterflow device
2022-08-15 14:50:03.735 Status: dzVents: Info: ------ Finished Przeplyw
2022-08-15 14:50:03.735 Status: dzVents: !Info: Debug: Writing module summary to usunięty link
2022-08-15 14:50:03.735 Error: dzVents: Error: (3.1.8) An error occurred when calling event handler Przeplyw
2022-08-15 14:50:03.735 Error: dzVents: Error: (3.1.8) ... usunięty link : attempt to perform arithmetic on a nil value (field 'flow'

 

 

Reguła 2A - updateWaterflow:

return {
on = {
devices = {'Pompa_Przeplyw_Pulse'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Przeplyw Liczony"
},
execute = function(dz, device)
local pulsy = dz.devices('Pompa_Przeplyw_Pulse').state
local przeplyw = dz.devices('Przeplyw_Domoticz')
-- Obliczenia
local przeplyw_liczony = (((((pulsy / 60) + 8) / 6) * 60) - 80)
przeplyw.updateWaterflow(przeplyw_liczony)
dz.log('przeplyw pompy' .. l usunięty link  'przeplyw ' , dz.LOG_INFO)

end
}

 

Error LOG:

2022-08-15 14:52:03.731 Status: dzVents: Debug: - Device: Pompa_Przeplyw_Pulse
2022-08-15 14:52:03.742 Status: dzVents: Info: Handling events for: "Pompa_Przeplyw_Pulse", value: "8177;1"
2022-08-15 14:52:03.742 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Przeplyw_Pulse (Virtual)", Index: 103
2022-08-15 14:52:03.743 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz: Waterflow device
2022-08-15 14:52:03.743 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 14:52:03.743 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to usunięty link
2022-08-15 14:52:03.743 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 14:52:03.743 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:13: attempt to perform arithmetic on a string value (local 'pulsy')

 

 

Reguła 2B - updateCustomSensor

return {
on = {
devices = {'Pompa_Przeplyw_Pulse'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Przeplyw Liczony"
},
execute = function(dz, device)
local pulsy = dz.devices('Pompa_Przeplyw_Pulse')
local przeplyw = dz.devices('Przeplyw_Domoticz2')
-- Obliczenia
local przeplyw_liczony = (((((pulsy / 60) + 8) / 6) * 60) - 80)
przeplyw.updateCustomSensor(przeplyw_liczony)
dz.log('przeplyw pompy' .. l usunięty link  'przeplyw ' , dz.LOG_INFO)

end
}

 

Error LOG:

2022-08-15 14:58:04.113 Status: dzVents: Debug: - Device: Pompa_Przeplyw_Pulse
2022-08-15 14:58:04.124 Status: dzVents: Info: Handling events for: "Pompa_Przeplyw_Pulse", value: "8101;1"
2022-08-15 14:58:04.124 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Przeplyw_Pulse (Virtual)", Index: 103
2022-08-15 14:58:04.125 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz2: Custom sensor device adapter
2022-08-15 14:58:04.125 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 14:58:04.125 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to usunięty link
2022-08-15 14:58:04.125 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 14:58:04.125 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:13: attempt to perform arithmetic on a table value (local 'pulsy')

 

Z góry dzękuję za pomoc .

Pozdrawiam,

Jarek

 

 

 


 
Dodane : 15/08/2022 3:00 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 

W wersji 2A zmień wiersz 

Dodane przez: @sonda1975

local pulsy = dz.devices('Pompa_Przeplyw_Pulse').state

Na 

local pulsy = tonumber(dz.devices('Pompa_Przeplyw_Pulse').state)

dalszej matematyki nie kumam więc nie sprawdzę 


 
Dodane : 15/08/2022 3:53 pm
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 

Witam,

 

Jak kolwiek kombinuję ciagle to samo:

Opcja 1

return {
on = {
devices = {'Pompa_Impulsy'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Przeplyw Liczony"
},
execute = function(dz, device)
local przeplyw = dz.devices('Przeplyw_Domoticz2') --nazwa virtualnego licznika
--local impulsy = dz.utils.stringSplit('Pompa_Impulsy',convertNumber) -- impulsy na minute z Tasmota
local impulsy = tonumber(dz.devices('Pompa_Impulsy')) -- impulsy na minute z Tasmota

-- Obliczenia
local przeplyw_liczony = ((((( impulsy / 60) + 8) / 6) * 60) - 80)
dz.devices(przeplyw).updateCustomSensor(przeplyw_liczony)
dz.log('przeplyw pompy' .. l usunięty link  'przeplyw ' , dz.LOG_INFO)

end
}

ERROR LOG

2022-08-15 16:42:04.067 Status: dzVents: Info: Handling events for: "Pompa_Impulsy", value: "8356;1"
2022-08-15 16:42:04.068 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Impulsy (Virtual)", Index: 129
2022-08-15 16:42:04.068 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz2: Custom sensor device adapter
2022-08-15 16:42:04.068 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 16:42:04.068 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to usunięty link
2022-08-15 16:42:04.068 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 16:42:04.068 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:15: attempt to perform arithmetic on a string value (local 'impulsy')

 

Opcja 2

rreturn {
        on = {
                devices = {'Pompa_Impulsy'}
        },
     logging = {
                level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
                marker = "Przeplyw Liczony"
             },    
        execute = function(dz, device)
		local przeplyw = dz.devices('Przeplyw_Domoticz2') --nazwa virtualnego licznika
		--local impulsy = dz.utils.stringSplit('Pompa_Impulsy',convertNumber) -- impulsy na minute z Tasmota
		local impulsy = dz.devices('Pompa_Impulsy').state -- impulsy na minute z Tasmota (tonumber())
		
		-- Obliczenia
	    local przeplyw_liczony =  ((((( impulsy / 60) + 8) / 6) * 60) - 80)
	    dz.devices(przeplyw).updateCustomSensor(przeplyw_liczony)
	    dz.log('przeplyw pompy' .. l usunięty link  'przeplyw ' , dz.LOG_INFO)
	
end
}

 

ERROR LOG

2022-08-15 16:49:04.023 Status: dzVents: Debug: - Device: Pompa_Impulsy
2022-08-15 16:49:04.034 Status: dzVents: Info: Handling events for: "Pompa_Impulsy", value: "8432;1"
2022-08-15 16:49:04.034 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Impulsy (Virtual)", Index: 129
2022-08-15 16:49:04.035 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz2: Custom sensor device adapter
2022-08-15 16:49:04.035 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 16:49:04.035 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to usunięty link
2022-08-15 16:49:04.035 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 16:49:04.035 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:15: attempt to perform arithmetic on a string value (local 'impulsy')

 

OPCJA 3

return {
on = {
devices = {'Pompa_Impulsy'}
},
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
marker = "Przeplyw Liczony"
},
execute = function(dz, device)
local przeplyw = dz.devices('Przeplyw_Domoticz2') --nazwa virtualnego licznika
local impulsy = dz.utils.stringSplit('Pompa_Impulsy',convertNumber) -- impulsy na minute z Tasmota
--local impulsy = dz.devices('Pompa_Impulsy').state -- impulsy na minute z Tasmota (tonumber())

-- Obliczenia
local przeplyw_liczony = ((((( impulsy / 60) + 8) / 6) * 60) - 80)
dz.devices(przeplyw).updateCustomSensor(przeplyw_liczony)
dz.log('przeplyw pompy' .. l usunięty link  'przeplyw ' , dz.LOG_INFO)

end
}

ERROR LOG

2022-08-15 16:51:03.796 Status: dzVents: Debug: - Device: Pompa_Impulsy
2022-08-15 16:51:03.807 Status: dzVents: Info: Handling events for: "Pompa_Impulsy", value: "8278;1"
2022-08-15 16:51:03.807 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Impulsy (Virtual)", Index: 129
2022-08-15 16:51:03.808 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz2: Custom sensor device adapter
2022-08-15 16:51:03.808 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 16:51:03.808 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to usunięty link
2022-08-15 16:51:03.808 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 16:51:03.808 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:15: attempt to perform arithmetic on a table value (local 'impulsy')

 

Dzękuję za pomoc.

Pozdrawiam,

Jarek


 
Dodane : 15/08/2022 4:54 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 
Dodane przez: @sonda1975

IDX: 103, Nazwa: Przeplyw_Domoticz, Podtyp: Custom Sensor, Jednostka: [impulsy/min]

IDX: 124, Nazwa: Przeplyw_Domoticz, Podtyp: Waterflow, Jednostka: [l/min]

Nie mogą być dwa czujniki z tą samą nazwą . Który ma być brany pod uwagę ? 

Dodatkowo w żadnej wersji nie widzę prawidłowej konwersji ciągu znaków na liczbę całkowitą . Podałem jak ma to wyglądać.

Nie można zrobić działań matematycznych na ciągu znaków 200 impulsów/min 


 
Dodane : 15/08/2022 6:36 pm
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 

Mój błąd

Jeśli wszystko na CustomSensor to:

IDX: 103, Nazwa: Pompa_Przeplyw_Pulse, Podtyp: Custom Sensor, Jednostka: [impulsy/min]

IDX: 125, Nazwa: Przeplyw_Domoticz2, Podtyp: Custom Sensor, Jednostka: [l/h]]

 

A jeśli WaterFlow to

IDX: 103, Nazwa: Pompa_Przeplyw_Pulse, Podtyp: Custom Sensor, Jednostka: [impulsy/min]

IDX: 124, Nazwa: Przeplyw_Domoticz, Podtyp: Waterflow, Jednostka: [l/min]

 

 


 
Dodane : 15/08/2022 6:53 pm
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 

@isom 

Niestety efekt ten sam. Zawziąłem się a to czasami się nie opłaca.

Zrobiłem ten przepływ poprzez zasadę w samej Tasmocie. Moduł ESP32 liczy to zgodnie ze wzorem przepływomierza w cyklu 60 sekundowym,  co daje l/min, więc chyba sobie odpuszczę Skrypt.

Następna wersja:

return {
        on = {
                devices = {'Pompa_Przeplyw_Pulse'}
        },
     logging = {
                level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
                marker = "Przeplyw Liczony"
             },    
        execute = function(dz, device)
		local przeplyw = dz.devices('Przeplyw_Domoticz2') --nazwa virtualnego licznika
		local impulsy = tonumber(dz.devices('Pompa_Przeplyw_Pulse').state) -- impulsy na minute z Tasmota (tonumber())
		
		-- Obliczenia
	    local przeplyw_liczony =  ((((( impulsy / 60) + 8) / 6) * 60) - 80)
	    dz.devices(przeplyw).updateCustomSensor(przeplyw_liczony)
	    dz.log('przeplyw pompy' .. l/h.. 'przeplyw ' , dz.LOG_INFO)
	
end
}

 

ERROL LOG

2022-08-15 19:03:05.115 Status: dzVents: Debug: Event triggers:
2022-08-15 19:03:05.115 Status: dzVents: Debug: - Device: Pompa_Przeplyw_Pulse
2022-08-15 19:03:05.126 Status: dzVents: Info: Handling events for: "Pompa_Przeplyw_Pulse", value: "8501;1"
2022-08-15 19:03:05.126 Status: dzVents: Info: Przeplyw Liczony: ------ Start internal script: Przeplyw v2: Device: "Pompa_Przeplyw_Pulse (Virtual)", Index: 103
2022-08-15 19:03:05.127 Status: dzVents: Debug: Przeplyw Liczony: Processing device-adapter for Przeplyw_Domoticz2: Custom sensor device adapter
2022-08-15 19:03:05.127 Status: dzVents: Info: Przeplyw Liczony: ------ Finished Przeplyw v2
2022-08-15 19:03:05.127 Status: dzVents: !Info: Przeplyw Liczony: Debug: Writing module summary to /home/pi/domoticz/scripts/dzVents/module.log
2022-08-15 19:03:05.127 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: An error occurred when calling event handler Przeplyw v2
2022-08-15 19:03:05.127 Error: dzVents: Error: (3.1.8) Przeplyw Liczony: ...moticz/scripts/dzVents/generated_scripts/Przeplyw v2.lua:14: attempt to perform arithmetic on a nil value (local 'impulsy')

 

Komentarz.

Tasmota liczy impulsy z przepływomierza i co 60 sekund wysyła tą wartość pod IDX 103 (Custom sensor 'Pompa_Przeplyw_Pulse') i jednocześnie resetując licznik, co daje wartość chwilową =  ilość impulsów / min. Wartośc ta podzielona przez 60 daje impulsy na sekundę, czyli czestotliwośc [F].

Domoticz otrzymuje co 60 sekund dla przykładu wartośc = 10000 impulsów, co daje częstotliwosc 167 Hz (=10000/60). Wzór na przepływ: Q=(F+8)/6 [l/m] lub Q=(((F+8)/6)*60)-80 [l/h]. 80 to wartośc stała dająca przepływ zerowy przy F=0.

 

Dziękuję,

 


 
Dodane : 15/08/2022 7:11 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 

@sonda1975 weź sobie skoro się tak uparłeś podstaw swoje nazwy do tego co poniżej, to oczywiście nie ma sensu bo dzielę wartość impulsów przez dwa ale zobacz foto

1
return 
{
on = 
{
devices = { 'Impulsy'}
}, 
logging = {
level = domoticz.LOG_DEBUG, -- zmien na domoticz.LOG_ERROR, gdy skrypt bedzie Ok
 marker = "Licznik "
}, 
execute = function(dz, devices)
local przeplyw = dz.devices('Przepływ') -- nazwa wirtualnego licznika przepływu  litry / min
local licznik=tonumber(dz.devices('Impulsy').state) -- nazwa licznika tasmota
local oblicz = licznik/2
przeplyw.updateCustomSensor(oblicz) -- wysłanie obliczonego przepływu do wirtualnego przepływomierza
end
}

 
Dodane : 15/08/2022 8:35 pm
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 

@isom

 

Moge jeszcze prosić o typ zastosowanego sensora virtualnego dla zmiennej "licznik"? Pytam, bo error jest ten sam, więc musi to być problem z typem zastosowanego u mnie wirtualnego licznika przepływu.

 

Dziękuję,

 

 


 
Dodane : 15/08/2022 8:50 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 
Dodane przez: @sonda1975

Moge jeszcze prosić o typ zastosowanego sensora virtualnego dla zmiennej "licznik"? Pytam, bo error jest ten sam, więc musi to być problem z typem zastosowanego u mnie wirtualnego licznika przepływu.

 

1
2

 
Dodane : 15/08/2022 8:54 pm
sonda1975
(@sonda1975)
Wpisów: 6
Bywalec
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
 

@isom  Więc, zrobiłem mały test z prostym skryptem zamiany jednostki przepływu z l/m na l/h. Chciałem mieć poprawną jednostkę przepływu w w litrach na godzinę a nie jak standartowo oferuje Domoticz (wersja 2022.1)  dla sensora wirtualnego Waterflow litrach na minutę.

Skrypt ma po prostu pobierać wartość IDX 131 i wprost podstawiać ją za IDX 134 w celu wyświertlania poprawnej jednostki l/h

IDX:

  • 131 - SubTyp: Waterflow, wymyszony przez Domoticz na  l/min, ale tak naprawdę l/h bo wyliczany jest przez sam moduł Tasmota i wysyłany komędą: publish domoticz/in {"idx":131,"svalue":"%mem3%;1"} już przeliczony w litrach na godzinę.
  • 134 - SubTyp: Custom sensor z opisem jednostki l/h.

 

Działająca wersja - konversja jednostki l/m >>> l/h

return {
on = {devices = { 131}}, 
logging = {level = domoticz.LOG_ERROR, -- zmien na domoticz.LOG_ERROR, LOG_DEBUG gdy skrypt bedzie Ok
marker = "Przeplyw"}, 
execute = function(dz, devices)
    local przeplyw = dz.devices(134) -- nazwa wirtualnego licznika przepływu  litry / min
    local licznik=tonumber(dz.devices(131).flow) -- nazwa licznika tasmota
    local oblicz = licznik
przeplyw.updateCustomSensor(oblicz) -- wysłanie obliczonego przepływu do wirtualnego przepływomierza
end
    }

Zwracam uwagę na parametr 'flow" zmiennej 'licznik' bez którego skrypt przestaje działac.

Wkrypt się wywala gdy:

  • brak parametru "flow' dla zmiennej 'licznik' lub jakakolwiej zamiana na 'state" skutkuje brakiem ["sValue"]=(przeliczona wartośc).
    Bez parametr

    Z parametr

 

Dziękuję za odpowiedz,

 

 


 
Dodane : 16/08/2022 10:04 am
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 

@sonda1975 zupełnie nie rozumiem problemu, może przenieś kolego swoje doświadczenia do tematów związanych z domoticz/ zdarzenia, bo to już mocno odbiega od szybkiego pytania. Najlepiej nowy wątek . Co do jednostek w customsensor to nie mają one zupełnie znaczenia. Przykład poniżej dla czujnika Waterflow , który aktualizuje czujnik CustomSensor

1
Dodane przez: @sonda1975

local licznik=tonumber(dz.devices(131).flow) -- nazwa licznika tasmota

Tu nie potrzeba "tonumber" , bo w czujniku przepływu wartość jest liczbą a dpisek .flow mówi nam w jakich to jest jednostkach, taki wpis ma zastosowanie przy CustomSensor gdzie mamy doczynienia z ciągiem znaków na dodatek dowolnie konfigurowanym przez użytkownika


 
Dodane : 16/08/2022 11:14 am
Udostępnij: