Řešení záznamu historie teploty na chatě

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
Uživatelský avatar
atx
Příspěvky: 4
Registrován: 27 led 2023, 12:49
Reputation: 0
Bydliště: PA

Řešení záznamu historie teploty na chatě

Příspěvek od atx » 06 lis 2023, 10:10

Prosím o radu - navržení - jak vyřešit tento záměr. Chci na chatě mít zařízení měřící teplotu v pokoji, zaznamenávající třeba jednou za hodinu teplotu do logu. Protože chci vědět jaká tam v zimě bývá nejnižší teplotu a jak rychle dochází k ochlazování když odjedeme.
Výsledný log bych rád viděl v grafu.
Něco jako třeba tady. (Linuxové servery dělají podobné grafy teploty, zatížení cpu, donwload, upload,...)
Obrázek

V minulosti jsem již se snažil o sestavení projektu v sestavě: Arduino nano + DHT11 + microSD datalogger + RTC DS3231.
Problém na který jsem tehdá narazil bylo, jak potom vytáhnout log ze zařízení a převést ho na přehledný graf.
Dnes uvažuji nad přenosem přes wifi, že bych koupil desku arduina s wifi modulem, a komunikovat se tím přes wifi.

Prosím o radu, jestli exustuje nějaké řešení nebo lepší řešení jak by jste to navrhli vy, nebo jestli existuje nějaký již hotový produkt, co by zaznamenával historii pokojové teploty.

Děkuji
Přílohy
graf.jpg

Uživatelský avatar
gilhad
Příspěvky: 789
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Řešení záznamu historie teploty na chatě

Příspěvek od gilhad » 06 lis 2023, 10:35

Já si udělal shield na UNO, kde jsou dvě velká tlačítka -
zelené, které rozsvítí/zhasne zelenou diodu, která indikuje, že jsme na chatičce (protože to se ta teplota chová logicky jinak) a píše to do logu
červené, které rozsvítí/zhasne červenou diodu, která indikuje, že je SD karta odpojená a může se vytáhnout - při stisknutí provede měření, odpojí kartu a rozsvítí ledku, při dalším stisknutí zhasne ledku, připojí kartu a provede měření.
Pak je tam modul pro SD kartu, kam se ta měření ukládají
modul pro RTC, aby to znalo správný čas a datum i v případě výpadku napájení
spousta DS18B20 senzorů, které to měří na různých místech
a fotoodpor z Arduino kitu pro měření světla (ono je to kdesi uvnitř, ale (jasný/zamračený) den a noc to rozezná

Výsledný soubor převedu na CSV (tohle jsem ještě moc nevychytal, tak to dělám skriptem, v nějaké další verzi asi přepíšu logování) a z něj vygeneruju graf, vypadá to asi takhle (ale to jsem měl všechny senzory na jednom stole - a je vidět, kdy se v pokoji svítilo lampou)
MER2309B.png

Kód: Vybrat vše

import pandas as pd
import matplotlib.pyplot as plt

# Load your data from a CSV file
data = pd.read_csv('MER2309B.csv', parse_dates=['datetime'], sep=',' )
print(data.head())
print(data.info())
# Assuming 'datetime' is your timestamp column, convert it to datetime format
data['datetime'] = pd.to_datetime(data['datetime'])
data['light_100'] = data['light'] / 100

# Replace error code (-127) with 0.0 in all temperature columns
temperature_columns = ['temperature[0]', 'temperature[1]', 'temperature[2]', 'temperature[3]', 'temperature[4]', 'temperature[5]', 'temperature[6]', 'temperature[7]', 'temperature[8]', 'temperature[9]', 'temperature[10]', 'temperature[11]', 'temperature[12]']

for column in temperature_columns:
	data[column] = data[column].replace(-127, 0.0)

# Calculate the average of the temperature columns and store it in a new column 'average_temperature'
data['average_temperature'] = data[temperature_columns].mean(axis=1)

# Plot your data
plt.figure(figsize=(12, 6))
plt.plot(data['datetime'], data['light_100'], label='Light', color='blue')
for i in range(13):
	plt.plot(data['datetime'], data[f'temperature[{i}]'], label=f'Temperature[{i}]')
plt.plot(data['datetime'], data[f'average_temperature'], label=f'Temperature Average', color='red')

# Customize your plot (titles, labels, legends, etc.)
plt.title('Light and Temperature Over Time')
plt.xlabel('Datetime')
plt.ylabel('Value')
plt.legend()
plt.grid()

# Save or display the plot
plt.savefig('MER2309B.png')
plt.show()
ale je to celé ještě dost nehotové a ve vývoji a pro publikaci to bude chtít učesat

tahle vypadají nějaká reálná data se dvěma čidly - jedno v chatě, jedno venku
MER2310B.png
Je vidět, jak je teplota uvnitř stabilnější a opožděná za venkovní, která je opožděná za sluncem

Uživatelský avatar
Caster
Příspěvky: 385
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Řešení záznamu historie teploty na chatě

Příspěvek od Caster » 06 lis 2023, 13:02

Můj první projekt byl měření napětí autobaterie 1x za hodinu pomocí ATtiny202 (na fotce nahrávání programu pomocí programátoru Microchip SNAP - v popředí, bílý) a modulu Sigfox RKWS01. Data se nikam neukládají ale rovnou odesílají přes síť Sigfox na server backend.sigfox.com kde mám nastaven script, který data vynese do grafu na thingspeak.com

Obrázek

Problém je, že síť Sigfox v ČR před několika měsíci krachla a poslední data mám z letní cesty na jachtu do Chorvatska, Zadar letos v létě 8-) .

Nově bych asi použil síť LoRaWAN Českých radiokomunikací, která funguje v pohodě ;) . Chystám na ní projekt GPS/LoRa mikro lokátoru koček zašitý v obojku s výdrží více než 3 měsíce (poloha 1x za hodinu s možností nastavení častěji z aplikace v mobilu (Android Studio) pro dohledání kočky). Plošný spoj bude velký cca 8 x 25 mm. LoRa síť umožní při nezachycení GPS signálu přibližné určení polohy pomocí automatické triangulace signálu. Na obrázku testování GPS přijímače u-Blox MIA-M10Q s mou GPS drátovou dipolovou anténou, která bude v obojku. Signál z antény byl v pohodě i bez zapnutí LNA v GPS přijímači. Pro maximální výdrž baterie použiju funkci CloudLocate, kdy pro určení GPS polohy postačí probudit přijímač jen na několik sekund.

Pablo74
Příspěvky: 48
Registrován: 03 lis 2019, 17:00
Reputation: 0

Re: Řešení záznamu historie teploty na chatě

Příspěvek od Pablo74 » 10 lis 2023, 20:31

Jestli to chápu dobře, je na chatě trvale dostupný internet přes wifi síť. Data ze senzoru se kromě SD karty dají uložit na web v podstatě kamkoli, mrknul bych se na Google Tabulky (Google Sheet) - jde napsat jednoduchý skript (v JavaScriptu, Apps Script tomu říkají), ten propojit se sešitem Google Sheet a ze zařízení jednoduchým http GET requestem přenést a zapsat data.

Jakmile mám údaje v tabulce Google Sheet, dá se dělat cokoli, kromě analýzy dat i vygenerovat graf. Ať už způsobem, že mám webovou aplikaci a ta si načte data z tabulky a zobrazí je graficky ve vlastní režii nebo využít služeb třetích stran. Nebo si udělat to stejný jako mobilní aplikaci; příp. oboje.

Nemusí to být přímo Google Sheet, ale i jiná dostupná služba jako Seatable nebo Airtable. Ale nejvíc kontroly nad daty a jejich zpracováním poskytne Google Sheet. Není nutné mít email od Googlu (xyz@gmail.com), služby Google se dají použít i s jinou emailovou adresou, klidně na seznam.cz

Vše výše zmíněné se dá provozovat zdarma.

Uživatelský avatar
Diego
Příspěvky: 170
Registrován: 23 črc 2017, 09:43
Reputation: 0
Kontaktovat uživatele:

Re: Řešení záznamu historie teploty na chatě

Příspěvek od Diego » 12 lis 2023, 05:08

Taky záleží jak hodně chceš jít do minulosti a jestli stačí graf informativně nebo chceš s daty ještě něco dělat.
Já používam na teploměr Thingspeak: https://thingspeak.com/channels/387730 Graf a hodnoty tam mam, je to zdarma a stačí, ale záleží na tom ...
https://arze.cz - ARduino Zapojení Elektronika

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Google [Bot] a 53 hostů