Uniwersalny Termost...
 
Powiadomienia
Wyczyść wszystko

Uniwersalny Termostat z Histereza na bazie Domoticza

79 Wpisów
17 Użytkownicy
11 Reactions
16.4 K Wyświetleń
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Panowie pomocy.

Usiluje przerobic skrypt pod sterowanie klima.

local heating_probe = 'Salon' 
local thermostat_setpoint = 'Termostat_Klima'
local heating_unit1 = 'Grzanie_20'
local heating_unit2 = 'Grzanie_22'
-- Use when a combined sensor (e.g. temperature and humidity) is used
-- Replace in "otherdevices[heating_probe]" to "otherdevices[heating_probe]" by "temp_only" (in the 2nd "if" and in the "elseif".
-- Remove the -- in the next two lines:
local naartekst = (tostring (otherdevices[heating_probe]))
local temp_only = (string.sub(naartekst,1,4)) -- the digits (1,4) do point out what characters of the string are needed.
local hysteresis = 0.1
commandArray = {}
-- loop through all the devices
for deviceName,deviceValue in pairs(otherdevices) do
if (deviceName== thermostat_setpoint ) then
if tonumber(deviceValue) < tonumber(temp_only - hysteresis) then
if (otherdevices[heating_unit2] == "On") then
-- commandArray['SendNotification']='Heating is off'
commandArray[heating_unit1]='On'
print("Heating is Off")
end
elseif tonumber(deviceValue) > tonumber(temp_only + hysteresis) then
if (otherdevices[heating_unit1] == "On") then
commandArray[heating_unit2]='On'
-- commandArray['SendNotification']='Heating is on'
print("Heating is On")
end
end
end
end
-- loop through all the variables
for variableName,variableValue in pairs(uservariables) do
end 
return commandArray

Chcialbym aby gdy temperatura przekroczy zadana w termostacie wartosc skrypt uruchamial device Grzanie_20 czyli heating_unit1 a jesli temperatura spadnie ponizej zadanej to ma uruchomic device Grzanie_22czyli heating_unit2.

Probuje dluzszy czas i ciagle mam blad :

Error: dzVents: Error: (3.0.2) ...cz/scripts/dzVents/generated_scripts/Termostat_Klima.lua:8: attempt to index a nil value (global 'otherdevices')

Da sie cos z tym zrobic?

Zapomnialem dodac ze moje urzadzenia Grzanie_20 i Grzanie_22 to urzadzenia typu Push On Button

obraz
 
Dodane : 10/09/2022 7:53 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@kniazio zacznij przerabiać jakiś skrypt dzVents , albo ten co próbujesz nie wstawiaj jako dzVents bo to jest skrypt LUA a nie dzVents 

 
Dodane : 10/09/2022 8:32 pm
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
 

Z LUA tez mi nie wychodzi. Ciagle jakies bledy

 
Dodane : 10/09/2022 9:01 pm
(@przemo)
Wpisów: 18
Praktykant
 

@isom

Możesz podesłać linka do wtyczki co ma możliwość uczenia się charakterystyki cieplnej budynku ? Wtyczka o której wspominasz pod koniec drugiego postu.

 
Dodane : 11/09/2022 9:35 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@przemo jest na wiki 

https://www.domoticz.com/wiki/Plugins/Smart_Virtual_Thermostat.html

 
Dodane : 12/09/2022 9:26 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 
Dodane przez: @isom

@stanislawprzystalski Skrypt musisz dodać w zdarzeniach jako dzVents(ALL) , po wykasowaniu całej zawartości przykładów, które tam zobaczysz wklejasz to co poniżej i wystarczy dopasować nazwy Przekaźnika , Termostatu, czujnikaTemp i czujnika kontaktronu.

 

Te zmiany musisz zrobić w dwóch miejscach jedno to zaraz w devices = {.........
I potem w local ......

po 2 latach stabilnej pracy wyskoczyły błędy 

dzVents: Error: (3.1.7) Ogrzewanie On 

w sumie nic nie zmieniałem aktualizowałem jak pamiętam Domoticza system działa stabilnie przekaźniki działają tylko w logach czerwono 

 
Dodane : 15/09/2022 6:46 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

@stanislawprzystalski i co mamy zgadywać jakie te błędy w logach ?

Dodane przez: @stanislawprzystalski

dzVents: Error: (3.1.7) Ogrzewanie On 

To nic nie mówi i nie jest cały log 

 
Dodane : 15/09/2022 7:43 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 
2022-09-15 19:45:16.391 Error: dzVents: Error: (3.1.7) Ogrzewanie Off

 

tylko tyle wyświetla wszystko działa jak trzeba ale zastanawiam się jaki jest powód tego błędu 

skrypt działał od dawna i nie sypał błędami 

 

return
{
on = { timer = { 'every 5 minutes' },
devices = { 'D1 Termostat Łazienka Parter', 'D1 Temperatura Łazienka Parter','D1 Okno Łazienka Parter'}}, 

logging = { level = domoticz.LOG_ERROR }, 
execute = function(dz, item)
_G.logMarker = _G.moduleLabel

local hysteresis = 0.2 -- ustaw od 0,1 do 10
local boiler = dz.devices('D1 Ogrzewanie Łazienka Parter') -- Nazwa przekaznika do grzania
local temperature = dz.utils.round(dz.devices('D1 Temperatura Łazienka Parter').temperature,1) -- Nazwa Czujnik temp
local setpoint = dz.utils.round(dz.devices('D1 Termostat Łazienka Parter').setPoint,1) -- Nazwa termostatu
local sensor = dz.devices('D1 Okno Łazienka Parter') -- Nazwa czujnika okno



if setpoint < ( temperature - hysteresis ) and boiler.state == 'On' then
boiler.switchOff()
dz.log('Ogrzewanie Off',dz.LOG_ERROR)
elseif setpoint > ( temperature + hysteresis ) and boiler.state == 'Off'and sensor.state =='Closed' then
boiler.switchOn()
dz.log('Ogrzewanie On',dz.LOG_ERROR)
elseif setpoint > ( temperature + hysteresis ) and boiler.state == 'On'and sensor.state =='Open' then
boiler.switchOff()
dz.log('Ogrzewanie Stop okno otwarte',dz.LOG_ERROR)

end
end
}

 

 
Dodane : 15/09/2022 9:33 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 
Dodane przez: @stanislawprzystalski

skrypt działał od dawna i nie sypał błędami 

 

W takiej postaci jak wstawiłeś , zawsze musiał walić błędami . Wstaw ten co poniżej i będzie spokój 

return
{
on = { timer = { 'every 5 minutes' },
devices = { 'D1 Termostat Łazienka Parter', 'D1 Temperatura Łazienka Parter','D1 Okno Łazienka Parter'}}, 

logging = { level = domoticz.LOG_ERROR }, 
execute = function(dz, item)
_G.logMarker = _G.moduleLabel

local hysteresis = 0.2 -- ustaw od 0,1 do 10
local boiler = dz.devices('D1 Ogrzewanie Łazienka Parter') -- Nazwa przekaznika do grzania
local temperature = dz.utils.round(dz.devices('D1 Temperatura Łazienka Parter').temperature,1) -- Nazwa Czujnik temp
local setpoint = dz.utils.round(dz.devices('D1 Termostat Łazienka Parter').setPoint,1) -- Nazwa termostatu
local sensor = dz.devices('D1 Okno Łazienka Parter') -- Nazwa czujnika okno

if setpoint < ( temperature - hysteresis ) and boiler.state == 'On' then
boiler.switchOff()
dz.log('Ogrzewanie Off',dz.LOG_INFO)
elseif setpoint > ( temperature + hysteresis ) and boiler.state == 'Off'and sensor.state =='Closed' then
boiler.switchOn()
dz.log('Ogrzewanie On',dz.LOG_INFO)
elseif setpoint > ( temperature + hysteresis ) and boiler.state == 'On'and sensor.state =='Open' then
boiler.switchOff()
dz.log('Ogrzewanie Stop okno otwarte',dz.LOG_INFO)

end
end
}
 
Dodane : 16/09/2022 3:59 pm
almurik
(@almurik)
Wpisów: 25
Praktykant
 

Witam

Może się komuś z tego wątku przyda, więc chciałem podzielić się swoim termostatem. Napisany od podstaw ponieważ nie znalazłem tak nietypowego.

Problem był w tym, że wszyscy sterują układami z małą bezwładnością. Mój jest z dużą bezwładnością. Jest to sterowanie temperaturą za zaworem trójdrogowym instalacji centralnego ogrzewania domu. Z uwagi na specyfikę zaworu, którego wbudowany mechanizm w pełni zamyka go z około 120 sekund i tak samo otwiera, zachodziła potrzeba aby zawór odpowiedni wcześniej wyłączać czyli jak temperatura jest mniejsza od zadanej, i odpowiednio zacząć wyłączać jak temperatura spada - czyli odwrotnie od termostatu standardowego. Wszystko przez czas potrzebny na otwarcie i zamknięcie zaworu.

Układ CO i CWU którym steruje, schematy, orurowanie, wniesienie kotła ... wykonałem sam od zera + sterowanie więc nie jest to jakiś klon z innego forum. Gr3t4 mnie nienawidzi.

 

Schemat układu którym sterujemy:

instalalacja CO vfinal foto RPI

Real:

instalalacja CO vfinal foto

Skrypt sterujący temperaturą grzejników: (uwzględnia awaryjne chłodzenie bufora ciepła i wyłączanie przy zimnym buforze - jak nie ma czym grzać)

local ogrzewanieONOFF = 'Ogrzewanie Domu'   -- ON/OFF ogrzewania
local power3D = '3D power 6'                -- zasilanie zaworu 3D
local onoff3D = '3D open/close 5'           -- otwieranie/zamykanie zaworu 3D. Zarów otwiera się i zamyka w pełni w czasie 120 sekund.  ON = zamknięty na dom, OFF = otwarty na dom. Logika niby odwrtna, na otworzyć 3D w przypadku jakiejść awarii przekaźnika
local zadanaTemp = 'Temp. Grzejników'       -- temp zadana grzejników , termostat
local za3Dtemp = 'CO za 3D'                 -- temp instalacji, za zaworem 3D
local pompaDOM = 'Pompa CO Dom 2'           -- pompa obiegu grzejników
local bufor5temp = 'Bufor 5'                --  temp bufora w najwyższym punkcie
local bufor4temp = 'Bufor 4'                -- temp bufor 4
local bufor1temp = 'Bufor 1'                -- temp bufor 1 w najniższym punkcie
local histerezaUP = 2                       -- histereza od dolu dla wylaczania gdy temp rosnie, zacznik zamykac zawor N stopni przed termostatem gdy temperatura rośnie i otwierac N stopni przed termostatem gdy temp spada
local histerezaDOWN = 3                     -- histereza od gory dla zalaczania gdy temp maleje
local termostat = tonumber(otherdevices[zadanaTemp]-1) --wartosc termostatu, odjeta wartosc w celu doregulowania termostatu do temperatury instalacji

commandArray = {} 

for deviceName,deviceValue in pairs(otherdevices) do
    if (deviceName == ogrzewanieONOFF) then
        
        
             --czy temperatora instalacji za zaworem 3D rosnie czy maleje, potrzebna informacja do histerezy
        if otherdevices[ogrzewanieONOFF] == 'On' then -- and devicechanged[za3Dtemp] then
            if otherdevices[za3Dtemp] - uservariables["tempZA3Dpoprzednia"] < 0 and tonumber(otherdevices[za3Dtemp]) ~= tonumber(uservariables["tempZA3Dpoprzednia"]) then
                print ('v2 za 3d maleje')
                commandArray['Variable:tempZA3Dpoziom'] = 'DOWN'
            elseif otherdevices[za3Dtemp] - uservariables["tempZA3Dpoprzednia"] > 0 and tonumber(otherdevices[za3Dtemp]) ~= tonumber(uservariables["tempZA3Dpoprzednia"]) then
                print ('v2 za 3d rośnie')
                commandArray['Variable:tempZA3Dpoziom'] =  'UP'
                
            end
            
                
            if tonumber(otherdevices[za3Dtemp]) ~= tonumber(uservariables["tempZA3Dpoprzednia"]) then
                commandArray['Variable:tempZA3Dpoprzednia'] = otherdevices[za3Dtemp]     
            end
            
        end
        
         --zabezpieczenie przed tym jakby jednak się nie wyłączyły pompy i 3d przy wyłączaniu
        if otherdevices[ogrzewanieONOFF] == 'On' then
            if tonumber(otherdevices[za3Dtemp]) > tonumber(otherdevices[zadanaTemp])+10 and (otherdevices[power3D] == 'Off' or otherdevices[onoff3D] == 'Open') then
                print('wylaczanie przy przekroczeniu')
                commandArray[#commandArray + 1] = {[power3D] = 'On'}
                commandArray[#commandArray + 1] = {[onoff3D] = 'Off'}
                commandArray[#commandArray + 1] = {[power3D] = 'Off AFTER 440'}
                commandArray[#commandArray + 1] = {[pompaDOM] = 'On'}
                commandArray[#commandArray + 1] = {[pompaDOM] = 'Off AFTER 840'}
                
            end        
        end
 

        
        --awaryjne otwarcie CO na Dom sprawdzanie co stopień
        if math.floor(tonumber(otherdevices[bufor5temp])) ~= uservariables["Bufor5poprzednia"] then
            commandArray['Variable:Bufor5poprzednia'] = tostring(math.floor(tonumber(otherdevices[bufor5temp])))
            
            if tonumber(otherdevices[bufor5temp]) > 82 then
                print ('awaryjne chlodzenie bufora')
                commandArray['Variable:awaryjneotwarcieCOnaDOM'] = "1"
                commandArray[#commandArray + 1] = {[power3D] = 'On'}
                --otwarcie 3d
                commandArray[#commandArray + 1] = {[onoff3D] = 'On'}
                commandArray[pompaDOM] = 'On'
                
                --jeżeli ogrzewanie wyłączone to zamknij 3D
            elseif tonumber(otherdevices[bufor5temp]) < 82 and uservariables["awaryjneotwarcieCOnaDOM"] == 1 and otherdevices[ogrzewanieONOFF] == 'Off' then
                print ('awaryjne chlodzenie bufora')
                commandArray['Variable:awaryjneotwarcieCOnaDOM'] = "0"
                commandArray[#commandArray + 1] = {[power3D]='On'}
                commandArray[#commandArray + 1] = {[power3D]='Off AFTER 200'}
                --zamkniecie 3d
                commandArray[#commandArray + 1] = {[onoff3D]='Off'}
                
                commandArray[pompaDOM]='Off'
                
                --jeżeli ogrzewanie włączone to niech steruje dalej
            else
                print ('awaryjne chlodzenie bufora wylaczone')
                commandArray['Variable:awaryjneotwarcieCOnaDOM'] = "0"
    
            end
        
        end
        
        --obsługa włączania ogrzewania
        if (devicechanged[ogrzewanieONOFF] == 'On') then
            print('ogrzewanie On')
            commandArray[power3D] = 'On'
            -- wlaczenie pompy gdy 3d sie otwiera i wlasnie wlaczamy ogrzewanie a temperatura jest odpowiednia
            if tonumber(otherdevices[za3Dtemp]) < tonumber(otherdevices[zadanaTemp]) and tonumber(otherdevices[bufor5temp]) > 35 then 
                print('pompa start')
                commandArray[#commandArray + 1] = {[onoff3D]='On'}
                commandArray[#commandArray + 1] = {[pompaDOM]='On'}
                commandArray[#commandArray + 1] = {[pompaDOM]='Off AFTER 840'}
            end
            
        elseif (devicechanged[ogrzewanieONOFF] == 'Off') then 
                print('ogrzewanie OFF')
                commandArray[#commandArray + 1] = {[power3D]='On'}
                commandArray[#commandArray + 1] = {[power3D]='Off AFTER 200'}
                --print('zamkniecie 3d')
                commandArray[#commandArray + 1] = {[onoff3D]='Off'}
                commandArray[pompaDOM] = 'Off'
        end        


        --bufor ZIMNY sprawdzanie czy bufor zimny - grac czy nie ??
        if uservariables["awaryjneotwarcieCOnaDOM"] == 0 and otherdevices[ogrzewanieONOFF] == 'On' then
            --bufor ZIMNY
            if devicechanged[za3Dtemp] and tonumber(otherdevices[bufor5temp]) < 35 and uservariables["buforZIMNY"] == 'NIE' then
                print ("v2 bufor zimny ponizej 35")
                  commandArray['Variable:buforZIMNY'] =  'TAK'
                commandArray[#commandArray + 1] = {[power3D] = 'Off'}
                commandArray[#commandArray + 1] = {[onoff3D] = 'Off AFTER 1'}
                commandArray[#commandArray + 1] = {[power3D] = 'On AFTER 2'}
                --pompa
                commandArray[#commandArray + 1] = {[pompaDOM] = 'Off'}    
                
            elseif devicechanged[za3Dtemp] and tonumber(otherdevices[bufor5temp]) > 37 and uservariables["buforZIMNY"] == 'TAK'  then
                print ("v2 bufor ciepły Bufor 5 powyzej 37")
                  commandArray['Variable:buforZIMNY'] =  'NIE'

            end
        end
    
    
        
        --właściwe sterowanie teperaturą zależne czy wlączone awaryjne chłodzenie bufora i czy bufor jest ciepły
        if uservariables["awaryjneotwarcieCOnaDOM"] == 0 and otherdevices[ogrzewanieONOFF] == 'On' and uservariables["buforZIMNY"] == 'NIE' then
            
            if devicechanged[za3Dtemp] and  tonumber(otherdevices[za3Dtemp]) > tonumber(termostat-histerezaUP) and uservariables["tempZA3Dpoziom"] == 'UP' and otherdevices[onoff3D] == 'Open' then
                print ("v2 zamkniecie 3D ogrzewania")
                --print(tonumber(otherdevices[za3Dtemp]))
                commandArray[#commandArray + 1] = {[power3D] = 'Off'}
                commandArray[#commandArray + 1] = {[onoff3D] = 'Off AFTER 1'}
                commandArray[#commandArray + 1] = {[power3D] = 'On AFTER 2'}
                --pompa
                commandArray[#commandArray + 1] = {[pompaDOM] = 'On'}
                commandArray[#commandArray + 1] = {[pompaDOM] = 'Off AFTER 840'}      
            
            
            elseif devicechanged[za3Dtemp] and tonumber(otherdevices[za3Dtemp]) < tonumber(termostat+histerezaDOWN)  and uservariables["tempZA3Dpoziom"] == 'DOWN' and otherdevices[onoff3D] == 'Closed' and tonumber(otherdevices[bufor5temp]) > 35  then
                print ("v2 otwarcie 3D ogrzewania")
                --print(tonumber(otherdevices[za3Dtemp]))
                commandArray[#commandArray + 1] = {[power3D] = 'Off'}
                commandArray[#commandArray + 1] = {[onoff3D] = 'On AFTER 1'}
                commandArray[#commandArray + 1] = {[power3D] = 'On AFTER 2'}
                --pompa
                commandArray[#commandArray + 1] = {[pompaDOM] = 'On'}
                commandArray[#commandArray + 1] = {[pompaDOM] = 'Off AFTER 840'}
            
            end
    

        end
    
    end
    
end



return commandArray

 

Skrypt obiegu kotłowego, pilnujący temperatury tego jak nagrzewany jest bufor automatycznie sprawdzając jaka jest aktualna temperatura kotła:

local pompaDOM = 'Pompa CO Dom 2'           -- pompa obiegu grzejników
local bufor5temp = 'Bufor 5'                --temp bufora w najwyższym punkcie
local bufor4temp = 'Bufor 4'
local bufor1temp = 'Bufor 1' 
local piecCOtemp = 'Piec CO' 
local pompaCO = 'Pompa CO 4'

commandArray = {} 

for deviceName,deviceValue in pairs(otherdevices) do
    if (deviceName == obiegkotlowy ) then
        
        
        --czy rosnie czy maleje
        if otherdevices[obiegkotlowy] == 'On' then
            if otherdevices[piecCOtemp] - uservariables["tempCOpoprzednia"] < 0 and tonumber(otherdevices[piecCOtemp]) ~= tonumber(uservariables["tempCOpoprzednia"]) then
            --print ('maleje')
            commandArray['Variable:tempCOpoziom'] = 'DOWN'
            elseif otherdevices[piecCOtemp] - uservariables["tempCOpoprzednia"] > 0 and tonumber(otherdevices[piecCOtemp]) ~= tonumber(uservariables["tempCOpoprzednia"]) then
            --print ('rośnie')
            commandArray['Variable:tempCOpoziom'] =  'UP'
            end
        
            
            if tonumber(otherdevices[piecCOtemp]) ~= tonumber(uservariables["tempCOpoprzednia"]) then
            commandArray['Variable:tempCOpoprzednia'] = otherdevices[piecCOtemp]     
            end   
        end
        
        
        --sterowanie

            
        if (tonumber(otherdevices[piecCOtemp]) < 56 or tonumber(otherdevices[piecCOtemp]) < tonumber(otherdevices[bufor1temp])+10) and otherdevices[pompaCO] == 'On' then
            print('pompa CO Off')
            commandArray[pompaCO] = 'Off'
            commandArray[obiegkotlowy] = 'Off'
        elseif tonumber(otherdevices[piecCOtemp]) > 56 and tonumber(otherdevices[piecCOtemp]) > tonumber(otherdevices[bufor1temp])+10 and otherdevices[pompaCO] == 'Off' then
            print('pompa CO ON')
            commandArray[pompaCO] = 'On'
            commandArray[obiegkotlowy] = 'On'    
            
        end
  
    
    end
    
end



return commandArray

 

Wszystko zrealizowane w RPI 3 + Domoticz jako element logiczny, elementem wykonawczym jest NodeMCU 3 + 8 przekażników + Tasmota 12.3. Komunikacja Domoticz - > Tasmota to MQTT Discovery

 

Pozdrawiam, może pomoże to komuś w budowie czegoś ...

 

 
Dodane : 19/12/2022 2:48 pm
isom reacted
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 

@isom walcze z tym skryptem aby wyodrębnić wilgotność ale słabo to idzie macie jakieś pomysły co konkretnie zmienić aby zadziałało

 
Dodane : 08/12/2023 11:03 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

Dodane przez: @stanislawprzystalski

walcze z tym skryptem

Gdzie ten skrypt ? Mam zgadywać? Czy udostepnisz, to co zrobiłeś?

 
Dodane : 10/12/2023 9:33 am
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 

chodzi o ten skrypt mam czujnik Temp/Humidity o ile temperature mogę wydzielić to mam problem aby wydzielić Humidity 

return {
    on = {
        ['timer'] = {'every 2 minutes'}
    },
	logging =   {   level   =   domoticz.LOG_DEBUG, -- zmien na LOG_ERROR, jak skrypt bedzie dzialal
                        marker  =   "temperatura..salon" },
    execute = function(dz)

    local temp = dz.devices('Salon - Temp/Humidity').temperature   -- Tu wstawiasz nazwe czujnika zespolonego np Temp/HUM/Baro
    
    dz.devices('Salon Temperatura').updateTemperature(temp, dz.temp_NOINFO) -- Nazwa wirtualnego czujnika temperatury do aktualizacji
        
    end
}
 
Dodane : 10/12/2023 11:46 am
Mariusz
(@mariusz-2)
Wpisów: 228
Weteran Donator 2K23
 

@stanislawprzystalski A nie tak 

return {
    on = {
        ['timer'] = {'every 2 minutes'}
    },
    logging = {
        level = domoticz.LOG_DEBUG, -- zmien na LOG_ERROR, jak skrypt bedzie dzialal
        marker = "wilgotnosc_salon"  -- Zmiana markera na odpowiedni
    },
    execute = function(dz)
        local humidity = dz.devices('Salon - Temp/Humidity').humidity   -- Zmiana na pomiary wilgotności

        dz.devices('Salon Wilgotnosc').updateHumidity(humidity, dz.HUMI_NOINFO) -- Zmiana na wirtualny czujnik wilgotności do aktualizacji
    end
}
 
Dodane : 10/12/2023 5:49 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 

po przeróbce mam błąd dzVents: Error: (3.1.8) Warsztat: No status provided. Humidity not set

 
Dodane : 10/12/2023 8:04 pm
isom
 isom
(@isom)
Wpisów: 5178
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Autor tematu
 

Dodane przez: @stanislawprzystalski

po przeróbce mam błąd

A co mówi ten błąd ? Nie podałeś statusu i wilgotność nie została zaktualizowana.

Aktualizacja czujnika wilgotności w Domoticz powinna wyglądać tak 

updateHumidity(humidity, status): Update humidity. status can be domoticz.HUM_NORMAL, HUM_COMFORTABLE, HUM_DRY, HUM_WET

Jak widać kolega @mariusz-2 popełnił błąd, ale można go poprawić patrząc na przykłady. Zapis domoticz.HUM_NORMAL można uprościć czyli dostosować do tego skryptu zmieniając na dz.HUM_NORMAL. Zapis NOINFO oznacza nie podaję swojego statusu, przepisz go z wartości które wysyła oryginalny czujnik.

Myślę, że na tyle jasno to opisałem, że poprawienie skryptu nie będzie problemem 🙂

 
Dodane : 10/12/2023 9:52 pm
Mariusz reacted
(@stanislawprzystalski)
Wpisów: 23
Praktykant
 

działa prawidłowo po dokonaniu zmian 🙂

 
Dodane : 10/12/2023 10:11 pm
 W
(@w)
Wpisów: 2
Świeżak
 

Witam , termostat działa super , mam pytanie czy można by było dodać przyciski do manualnej zmiany temperatury termostatu . Pozdrawiam 

 

 
Dodane : 25/03/2024 8:54 am
 W
(@w)
Wpisów: 2
Świeżak
 

Mam coś takiego, w espeasy  Zasay to

on TermostatCWU#Output do

if [TermostatCWU#Output]=0

GPIO,0,0
else
GPIO,0,1
endon

on Plus#State do
if [Plus#State]=1
config,task,TermostatCWU,setlevel,[TermostatCWU#getLevel]+0.5
endif
endon


on Minus#State do
if [Minus#State]=1
config,task,TermostatCWU,setlevel,[TermostatCWU#getLevel]-0.5
endif
endon
20240325 085534

 

 
Dodane : 25/03/2024 9:09 am
Strona 4 / 4
Udostępnij: