Asystent AI
Uniwersalny Termost...
 
Powiadomienia
Wyczyść wszystko

Uniwersalny Termostat z Histereza na bazie Domoticza

79 Wpisów
17 Użytkownicy
11 Reactions
19.2 K Wyświetleń
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
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
 

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

@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 9:32 pm
kniazio
(@kniazio)
Wpisów: 210
Pomocny Donator 2K21
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
 

Z LUA tez mi nie wychodzi. Ciagle jakies bledy


 
Dodane : 10/09/2022 10:01 pm
(@przemo)
Wpisów: 18
Praktykant
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

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

@przemo jest na wiki 

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


 
Dodane : 12/09/2022 10:26 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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: @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 7:46 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 

@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 8:43 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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
 
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 10:33 pm
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 
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 4:59 pm
almurik
(@almurik)
Wpisów: 25
Praktykant
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

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 3:48 pm
isom zareagował
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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 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 : 09/12/2023 12:03 am
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
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
 

Dodane przez: @stanislawprzystalski

walcze z tym skryptem

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


 
Dodane : 10/12/2023 10:33 am
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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
 

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 12:46 pm
Mariusz
(@mariusz-2)
Wpisów: 240
Weteran Donator 2K23
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
 

@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 6:49 pm
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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
 

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


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

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 10:52 pm
Mariusz zareagował
(@stanislawprzystalski)
Wpisów: 23
Praktykant
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
 

działa prawidłowo po dokonaniu zmian 🙂


 
Dodane : 10/12/2023 11:11 pm
 W
(@w)
Wpisów: 2
Świeżak
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 , termostat działa super , mam pytanie czy można by było dodać przyciski do manualnej zmiany temperatury termostatu . Pozdrawiam 

 


 
Dodane : 25/03/2024 9:54 am
 W
(@w)
Wpisów: 2
Świeżak
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
 

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 10:09 am
Strona 4 / 4
Udostępnij: