Witam.
Dopiero zaczynam przygodę ze smart home, niewiele tego na razie mam (jakieś gniazdka, wyłączniki, nie ma serwera jeszcze) i mam już pytanko. Kupiłem sobie na aliexpresie podróbę sonoffa basic zrobionym na ESP8285, wgrałem mu tasmotę i dodałem DS18B20 4 szt. Jako pomiar temperatury i termostat działa ok. Dostęp do niego mam w sieci domowej poprzez przeglądarkę. Pytania do bardziej doświadczonych: jak i co ustawić w tasmocie (i routerze) abym mógł podejrzeć temperaturę z sieci zewnętrznej (np na telefonie w pracy) - czy w ogóle jest taka możliwość. Drugie pytanie dotyczące termostatu: teraz mam w konsoli dodane rule przy temp. np 21 załącz przekaźnik, przy 22 wyłącz. Jak do tego dodać (jak zrobić) harmonogram (katalog czasowy), żeby np od 8 do 12-tej utrzymywał temp 19, od 12 do 22 temp 21 a 21 do 8 np 18? W sumie jest tam harmonogram tylko nie wiem jak go ustawić aby w różnych godzinach zmieniać zadaną temperaturę?
Adam
co ustawić w tasmocie (i routerze) abym mógł podejrzeć temperaturę z sieci zewnętrznej (np na telefonie w pracy) - czy w ogóle jest taka możliwość.
Witaj, z tasmotą jest tak, że pracuje w lokalnej sieci i nie współpracuje z serwisami chmurowymi, ponieważ jest stworzona do współpracy z serwerami automatyki. Dostęp do tego modułu, można uzyskać dostając się do domowej sieci z zewnątrz np za pomocą VPN.
Ja bym jednak proponował poczytać o serwerach automatyki, wtedy jest więcej możliwości.
Co do termostatu, możliwośći jest kilka, pierwsza to dodać trzy harmonogramy które będą odpowiednio aktywować i wyłączać reguły, do tego trzy reguły z róznym zakresem temperatur.
Druga możliwość to zapisywanie wartości zadanych do zmiennych Mem i harmonogramami zmieniać zadane. Przykład zadana dla ON zapisana do Mem1 , zadana dla OFF do Mem2 , czujnik temperatury nr 4 kontroluje temperaturę
Rule1 on DS18B20-4#Temperature do event temp1_demand=%value%; endon on event#temp1_demand<%mem1% DO Power1 1 endon on event#temp1_demand>%mem2% do Power1 0 endon
Zmieniając wartości mem1 i mem 2 mamy pracę w różnych zakresach temperatur. Jak to zmieniać ?
Robimy sobie harmonogramy, tu przykład dwóch
Timer1 {"Enable":1,"Mode":0,"Time":"08:00","Days":"1111111","Repeat":1,"Action":3} Timer2 {"Enable":1,"Mode":0,"Time":"16:00","Days":"1111111","Repeat":1,"Action":3}
Pierwszy uruchamia się o 8 rano, drugi o 16:00
Dodajemy drugą regułę
Rule2 on clock#Timer=1 DO Backlog mem1 18; mem2 19 endon on clock#Timer=2 DO Backlog mem1 21; mem2 22 endon
Jak widać timer 1 ustawi nam o 8 rano zakres termostatu od 18 do 19 stopni , drugi timer zmieni wartości mem1, mem 2 i będziemy mieli zakres od 21 do 22 stopni.
Na podstawie tego dołóż sobie trzeci timer i rozbuduj regułę 2 o ten timer.
PS.
Zeby to wszystko dobrze działało trzeba ustawić strefę czasową i swoją lokalizację żeby tasmota zmieniała czas letni/zimowy.
Powodzenia
Jak to dobrze posłuchać... znaczy poczytać mądrego, wytłumaczyłeś jasno i klarownie 😉 Dziękuję Ci bardzo. Jutro będę ćwiczył.
Pozdrawiam.
Coś mi nie działa ta regulacja. Co robię nie tak? Oto co wpisałem:
22:18:21.472 CMD: rule1 22:18:21.479 RSL: RESULT = {"Rule1":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":155,"Free":356,"Rules":"on DS18B20#Temperature do event temp1_demand=%value%; endon on event#temp1_demand<%mem1% DO Power1 1 endon on event#temp1_demand>%mem2% do Power1 0 endon"}} 22:18:50.283 CMD: timer1 22:18:50.290 RSL: RESULT = {"Timer1":{"Enable":1,"Mode":0,"Time":"05:30","Window":0,"Days":"1111111","Repeat":1,"Output":1,"Action":3}} 22:19:22.488 CMD: Timer2 {"Enable":1,"Mode":0,"Time":"23:00","Days":"1111111","Repeat":1,"Action":3} 22:19:22.496 RSL: RESULT = {"Timer2":{"Enable":1,"Mode":0,"Time":"23:00","Window":0,"Days":"1111111","Repeat":1,"Output":1,"Action":3}} 22:21:42.591 CMD: Rule2 on clock#Timer=1 DO Backlog mem1 19,5; mem2 20,5 endon on clock#Timer=2 DO Backlog mem1 18,5; mem2 19,5 endon 22:21:42.598 RUL: Stored uncompressed, would compress from 110 to 63 (-43%) 22:21:42.602 RSL: RESULT = {"Rule2":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":110,"Free":401,"Rules":"on clock#Timer=1 DO Backlog mem1 19,5; mem2 20,5 endon on clock#Timer=2 DO Backlog mem1 18,5; mem2 19,5 endon"}}
A wynik po uruchomieniu
22:27:28.499 RUL: DS18B20#TEMPERATURE performs "backlog event temp1_demand=19.3;" 22:27:28.538 RSL: RESULT = {"Event":"Done"} 22:27:28.569 RUL: EVENT#TEMP1_DEMAND>%MEM2% performs "Power1 0" 22:27:28.575 RSL: RESULT = {"POWER":"OFF"} 22:27:28.577 RSL: POWER = OFF 22:27:29.300 RUL: DS18B20#TEMPERATURE performs "backlog event temp1_demand=19.3;" 22:27:29.340 RSL: RESULT = {"Event":"Done"} 22:27:29.371 RUL: EVENT#TEMP1_DEMAND>%MEM2% performs "Power1 0" 22:27:29.376 RSL: RESULT = {"POWER":"OFF"} 22:27:29.379 RSL: POWER = OFF
Ok czy mam rozumieć, że gdy wartość zadana jest przypisywana do np mem1 to musi być z kropką a nie z przecinkiem? Dlaczego gdy wpiszę tylko samą regułę (i nic więcej):
on ds18b20#temperature<19,8 do power1 1 endon on ds18b20#temperature>20,5 do power1 0 endon
(z przecinkami) i ją uruchomię to tasmota prawidłowo interpretuje temperaturę mimo, że jest zapisana z przecinkiem a nie z kropką?
W chwili obecnej zrobiłem dwie formuły z różnym zakresem temperatur i je odpowiednio aktywuje i dezaktywuje timerami czyli tak jak kolega proponował w pierwszym sposobie. Jak będę miał chwilę to przetestuję sposób z mem1/mem2 już z zapisem z kropką. Dziękuję serdecznie za pomoc.
Pozdrawiam.
Jak będę miał chwilę to przetestuję sposób z mem1/mem2 już z zapisem z kropką.
Śmiało testuj, mem1 do mem16 to trwałe zmienne i porównanie wartości zmiennych do faktycznych wartości musi być identyczne.
Taka zmienna może przyjmować różną postać , może być datą, słowem, liczbą czy ciągiem znaków
Termostat działa prawidłowo (jeszcze nie testowałem z mem1...) ale jest jeden nie duży problem z tym chińczykiem. Co 2 - 3 dni "wyłącza mu się" wifi. Nie widzę go zalogowanego w routerze i nie można przez ip go podejrzeć. Wystarczy go wyłączyć z prądu na chwilę i wszystko wraca do normy. Co ciekawe gdy straci wifi nadal reaguje na zmiany temperatury.
Pytanie: czy jest możliwość np za pomocą timera wymusić jego restart raz na dobę?