Sziasztok.
Egy már működő és ép értékeket adó dht22-es hőmérő/páramerőt szeretnek a webes felületű rpimonitorba gyógyítani.
(Igen, meg tudtam forrasztani és a Raspbian is rendben van mellette. Bearanyozta a napomat.)
Ahogy olvasgattam itt-ott, rá kellett döbbennem, hogy minden konfigurációs fájlt kissé átalakítottak.
Kérdésem rövid:
ha van egy adott nevű scriptem, ami mondjuk a hőmérsékletet adja ki, hogyan drótozhatom be az elsőre bonyolultnak tűnő rpimonitorba?
(Alapvetően tehettem volna máshova is a kérdést, de a téma inkább PHP-szerű. Vagy mégsem?)
Ebbol indultam ki:
http://rpi-experiences.blogspot.fr/2013/07/rpi-monitor-use-dht11-or-dht…
az rpimonitor konfigurálásánál véreztem el.
Az ötlet meg innen jött:
http://fazekasadam.info/index.php/2013/01/13/raspberry-pi-homero-1-resz/
Csak a konfigot ez alapján sem tudtam megoldani
- 9292 megtekintés
Hozzászólások
-törölve
- A hozzászóláshoz be kell jelentkezni
Gondoltam részletesebben leírom a problémát.
Tehát adott az rpimonitor, ami gyönyörűen fut az /etc/rpimonitor/könyvtárban levő konfigfajlokkal.
Megtaláltam a /etc/rpimonitor/data.conf symlinket is, ami a /etc/rpimonitor/template/raspbian.conf fájlra mutat.
Ezen fájlban van egy dht szenzorra vonatkozó rész, ami berántja az erre vonatkozó konfigot:
include=/etc/rpimonitor/template/dht11.conf
Innentől mar csak ezzel a fájllal kell szórakozni, de ez nem egyszerű.
Megfigyeltem, nem mindegy, hol van a hőmérsékletet előcsalogató script, azt is, hogy adjuk meg. Eredetileg dht11 szenzorról szol a script, de a 22-essel is el kellene mennie, hiszen a programkód ugyanaz, ami előhozza az értékeket.
Megadtam egy saját scriptet is, ami külön a hőmérsékletet vagy a páratartalmat adja ki sallang adatok nélkül, megadtam mindezt teljes elérési útvonallal is, majd kiadtam illemtudóan a
service rpimonitor restart
parancsot, böngésző cache ürít, újratölt, eredmény ez:
________________
Living room
Temperature
Ambiant Temperature: undefined°C
Ambiant Humidity: undefined%
________________
vagyis nem jól lett megadva az adat, esetleg nincs is adat. Ez utóbbi lehetetlen, mert a sajat scriptek lefutnak, terminalban van adatom.
A probléma a config fájl tehát:
root@rpi-logger:/etc/rpimonitor/template#
cat /etc/rpimonitor/template/dht11.conf
########################################################################
# Extract temperature and humidity from DHT11/DHT22
# Page: 2
# Information Status Statistics
# - tempetature - yes - yes
# - humidity - yes - yes
#######################################################################
# Add new pages (number 2)
web.status.2.name=Living room
web.statistics.2.name=Living room
# Get dynamic data
dynamic.1.name=living_room_temp
dynamic.1.source=/usr/src/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver/read-temp.sh
#dynamic.1.source=/sys/devices/w1_bus_master1/28-000004fe1847/w1_slave #eredeti sor
dynamic.1.regexp=t=(\d+)$
dynamic.1.postprocess=$1/1000
dynamic.1.rrd=GAUGE
dynamic.2.name=humidity
dynamic.2.source=/usr/src/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver/read-hum.sh
#dynamic.2.source=Adafruit_DHT 11 7 #eredeti sor
dynamic.2.regexp=Hum = (\S+)
dynamic.2.postprocess=
dynamic.2.rrd=GAUGE
# Add a line of status in page number 2
web.status.2.content.1.name=Temperature
web.status.2.content.1.icon=cpu_temp.png
web.status.2.content.1.line.1="Ambiant Temperature: "+data.living_room_temp+"°C"
web.status.2.content.1.line.2="Ambiant Humidity: "+data.humidity+"%"
# Add a statistic graph (with 2 curves suing separate scales) in page number 2
web.statistics.2.content.1.name=Temperature
web.statistics.2.content.1.graph.1=living_room_temp
web.statistics.2.content.1.graph.2=humidity
web.statistics.2.content.1.ds_graph_options.living_room_temp.label=Ambient temp. (deg C)
web.statistics.2.content.1.ds_graph_options.humidity.label=Humidity (%)
web.statistics.2.content.1.ds_graph_options.humidity.yaxis=2
#web.statistics.2.content.1.graph_options.legend= { position: "sw"}
web.statistics.2.content.1.graph_options.y2axis={ position: "right", min: 0, max: 100 }
-----------
A konfigban említett 2 script egyike ez:
root@rpi-logger:/usr/src/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver# cat /usr/src/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver/read-hum.sh
#!/bin/bash
temp=""
hum=""
###### mérés ######
while [ "$temp" = "" ]; do
temp=`dht_measure 22 4 | grep Temp | sed 's/Temp =//g'`
done
while [ "$hum" = "" ]; do
hum=`dht_measure 22 4 | grep Hum | sed 's/Hum =//g'`
done
#echo $temp
echo $hum # ertelemszeruen ezzel az ertekkel ter vissza a prompt
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
root@rpi-logger:/sys/bus/w1/drivers# ls -l /sys/bus/w1/drivers/
összesen 0
drwxr-xr-x 2 root root 0 febr 11 10:24 w1_master_driver
drwxr-xr-x 2 root root 0 febr 11 10:24 w1_slave_driver
...még ezek is a helyükön vannak.
hiába írom be ezt a configba, az eredmény baljós.
dynamic.1.source=/sys/bus/w1/drivers/w1_slave_driver
#dynamic.1.source=/sys/devices/w1_bus_master1/28-000004fe1847/w1_slave #eredeti sor
Ma is elfáradtam.
///////
http://sustainablenetworks.org/CIS508/?page_id=1585
Íme egy nem tudom hanyadik leírás melyen végigmegyek, de valószínűleg másnak elsőre sikerül, ami nekem egy hónapja nem sok mással együtt.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Ezt a szenzort lehet sima PC-hez is csatlakoztatni vagy csak rPI-hoz?
- A hozzászóláshoz be kell jelentkezni
Lehet PC -hez csatlakoztatni, de úgy látom még a legésszerűbb ha közé teszel valami egycsipest ami RS232 vagy USB -re illeszti.
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
USB-TTL modulom van OpenWrt-s Router failsafe miatt.
Az jó lesz szerinted?
- A hozzászóláshoz be kell jelentkezni
Nem tudom az működik-e, én openwrt alól egy usbserial-ra kötött dallas 1820-at simán kiolvasok. Arduino-val tuti megy, az kb. 2 sör ára ha többet veszel.
- A hozzászóláshoz be kell jelentkezni
A probléma a 1wire illesztésével van - azért kell az egycsipes hogy ezt lekezelje, illetve RS232 -re illessze, amit akár egy USB-TTL modullal illeszthetsz (és táplálhatod is). De elképzelhető az ATtiny85 is vagy valamely olyan csip amelyik eleve rendelkezik USB stack -el (drágácskák).
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Szia Értem!
Hát nekem ilyenem van:
http://www.dx.com/p/pl2303hx-usb-to-ttl-converter-module-149859#.WA9MXv…
A DHT22 a hőmérséklet mellett a páratartalmat is ki tudja írni?
- A hozzászóláshoz be kell jelentkezni
Nem, azt elfütyüli dtmf-ben...
- A hozzászóláshoz be kell jelentkezni
Megoldható, de akarsz Windows/Linux drivert írni hozzá? - "bitbang".
Google a te barátod - "DHT22 datasheet"
"Digital relative humidity & temperature sensorAM2302/DHT22"
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Köszi, nem 'szeretnék' most driver-t írni.
Nekem elég most a hőmérséklet, ha azt alapértelmezetten ki lehet olvasni az eszközből.
Rádugom a soros portra (usb-ttl) a szenzort és pl. egy Ubuntu k alapból felismeri az eszközt?
- A hozzászóláshoz be kell jelentkezni
Szia!
Megérkezett a DHT22-es szenzor, rá is kötöttem az USB-TTL átalakítóra. 5V-t adtam neki, de DMESG-ben nem látok új eszközt felvillanni.
Az USB-TTL átlakítot, még kiírta,de később a szenzort már nem. Ez így normális? Hogyan tudnám megnézni, hogy egyáltalán működik-e? CAT paranccsal ki lehet olvasni az értéket belőle?
Köszi!
- A hozzászóláshoz be kell jelentkezni
Ez ennél egy kicsit bonyolultabb. Ha megnézed a DHT22 adatlapját, akkor látod, hogy milyen protokoll szerint kell vele kommunikálni ahhoz, hogy megkapd az adatokat. Az arduino esetében ehhez már megírták a szükséges rutinokat, így ott már csak a kész függvényeket kell meghívnod. Ha közvetlenül PC-re kötöd, akkor az ehhez szükséges drivert neked kell megírni.
- A hozzászóláshoz be kell jelentkezni
Hát akkor ez így nem fog menni.
Nekem van egy leírásom (Beginning SAP Fiori - IoT) ebben Python csomagokkal oldja meg a kiolvasást Raspberry Pi-on. Írják a 'parse', 'request' és a 'w1thermsensor' csomagokat. Szerinted ezek működhetnek sima PC-n is?
Mondjuk a leírásban nem soros portra kötik az eszközt, hanem GPIO-ra.
- A hozzászóláshoz be kell jelentkezni
„nem soros portra kötik az eszközt, hanem GPIO-ra.”
Ez nagy különbség!
De hogy valami jót is írjak: Ha nem ragaszkodsz a DHT22-höz (emléknek jó lesz, vagy eladod), akkor a DS18B20-hoz (és hasonszőrű társaihoz), már megírták a szoftvert:
https://www.digitemp.com/
http://martybugs.net/electronics/tempsensor/usb.cgi
- A hozzászóláshoz be kell jelentkezni
Lehet akkor megpróbálom inkább az arduino nano-s vonalat.
- A hozzászóláshoz be kell jelentkezni
Amivel a legjobban jarsz: fogsz egy arduino nano-t (kb. $2, de vettem mar kevesebbert is ebayrol), letoltod az arduino fejlesztokeszletet, beleteszed a dht11 libet (esetleg a ds18b20-at is, ha pontosabb homerseklet kell), es osszerakod az aramkorodet (a nano es az erzekelok melle max. felhuzoellenallasok fognak kelleni, az kb. 1-2 ft-ert megkaphato ha keveset veszel.. ha tobbet, akkor persze annyi sincs). Osszedobod a kodot, felprogramozod, es onnantol egy sajat program virtualis soros porton keresztul be tudja olvasni a mert ertekeket.
A dht11 protokolljara nem emlekszem, de asszem nem egyszeru. A ds18b20 pedig 1-wire, az nem olyan bonyolult, de elegge idoziteskritikus (emiatt meg raspberryn is sok adat elveszik, mert a kernel kihuzza alolad a procit, es mast utemez be). Szoval ha usb-uart vagy egyeb atalakitot meghackelve akarsz bitbangelni, akkor - hacsak nem ertesz hozza nagyon - vert fogsz pisalni ketes kimenetelu dolog miatt - mert hiaba ertesz hozza, ha mast utemez a kernel. Es osszessegeben meg penzben sem jarsz annyival jobban, mert egy usb-uart atalakito sem sokkal olcsobb (es ez hasznalhato utana egyebekre is).
--
A strange game. The only winning move is not to play. How about a nice game of chess? - Wargames
- A hozzászóláshoz be kell jelentkezni
Vennék ilyet, nem sajnálom rá ezt a kevéske pénzt, de ha megy a mostani Ubuntu-s gépemmel ez a szenzor, akkor nem akarnék még egy ketyerét otthonra.
- A hozzászóláshoz be kell jelentkezni
Megjött végül az arduino nano lapka. Letöltöttem az IDE-t és próbálkoztam compile-olni, de még nem töltöttem fel semmit a lapkára.
Az aktuális hőmérsékletet hol fogom majd látni? Cat paranccsal tudom majd kiolvasni egy soros portból?
- A hozzászóláshoz be kell jelentkezni
Igen, egy device file-on tudod olvasni.
Fogod az Arduino ide-t, beallitod a megfelelo portot es boardot (ha kihuzod, el tud maszni a port, lehet, hogy pl. /dev/ttyUSB1 lesz a 0-bol).
Kb. tetszoleges szenzorral mukodik az alabbi: rakeresel a $szenzornev arduino library-re, letoltod, kibontod a ~/Arduino/libraries ala, ahol az ide indulas utan korbenez, es mindent betolt.
Ezutan a file->examples alatt kivalasztasz egy olyan peldakodot, ami mar kb. azt csinalja, amit szeretnel, testreszabod, feltoltod a boardra, es megy.
A Serial modulon keresztul ossze van kotve a PC-vel, szoval ami meresi eredmenyt a board atkuld, azt latod az ide serial monitoran. (masik iranyba is megy a kommunikacio, erre is van peldakod)
Ha kesz vagy, egy scripttel olvashatod a device file-t is az ide nelkul (megfelelo jogosultsaggal persze).
Meg valami: a legtobb peldakodban benne van, hogy mit mivel koss ossze. Sokszor konfiguralhato a konkret pin (DHT meg DS18B20 eseten is), de ha valami hw-t hasznal, akkor fix (i2c-nel pl.).
--
A strange game. The only winning move is not to play. How about a nice game of chess? - Wargames
- A hozzászóláshoz be kell jelentkezni
Köszi szépen!
Szerinted erre az ellenállásra mindenképpen szükség van, vagy megy enélkül is?
- A hozzászóláshoz be kell jelentkezni
Itt valaki azt irta, hogy neki a belso felhuzo ellenallas eleg volt:
http://forum.arduino.cc/index.php?topic=165562.0
Igazabol az ellenallas a legolcsobb, legkisebb alkatresz, felesleges kisporolni belole. Ha nincs keznel a pontos ertek, betehetsz mast is a kornyekerol. Itt csak annyi a szerepe - ha jol tippelek, hogy a kommunikaciohoz biztositsa a felhuzoellenallast. Ugyanazon a vonalon kommunikal mindket iranyba, ugyhogy a protokollt ugy csinaltak meg, hogy mindket eszkoz (a DHTxx es az atmel chip) is csak lefele huzza ugyanazt a vonalat, es amikor egyik sem huzza le, akkor a felhuzoellenallas gondoskodik a logikai 1-es ertekrol (ha a protokollt maskepp talaltak volna ki, hiba eseten elofodulhatna, hogy az egyik lehuzza, a masik meg fel, es a gyengebb beledoglik.. igy meg konnyu elkerulni ezt.. nehany protokollnal lehet sinen meg tobb eszkoz, ott meg nagyobb lehetne a keveredes - pl. a DS18B20 1-wire homero).
Szoval ha epp nincs keznel 10k-s ellenallasod, jo a 4.7k, van, aki 1k-t irt, nem kritikus az erteke (minel kisebb, annal nagyobb aram kell a lehuzashoz, szoval nagyon kicsi ne legyen). Ha tul nagy, akkor viszont nem tudja felhuzni, es a kommunikacioval baj lesz (mert 1-est akarna kuldeni, de a masik 0-t fogad).
Ha nincs keznel meg ilyen ellenallasod sem, akkor - ha sok felesleges pined van meg a nanon, azokat is felhasznalhatod:
Ha pl. a D2-es pinre kotod a szenzort, a D3-D4-D5 lehet sima bemenet bekapcsolt felhuzo ellenallassal is. A setup() elejen bekapcsolod:
pinMode(D3,INPUT_PULLUP);
pinMode(D4,INPUT_PULLUP);
pinMode(D5,INPUT_PULLUP);
Es persze a D2 - D3 - D4 - D5 - DHT_adat pineket osszekotod egymassal (a DHT GND-je a GND-re, a tapja az 5V-ra menjen). Az Atmelek belso felhuzasa 20-50k Ohm korul van, ha ebbol 3-at (illetve a D2-vel egyutt 4-et, a lib forrasa szerint az is pullup) parhuzamosan kapcsolsz, kb. a megfelelo nagysagrendbe kerulnek. (viszont veszitesz par pint, amire nem tudsz mar mast kotni - ha ez szempont). Azert osszessegeben a 10k-s ellenallasra szavaznek.
(egyebkent amit linkeltel, azon RPi-vel koti ossze, itt az 5V-ot hasznald, ne a 3.3-at!)
--
A strange game. The only winning move is not to play. How about a nice game of chess? - Wargames
- A hozzászóláshoz be kell jelentkezni
Szia
Sikerült végül megoldanod hogy az rpi-monitor olvassa a DHT22-t?
Én most ugyanezzel a problémával szembesültem, nekem sem akar össze jönni.
- A hozzászóláshoz be kell jelentkezni
Terminálból kapsz eredményt?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Igen, terminálból működik hibátlanul.
- A hozzászóláshoz be kell jelentkezni
A Home-Assistant-nak van modulja hozzá, tehát valószínű banális a bekonfigurálása. Amint megtalálom az én szenzorom ki is fogom próbálni.
- A hozzászóláshoz be kell jelentkezni
subs
- A hozzászóláshoz be kell jelentkezni