Termostat by Duch__

Duch__
Posty: 779
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

sob lis 07, 2020 6:17 pm

10.png
10.png (58.52 KiB) Przejrzano 690 razy
Witam.

Dzisiaj prezentuje moją wersję termostatu ;)
Uwaga. Kod nie działa w żadnym stopniu z serwerem SUPLA.

Zarządzanie tylko z poziomu przeglądarki.
Przystosowany do modułu YUNSHAN.
Normalna praca sygnalizowana jest 1 szybkim mignięciem LED, a następnie sekunda przerwy.
Tryb konfiguracyjny sygnalizowany jest 3 szybkimi mignięciami LED, a następnie sekunda przerwy.
Łącznie z WIFI sygnalizowane jest świeceniem LED w trybie 0.5s / 0.5s.
Wejście w tryb konfiguracyjny w czasie uruchamiania układu (szybkie miganie LED przez około 10 sekund) poprzez zwarcie GPIO 0 do masy.
Wejście w tryb konfiguracyjny w czasie normalej pracy układu poprzez zwarcie GPIO 0 do masy.

Automatyczne wyjście z trybu konfiguracji po około 180 sekundach niezależnie od tego czy zostały wprowadzone zmiany czy nie.
Dane na stronie WWW odnośnie parametrów pracy urządzenia aktualizowane są na bierząco dzięki poleceniom AJAX bez konieczności odświeżania strony.
Harmonogram temperatury dla poszczególnych godzin dla dni roboczych z dokładnością do 0.01*C
Harmonogram temperatury dla poszczególnych godzin dla weekendów z dokładnością do 0.01*C
Histereza ustawiana w zakresie od 0 do 2*C z dokładnością do 0.01*C
Ustawianie temp. minimalnej CO z dokładnością do 0.01*C. Grzanie jest uruchamiane jeśli temp. czynnika CO spadnie poniżej wartości zadanej.
Ustawianie temp. maksymalnej CO z dokładnością do 0.01*C. Grzanie jest wyłączane natychmiast jeśli temp. czynnika CO przekroczy zadany próg.
Aktualizacja daty i godziny z NTP.
Tryb urlopowy z zadaną datą (dzień-miesiąc-rok) ponownego uruchomienia pieca i temperaturą utrzymania w czasie urlopu. Kasowanie trybu urlopowego o godzinie 0:00:00.
Możliwość wyłączenia wyświetlania do kiedy jest urlop (w trybie konfiguracyjnym).
Ręczne wyłącznie trybu urlopowego po wpisaniu 0-0-0 lub poprzez reset urządzenia.
Blokada grzania. Ta funkcja całkowicie wyłącza przekaźnik (może to zrobić po czasie do 180 sekund). Układ nie reaguje na żadne zmiany temperatury. Uwaga!!! W tym trybie nie działa żadne zabezpiecznie ANTYZAMARZANIOWE.
Tryb urlopowy nie zapisuje się do eeprom. Po restarcie urządzenia wraca do normalnego harmonogramu.
Wymagany kod PIN do zatwierdzenia wielu funkcji jako dodatkowe zabezpieczenie przed nieautoryzowanym dostępem. Kod pin ustawia się w trybie konfiguracyjnym.
Pobieranie danych odnośnie temperatury z serwera JSON (program wymaga przerobienia na DS18b20).
Ograniczenie czasowe kliknięć przekaźnika (domyślnie 180 sekund) względem poprzedniego kliknięcia - ustawiane w kodzie.
Zdalna aktualizacja oprogramowania z poziomu przeglądaraki
Ustawienie minimalnej i maksymalnej temperatury w przeglądarce np. 15 i 27. Jeśli wprowadzone wartości będą spoza tego przedziału to urządzenie ich nie zapisze - ustawiane w kodzie. Jest to zabezpiecznie przed nieautoryzowanym wgraniem ustawień.
Login: "admin" - ustawiane w kodzie.
Hasło: "temperatura" - ustawiane w kodzie.

Uwaga. Piec musi mieć możliwość zdalnego sterowania poprzez zwarcie styków bezpotencjałowych za pomocą przekaźnika.

Widok w trybie urlopu:
1.png
1.png (59.81 KiB) Przejrzano 690 razy
Widok w trybie blokady:
7.png
7.png (61.8 KiB) Przejrzano 690 razy
Ostatnio zmieniony sob lis 07, 2020 6:29 pm przez Duch__, łącznie zmieniany 2 razy.
MEW-01, 8x SRW-01, 2x ROW-02, SUPLA TOUCH DL, 16xDS na ESP (GUI), Sonoff S20 CWU, AIRLY
Duch__
Posty: 779
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

sob lis 07, 2020 6:18 pm

Ustawianie temperatur dla dni roboczych:
2.png
2.png (66.1 KiB) Przejrzano 689 razy
Ustawianie temperatur dla wolnych:
3.png
3.png (61.17 KiB) Przejrzano 689 razy
Ustawianie daty urlopu:
4.png
4.png (42.11 KiB) Przejrzano 689 razy
Ostatnio zmieniony sob lis 07, 2020 6:24 pm przez Duch__, łącznie zmieniany 1 raz.
MEW-01, 8x SRW-01, 2x ROW-02, SUPLA TOUCH DL, 16xDS na ESP (GUI), Sonoff S20 CWU, AIRLY
Duch__
Posty: 779
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

sob lis 07, 2020 6:19 pm

Ustawianie Histerezy, minimalnej i maksymalnej temperatury CO, oraz ewentualnej blokady grzania (1-ON, 2-OFF).
5.png
5.png (48.92 KiB) Przejrzano 688 razy
Strona aktualizacji z adresem MAC i RSSI
6.png
6.png (41.94 KiB) Przejrzano 683 razy
Strona konfiguracyjna z SSID, Hasłem, kodem PIN, znacznikiem wyświetlania do kiedy urlop i wgraniem ustawień fabrycznych (bez SSID, hasła i kodu PIN).
9.png
9.png (14.78 KiB) Przejrzano 683 razy
Ostatnio zmieniony sob lis 07, 2020 6:27 pm przez Duch__, łącznie zmieniany 1 raz.
MEW-01, 8x SRW-01, 2x ROW-02, SUPLA TOUCH DL, 16xDS na ESP (GUI), Sonoff S20 CWU, AIRLY
Duch__
Posty: 779
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

sob lis 07, 2020 6:22 pm

8.png
8.png (19.79 KiB) Przejrzano 680 razy
Kod źródłowy:
Termostat.7z
(12.1 KiB) Pobrany 41 razy
Zapraszam do testowania, modyfikacji i komentowania.
MEW-01, 8x SRW-01, 2x ROW-02, SUPLA TOUCH DL, 16xDS na ESP (GUI), Sonoff S20 CWU, AIRLY
andras
Posty: 329
Rejestracja: pt gru 30, 2016 5:51 pm

pn lis 09, 2020 11:47 am

Czy możesz napisać jak do tego wykorzystać czujniki temp z supli ?
Duch__
Posty: 779
Rejestracja: śr sie 24, 2016 7:26 pm
Lokalizacja: Opole

pn lis 09, 2020 12:16 pm

Trzeba by odpytywac serwer poprzez API, pytanie do @pzygmunt czy API wystawia JSON.
MEW-01, 8x SRW-01, 2x ROW-02, SUPLA TOUCH DL, 16xDS na ESP (GUI), Sonoff S20 CWU, AIRLY
ibs
Posty: 12
Rejestracja: wt sty 16, 2018 7:22 am

wt gru 15, 2020 7:48 pm

andras pisze:
pn lis 09, 2020 11:47 am
Czy możesz napisać jak do tego wykorzystać czujniki temp z supli ?
Cześć, ja mam coś takiego odpalone na malince co mi odczytuje temperaturę z czujników supli i malinka bezpośrednio steruje piecem.

import sys
import requests
import json
import RPi.GPIO as GPIO


# read temperature from device 1
response_1 = requests.get('link bezpośredni z svrxx.supla.org')

temp = json.loads(response_1.text)["temperature"]
print temp

# read temperature and humidity from device 2 (taras)
response_2 = requests.get('link bezpośredni z svrxx.supla.org')

humid_2 = json.loads(response_2.text)["humidity"]
temp_2 = json.loads(response_2.text)["temperature"]

print temp_2
print humid_2
ODPOWIEDZ

Wróć do „Projekty użytkowników”