Jak w tytule prosty, ale funkcjonalny termostat, który tworzymy wykorzystując możliwości samego Domoticza.
Co potrzebujemy :
Czujnik temperatury – wykorzystany może być dowolny już działający czujnik, ważne żeby nie był to czujnik zespolony np. z wilgotnością , czyli wybieramy np. DS18B20
Przełącznik , który będzie załączał grzejnik lub piec
Wirtualny termostat , który dodajemy do systemu.
Skrypt LUA który będzie nadzorował pracę termostatu.
Pierwsze dwa tworzymy dodając do systemu np. moduł sonoff z czujnikiem więc opis sobie daruję.
Wirtualny termostat tworzymy tak samo jak każdy wirtualny czujnik tylko jako typ wybieramy tak jak na poniższym foto.
Cały zestaw termostatu wygląda tak jak na foto poniżej.
Motyw AURORA , którego używam ma od razu kursory do ustawiania temperatury , ale jeżeli nie używacie tego motywu wystarczy kliknąć w ikonę PŁOMIENIA termostatu żeby pojawił się panel regulacyjny poniżej foto.
Kolejną rzeczą jaką można zrobić to ustawienie sobie kiedy do jakiej temperatury ogrzewanie ma działać , to ustawiamy w przełączniku termostatu przykładowe ustawienia na foto poniżej.
Ostatni etap to utworzenie zdarzenia w DomoticzuWchodzimy w Konfiguracja, Zdarzenia i tworzymy nowe zdarzenie LUA , które ma wyglądać jak poniżej.
Pamiętajcie wejść w Ustawienia , Inne i włączyć obsługę LUA jeżeli nie jest aktywna.Poniżej skrypt , który należy zmodyfikować do własnych potrzeb , zmieniając nazwy czujnika, termostatu i przełącznika , oraz ustawienia sobie histerezy według własnego uznania.
-- Skrypt termostat zaczerpnąłem z sieci więc nie jest mojego autorstwa local heating_probe = 'Nazwa czujnika'
local thermostat_setpoint = 'Nazwa termostatu'
local heating_unit = 'Nazwa przełącznika' -- 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(otherdevices[heating_probe]-hysteresis) then if (otherdevices[heating_unit] == "On") then
-- commandArray['SendNotification']='Heating is off'
commandArray[heating_unit]='Off'
print("Heating is Off")
end elseif tonumber(deviceValue) > tonumber(otherdevices[heating_probe]+hysteresis) then
if (otherdevices[heating_unit] == "Off") then
commandArray[heating_unit]='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
Zapomniałem dodać .
Histereza działa w górę i w dół więc jak ustawicie np. 0,4 to tak naprawdę będzie to 1 stopień.
Ogrzewanie włączy się jak temperatura spadnie do zadanej wartości minus histereza 0,4 stopnia, a wyłączy dopiero jak zadana zostanie przekroczona o 0,4 stopnia.
Przykład: Zadana 21 , Histereza 0,2
Ogrzewanie OFF = 21,3 stopnia
Ogrzewanie ON= 20,7 stopnia
Oczywiście takich termostatów można utworzyć sobie kilka i kontrolować temperaturę np. każdego pomieszczenia oddzielnie , terrarium, akwarium itp.
W samym skrypcie można oczywiście pozmieniać na własne opisy "Ogrzewanie On, Off" , oraz po od komentowaniu wierszy, które odpowiadają za powiadomienia można je aktywować ( przydatne przy testach działania) poniżej foto
Aktualnie testuję wtyczkę do Domoticza, która pozwala na dodanie kilku czujników do jednego termostatu i wyliczanie z nich średniej temperatury, oraz uwzględnia temperaturę zewnętrzną i na tej podstawie uczy się charakterystyki cieplnej mieszkania czy domu ale jestem z tym tematem w powijakach więc go nie opublikuję .
O ten motyw mi chodzi jak go ustawic? Tylko ja uzywam wer beta a ty stable. I u mnie jej w konfiguracja, ustawieniach, motyw takiego nie ma. Czy dobrze zrozumialem , to tam sie ustawia?
@krzysztofch wszystko masz przecież tu https://www.smartnydom.pl/forum/domoticz/motyw-aurora-nieszablonowy-wyglad-domoticza/
Witam wielkie dzieki za udostępnienie tego termostatu.
Od jakiegoś czasu używam domoticz między innymi do sterowania pieca gazowego. Wcześniej używałem wtyczki Smart Virtual Thermostat ale nie sprawdziła się umnie. Pieca gazowy jest drugim źródłem ogrzewania i zazwyczaj tylko podtrzymuje temperaturę. Więc ta wtyczka można powiedzieć że glupiala.
Aktualnie używam tego termostatu z histeza i sprawdza się bardzo dobrze.
Proszę kolegi o podpowiedź czy można to jakoś zmodyfikować aby usrednic temp z 2 lub 3 czujników temperatury. Myślałem otym aby wykorzystać termostat z Smart V.. Ther... Ale tamta wtyczka pracuje tylko jak jest sieć. Jeśli sieci nie działa to nie działa też termostat który usrednia tem.
Z góry dziękuję
Pozdrawiam Przemek
Witam
Mam drobne pytanie. Ponieważ mam czujnik temperatury i wilgotności muszę przerobić skrypt aby pobierał mi temperaturę. Może ktoś mi podpowie co zmień w kodzie w/w skryptu.
A czy jest jakiś sprawdzony skrypt/termostat przeznaczony pod podłogówkę, mam czujnik temperatury na powrocie wody z obiegu do pieca no i pompka elektryczna na niej mam założonego sonofa basic-a. W zeszłym roku miałem tak że pompa obiegowa od podłogówki załączała się w danych godzinach dnia i mieliła, pomyślałem że można by to jakoś zautomatyzować na takim prostszym termostacie ??
Witam wszystkich na forum.
Zrobiłem sobie termostat jak w opisie. Steruje grzejnikami głowicami systemu Eq3 MAX.
Jako czujnik temp. podałem wartości odczytywane z głowicy, termostat - nastawy na głowicy i zrobiłem przełącznik wirtualny wskazujący stan ogrzewania. Niestety nic mi nie działa - nawet jak stworze osobny termostat (nie ten z głowic) - przełącznik nie zmienia stanu. W czym może tkwić problem ?. Pracuję na najnowszej wersji beta domoticza.
@piotras78 problem jest w typie urządzenia jakim jest czujnik , nie wiem co przekazuje wartości odczytane z głowicy, ale jeżeli to jest jakiś przełącznik typu tekst to nie zadziała na bank . Trzeba by utworzyć wirtualny czujnik temperatury i aktualizować go przez JSON co jakiś interwał czasowy , ale to już zupełnie inny skrypt się z tego robi
Nie jest to przełącznik typu tekst. Znajduje się normalnie w grupie przełączników temperatura - na liście widnieje jako podtyp LaCrosse TX3 czyli dokładnie to samo co tworząc wirtualny. Próbowałem jeszcze z czujnikiem wbudowanym w Broadlinka RM2 i też nie działa. Myślałem że może jest jakiś problem w nazwie - czy zamiast wpisywać ją tekstowo można jakoś podać idx urządzenia ?
Tak na marginesie to dobrze byłoby odczytywać tą temperature z głowic np z-wave (one sobie otwierają % zawory pod odczytane dane). Jak damy czujnik zewnętrzny to zawór będzie chodził wg głowicy a uruchomienie pieca wg zmierzonej temp z innego czujnika
Sprawdzałeś czy działa u ciebie ten skrypt na dowolnym wirtualnym termometrze ? Utwórz termometr zaktualizuj go dowolną wartością /json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=TEMP zamiast IDX poprawna wartość i zamiast TEMP np 35
@piotras78 a możesz napisać co zrobiłeś, że json zwraca błąd ? Chciałem żebyś sprawdził skrypt na fikcyjnym czujniku , który sam zaktualizujesz . Tworzysz czujnik temp , sprawdzasz jego IDX i podstawiasz do
http://192.168.x.xxx:8080/json.htm?type=command¶m=udevice&idx= 25&nvalue=0&svalue=35
wklejasz to do przeglądarki zmieniając dane na swoje
gdzie adres IP to adres domoticza razem z prawidłowym portem i dalej prawidłowy IDX - u mnie 25 i na końcu wartość temperatury u mnie 35 stopni
Dokładnie tak właśnie zrobiłem - tylko zamiast idx podałem ID - mój błąd. Teraz zadziałało - temp. się zmieniła ale wł. grzania nadal nie reaguje. Zrobiłem tez wirtualny termostat i tez bez zmian
@piotras78 w takim razie napisz co dostajesz w logach domoticza , albo najlepiej wklej fotkę, sprawdzałem i ten skrypt działa bez zastrzeżeń na sztucznym czujniku temp
w logach nie dostaje nic
Może to banalne ale warto sprawdzić. Czy nie powtarzają ci się nazdy urządzeń.
Np.czy nie masz czujnika o tej samej nazwie co przekaźnik bądź termostat o tej samej nazwie. Porostu idzie to po nazwach a nie po idx.
Zanim zaczniesz zmieniać domoticza sprawdź czy masz aktywne skrypty LUA w Ustawieniach - Inne, bo dziwne powinny w logach być chociaż błędy jak skrypt jest zapisany i włączony
Skrypty mam włączone, nazwy są różne. Próbowałem już bez polskich liter i bez spacji ale bez zmian.
EDIT:
Znalazłem rozwiązanie - po wejściu w skrypt z prawej strony jest pozycja Trigger. Miałem wybraną pozycje "User variable". Po zmianie na "All" zaczęło wszystko działać. Dzięki za wskazówki
Hej, a ja mam pytanie co do działania tego skryptu w Domoticzu. Poki co to w sumie pierwszy i jedyny jakiego uzywam. W logach wyglada to tak jakby uruchamiał się każdorazowo 2x... Ktoś mi podpowie co i gdzie powinienem sprawdzić, czy to po prostu parametr "Trigger=all" skutkuje takim działaniem, że po zmianie stanu przekaźnika skrypt uruchamia się ponownie i stąd podwojne zapisy w logach? Jeśli tak, to jak to najmądrzej poprawić, żeby nie było zbędnego zapętlania skryptu.