Na RPi zbierającym dane z różnych czujników, w katalogu domowym,
mam plik o nazwie "cronn" z zestawem zadań wykonywanych przez crona.
Do tego pliku dopisuję linijkę:
Kod: Zaznacz cały
@reboot (sleep 135 ; nohup /usr/bin/python /home/ja/bin/ttsolar.py ) > /home/ja/log-ttsolar.txt 2>&1
tłumaczenie na ludzkie: po starcie poczekaj 135 sekund następnie uruchom polecenie pytona z pliku ttsolar.py,
a ewentualne wyświetlane komunikaty i błędy zapisz do pliku log.
następnie aktualizuję zadania crona pleceniem:
plik ttsolar.py ma taką zawartość:
Kod: Zaznacz cały
#!/usr/bin/python
# pomiar temperatur - grzalka solar
import urllib2
#import urllib2.error
import glob
import sys
import time
import datetime
import csv
logfile = datetime.datetime.now().strftime("/mnt/120G/monito/ttsolar-%Y%m%d.txt")
# plik do zapisu danych co minute
while True:
html = "nn"
try:
response = urllib2.urlopen('http://10.0.7.112/T')
html = response.read()
except:
pass
time.sleep(18)
now = datetime.datetime.now()
while ( now.second<49 ):
time.sleep(4)
now = datetime.datetime.now()
ofile = open (logfile,"a")
ofilewriter = csv.writer(ofile,delimiter='\t')
ofilewriter.writerow([datetime.datetime.now().strftime('%Y-%m-%d %H:%M'), html ])
ofile.close()
można to uprościć ale pokazuję dokładnie jak mam to zrobione.
Po resecie w katalogu domowym widoczny jest pusty plik: log-ttsolar.txt
oraz w katalogu gdzie gromadzą się dane plik: ttsolar-20231811.txt
Na żywo można zobaczyć co się w nim pojawia:
i widać to tak:
Kod: Zaznacz cały
2023-11-18 09:16 T 21.44 21.31 21.31 -46
2023-11-18 09:17 T 22.63 21.31 21.31 -48
2023-11-18 09:18 T 22.69 21.25 21.31 -47
2023-11-18 09:19 T 22.00 21.25 21.38 -44
Pomiary robi esp8266 i wyniki udostępnia metodą GET pod adresem
http://10.0.7.112/T
permanentnie ustawionym w routerze.
Kod: Zaznacz cały
server.on("/T", []() {
sensors.requestTemperatures();
replay = "T ";
for (byte n = 0; n < MAX_SENSORS && n < device_count; n++) {
replay += String(sensors.getTempC(sensors_addr[n]));
replay += " ";
}
replay += " ";
replay += String(WiFi.RSSI());
server.send(200, "text/html", replay);
});
Jak widać dane z 3 czujników DS18B20 już się zbierają. Sprawy elektroniczne i programowe załatwione.
Zbiornik z grzałką wmontowany w układ. Z obliczeń wynika, że przy nominalnym napięciu grzałek,
wzrost temperatury o 50°C , w zbiorniku (KP-27/L-10, rok:2005), nastąpi po około 50 minutach.
W rzeczywistości oczywiście temperatura nie będzie w całej objętości identyczna, ale teoretycznie
mogę z pomiaru temperatur na wlocie i wylocie uzyskać prędkość grawitacyjnego przepływu wody.