Portál AbcLinuxu, 8. května 2025 02:36

Dotaz: RRDtool - měření teploty - Raspberry pi

18.11.2015 14:53 Petr.M
RRDtool - měření teploty - Raspberry pi
Přečteno: 2160×
Odpovědět | Admin
Dobry den.

Dostal jsem od rodičů k narozeninám Raspberry pi.

Připojil jsem si k němu teplotní čidlo DS1820.

Po elektro stránce jsem postupoval podle tohoto a funguje mi to..

http://raspberrypi.cz/1-zapojeni-ds2482s-100-i2c-1wire-a-teplotnich-cidel-ds18b20-soucastky-zapojeni-instalace-nastaveni-mysql-php-web-android-aplikace/

Bohužel na programovaní nějakého MySQL nema zkušeností.

Našel jsem návod,jak udělat graf přes RRDtoo pomocí python.

http://www.kompf.de/weather/pionewiremini.html

Mé čidlo však není připojeno přes ten GPIO pin ale přes I2C-1wire DS2482S-100

Pomůže mí prosím někdo?

sudo apt-get install rrdtool python-rrdtool

Kam umistít tu tabulku s databazí?

rrdtool create temperature.rrd --step 900 \

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.11.2015 17:48 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Použij aplikace z balíčku ow-shell. Ten Ti zpřístupní 1wire sběrnici, i když je přes I2C. Potřebuješ ještě modul ds2482 a i2c_dev, ale ten by měl být součástí Rpi jádra. Také to mám takhle, protože 1-wire přes GPIO je emulované a dělalo to paseku.

A soubor s RRD umístíš tam, kde Ti to bude vyhovovat a budeš míť právo zápisu. Pokud bys ale chtěl být ubersprávný, tak by sis měl vytvořit adresář ve /var/lib/ a soubor s RRD umístit tam.
18.11.2015 18:40 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mi to funguje.

/mnt/1wire/28.48D4A8040000/temperature

V tom souboru temperature mam aktuální teplotu.

http://www.fastimages.eu/?v=111111ere.png

Už jsem přišel i na to jak vytvořit tu databazi.

http://www.fastimages.eu/?v=rrdtool1.png

Ten read_temp.py skript asi neupravím.

Ve škole mame kroužek delphi, je to troch podobné, ale přece jen i v tom delphi jsem začátečník.

18.11.2015 18:57 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ono to zas nevypada tak složitě

tfile = open ("/ sys / bus / W1 / devices / 28-000004abe3fa / w1_slave ")

Tu by stačilo změnít cestu k memu teplomětu.

tfile = open("/mnt/1wire/28.48D4A8040000/temperature")

text = tfile.read() // přečte teplotu

tfile.close() // uzavře soubor

Ted by chtělo jen zaokrouhlít tu ziskanou teplotu v proměnne text 23.875 na 23.8 a uložit do databaze.

Jak to mate prosím řešene?
18.11.2015 19:40 kulichs | skóre: 7 | blog: kulichuv
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
místo temperature načítej fasttemp
18.11.2015 21:01 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Děkují moc za radu.

Už to umím nečist přes php i lazarus. Ještě nějaký ten graf a spokojen :(
19.11.2015 10:29 ET
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
koukni na stranky rrdtool, je tam i tutorial a v kapitole "Time to create some graphics" je i ukazka, jak takovy graf z rrd zkonstruovat - je to par stranke v anglictine, doporucuju precist cele, at se neco priucis ;-)
19.11.2015 19:27 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Databazi mam /home/pi/teplota/teplomer1.rrd

Teplota čidla je v souboru /mnt/1wire/28.48D4A8040000/fasttemp

pi@raspberrypi ~ $ sudo rrdtool update /home/pi/teplota/teplomer1.rrd N:`cat /mnt/1wire/28.48D4A8040000/fasttemp`

ERROR: mmaping file '/home/pi/teplota/teplomer1.rrd': Nepřípustný argument

19.11.2015 21:44 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Tak owfs bych nepoužíval, občas spadne a tváří se že běží, ale teplotu Ti nepošle. Raději použij aplikaci owread. Například takhle:
owread /28.48D4A8040000/fasttemp
Navíc, owread funguje i pod obyčejným uživatelem, takže není potřeba používat sudo.
unset LANG
teplota=`owread /28.48D4A8040000/temperature12`
teplota=`printf '%.1f' $teplota`
rrdtool update /home/pi/teplota/teplomer1.rrd N:${teplota:-NaN}
(První příkaz odnastaví jazyk -- kvůli rozdílu v desetinných číslech -- 1.1 kontra 1,1. Druhý načte teplotu, třetí ji zaokrouhlí na jedno desetinné místo a čtvrtý uloží do RRD. Konstrukce
${teplota:-NaN}
zajistí, že pokud se nepovede načíst teplota, uloží se do RRD hodnota „Neznámá hodnota“.)
20.11.2015 07:27 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
pi@raspberrypi ~ $ sudo /home/pi/teplota/spust

/home/pi/teplota/spust: 6: /home/pi/teplota/spust: Syntax error: EOF in backquote substitution

Foto v přiloze.

owread /28.48D4A8040000/temperature

vypiše to teplotu 21.1875

Když zakomentují ten 6 řádek a pod něj dam

echo "21.4" > /home/pi/teplota/teplomer1.rrd

Vše OK a do souboru teplomer1.rrd se uloží 21.4

Tim je vidět že do souboru jde možno zapisovat.

Kde muže byt ještě kopanec?

20.11.2015 10:46 reb
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Na konci ctvrteho radku chybi backquote (`).
20.11.2015 11:48 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:
info v přiloze.

pi@raspberrypi ~ $ sudo /home/pi/teplota/spust

ERROR: reached EOF while loading header rrd->stat_head
20.11.2015 13:17 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Ještě se dívám, že místo /bin/sh je potřeba použít /bin/bash kvůli té konstrukci ${teplota:-NaN}. To nevím, jestli sh umí.

Jinak, echo '21.4' > soubor.rrd je chyba! Přepíše se celý obsah souboru tím 21.4, takže je třeba vytvořit RRD znovu (tím rrdtool create)
20.11.2015 13:39 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vše jsem s toho teplomer1.rrd smazal

Spustil jsem soubor create_db

#!/bin/bash

rrdtool create teplomer1.rrd --start N --step 300 \

DS:temp:GAUGE:600:U:U \

DS:outtemp:GAUGE:600:U:U \

RRA:AVERAGE:0.5:1:12 \

RRA:AVERAGE:0.5:1:288 \

RRA:AVERAGE:0.5:12:168 \

RRA:AVERAGE:0.5:12:720 \

RRA:AVERAGE:0.5:288:365

a pak /home/pi/teplota/spust

Je to ok ale databaze furt prazdna.
20.11.2015 18:51 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak mi to funguje cele jen ta databaze je furt prazdna.

Tomu skriptu spust.sh se nějak nechce.

Dal jsem i do crontab */5 * * * * /home/pi/teplota/spust.sh

V logech vidím jak se ten skript spouští co 5 minut.

Ale nezapisuje :(

20.11.2015 20:28 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
/bin/bash

unset LANG

teplota=`owread /28.48D4A8040000/temperature`

teplota=`printf '%.1f' $teplota`

rrdtool update /home/pi/teplota/teplomer_1.rrd N:${teplota:-NaN}

echo ${teplota} > /home/pi/teplota/test.txt

Do toho textaku to tu teplotu co 5 minut normálně zapisuje.

Tedy kopanec je někde tady.

rrdtool update /home/pi/teplota/teplomer_1.rrd N:${teplota:-NaN}
20.11.2015 21:29 mhepp | skóre: 22
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Problém je v tom, že při vytváření jsi nastavil RRD na dvě nezávislé hodnoty -- temp a outtemp. A při update ukládáš pouze jednu (ano, druhé čidlo nemáš, ale do RRD musíš něco uložit).

Správně bys tedy měl volat update takhle:
rrdtool update /home/pi/teplota/teplomer_1.rrd N:${teplota:-NaN}:NaN
A až zapojíš druhé čidlo, tak to NaN nahradíš za proměnou obsahující teplotu druhého čidla.
20.11.2015 22:54 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm, už to začinam chapat :)

Takže při vytvaření si mužu vytvořit třeba 3 nezavisle hodnot pro 3 čidla.

A pak to do toho ukladat.

rrdtool update /home/pi/teplota/teplomer_1.rrd N:${teplota:-NaN}:{teplota1:-NaN}:{teplota2:-NaN}
21.11.2015 14:01 mhepp
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Ano, uz to zacinas chapat! Gratuluji!
21.11.2015 14:53 Petr.M
Rozbalit Rozbalit vše Re: RRDtool - měření teploty - Raspberry pi
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak děkují všem tady za pomoc a trpělivost.

Už to funguje :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.