w oczekiwaniu na "Termostat by Supla" postanowiłem rozpocząć eksperymenty z własnym piecem i sterowaniem ogrzewaniem.
Pierwotna koncepcja wyglądała tak:
1. 5x Xiaomi Mijia LYWSD03MMC + SVD - dane o temperaturze
2. Yunshan + OLED + SHT3x - sterowanie piecem gazowym i lokalny pomiar temperatury na wypadek awarii netu
zacząłem już tworzyć kod termostatu na Yunshana odczytujący temperaturę z SVD za pomocą linków bezpośrednich, ale...
może lepszym rozwiązaniem byłoby wsadzić Pi z SVD pod piec i podłączyć któryś z GPIO do przekaźnika bezpotencjałowego.
Pytanie do rozeznanych w kodzie supla-dev - jest to do ogarnięcia?
Termostat i SVD
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Jest to do ogarnięcia ja posiadam SVD i 4 x xiaomi które na razie na biurku sterują 4 rozdzielaczami podłogówki ale z powodu chronicznego braku czasu nie zostało to jeszcze zaimplementowane. Sterowanie przekaźnikami ogarnięte w pytonie, docelowo miała powstać strona web na której można by ustawić temperatury zadane i czytać rzeczywiste i stan przekaźników no i tego jeszcze nie ma bo moi podwładni programiści się ociągają. Do sterowania zaworami wykorzystałem moduł jak na zdjęciu
You do not have the required permissions to view the files attached to this post.
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
czyli przekaźnikami sterujesz oddzielną apką? a nie lepiej rozbudować kod samego SVD?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Nie , przekaźniki załączane są tylko zależnie od progów termostatu , nie załączam ich s inny sposób nie czuje takiej potrzebyvajera wrote: Fri Dec 17, 2021 11:23 am czyli przekaźnikami sterujesz oddzielną apką? a nie lepiej rozbudować kod samego SVD?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
ale załączasz je bezpośrednio w kodzie SVD? czy masz np. skrypt w pythonie, który odczytuje temperaturę z tych samych plików tekstowych, co SVD?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Tak, odczytuję temperaturę z tych samych plików tekstowych za pomocą skryptuvajera wrote: Fri Dec 17, 2021 3:02 pmale załączasz je bezpośrednio w kodzie SVD? czy masz np. skrypt w pythonie, który odczytuje temperaturę z tych samych plików tekstowych, co SVD?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
a nie chciałbyś się podzielić tym skryptem?...
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Jak pisałem wyżej urządzenie na razie działa tylko na biurku i to nie ukończone.
Skrypt wyglada tak
Gdy uruchomie go w ten sposób :
to działa , pojawia sie np
Niestety gdy utworzyłem plik konfiguracyjny heating_th2.conf
To po restarcie supervisora dostaję
Niestety nie wiem ( jeszcze ) dlaczego tak się dzieje 
Skrypt wyglada tak
Code: Select all
import RPi.GPIO as GPIO
import argparse
import os
import re
from time import sleep
import datetime
time_index=0
time_interval = datetime.timedelta(minutes=1)
time_start = datetime.datetime.now()
time_next = time_start + time_index * time_interval
#parser=argparse.ArgumentParser(allow_abbrev=False)
parser=argparse.ArgumentParser()
parser.add_argument("--stemp","-s", help="Set temperature in room", metavar='set-temp-filip.txt', nargs='?',const=1)
parser.add_argument("--atemp","-a", help="Real temp in room", metavar='temp.txt', nargs='?', const=1)
parser.add_argument("--ttemp","-t", help="toleracne temperature", metavar='tolrance_temp.txt', nargs='?', const=1)
#parser.add_argument("--window","-w" help="Number of gpio - window", metaver='21', type=int, nargs='?', const=1)
parser.add_argument("--relay","-r", help="Number of gpio - relay", metavar='13' ,type=int, nargs='?', const=1)
args=parser.parse_args()
GPIO.setmode(GPIO.BCM)
#GPIO.setup(args.window, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(args.relay, GPIO.OUT)
#print(args.window)
#print(args.gpio)
try:
while True:
time_now = datetime.datetime.now()
if(time_now>=time_next):
time_index = time_index+1
time_next = time_start + time_index *time_interval
# odczyt temperatury zadanej
f=open(args.stemp,'r')
stemp = f.readline()
f.close()
def is_float(v):
try:
float(v)
return True
except ValueError:
return False
if is_float(stemp):
set_temp = float(stemp)
else:
set_temp = set_temp_old
# odczyt temperatury aktualnej
f=open(args.atemp,'r')
atemp = f.readline()
f.close()
def is_float_a(v):
try:
float(v)
return True
except ValueError:
return False
if is_float_a(atemp):
actual_temp = float(atemp)
else:
actual_temp = actual_temp_old
# odczyt tolerancji temperatury
f=open(args.ttemp,'r')
ttemp = f.readline()
f.close()
def is_float_t(v):
try:
float(v)
return True
except valueError:
return False
if is_float_t(ttemp):
tolerance_temp = float (ttemp)
else:
tolerance_temp = tolerance_temp_old
# regulacja temperatury
if actual_temp < set_temp :
GPIO.output(args.relay, GPIO.LOW,)
print('grzanie aktywne ')
elif actual_temp >= (set_temp - tolerance_temp):
GPIO.output(args.relay,GPIO.HIGH)
print('grzanie nieaktywne')
print(set_temp)
print(actual_temp)
set_temp_old = set_temp
actual_temp_old = actual_temp
tolerance_temp_old = tolerance_temp
except KeyboardInterrupt:
GPIO.cleanup();
Code: Select all
python2 heating.py --stemp stemp-filip.txt --atemp ~/supla-mi-th/sensor_th2.txt --ttemp tolerance_temp.txt --relay 13
Code: Select all
heating.py:28: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(args.relay, GPIO.OUT)
grzanie nieaktywne <- stan przekaznika
22.0 <- temp. zadana
22.3 <- temp. aktualna
Code: Select all
[program:heating-th-2]
command=python2 heating.py --stemp stemp-filip.txt --atemp ~/supla-mi-th/sensor_th2.txt --ttemp tolerance_temp.txt --relay 13
directory=/home/pi/supla-heating
autostart=true
autorestart=true
user=pi
Code: Select all
cpu-temp RUNNING pid 18467, uptime 0:15:16
heating-th-2 FATAL Exited too quickly (process log may have details)
mi-th-0 RUNNING pid 18466, uptime 0:15:16
mi-th-1 RUNNING pid 18465, uptime 0:15:16
mi-th-2 RUNNING pid 18464, uptime 0:15:16
mi-th-3 RUNNING pid 18463, uptime 0:15:16
supla-pushover RUNNING pid 18459, uptime 0:15:16
supla-virtual-device RUNNING pid 18462, uptime 0:15:16
supla-window-dach RUNNING pid 18461, uptime 0:15:16
supla-window-filip RUNNING pid 18460, uptime 0:15:16
supla-window-maks RUNNING pid 18470, uptime 0:15:16
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Niestety moja wiedza z pythona i Raspberry pi się wyczerpała czy jakiś specjalista rzuciłby okiem na moje wypociny i wykazał błąd lub pomysł na rozwiązanie
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
No a od czego jest internet
, poszperałem i znalazłem .
W moim przypadku superwizor wychodził bardzo szybko, ponieważ kończył się przed startsecs, a ponieważ startsecs nie został zdefiniowany, używa wartości domyślnej, która wynosi 1.
Ustawienie startsecs=0 naprawiło mój problem.
Teaz plik konfiguracyjny wygląda tak
W moim przypadku superwizor wychodził bardzo szybko, ponieważ kończył się przed startsecs, a ponieważ startsecs nie został zdefiniowany, używa wartości domyślnej, która wynosi 1.
Ustawienie startsecs=0 naprawiło mój problem.
Teaz plik konfiguracyjny wygląda tak
Code: Select all
[program:heating-th-2]
command=python2 heating.py --stemp stemp-th2.txt --atemp ~/supla-mi-th/sensor_th2.txt --ttemp tolerance_temp.txt --relay 13
directory=/home/pi/supla-heating
startsecs=0
autostart=true
autorestart=true
user=pi
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
