Link probes to Rasp (software side) » Historique » Version 3
guillaume.devoyon, 24/05/2018 17:55
1 | 1 | guillaume.devoyon | h1. Link probes to Rasp (software side) |
---|---|---|---|
2 | |||
3 | h2. Software installation |
||
4 | |||
5 | We assume to that part, all previous steps are done : |
||
6 | |||
7 | 1) OS installation and Rasp working. You have sheel access on it. 2) BME280 is connected thru I2C ports (SDA/SCL). |
||
8 | |||
9 | First, we need to update RPI to last version of firmware (you need to have internet access to do so): |
||
10 | 3 | guillaume.devoyon | @sudo rpi-update@ |
11 | 1 | guillaume.devoyon | |
12 | a reboot is need after upgrade. |
||
13 | |||
14 | We have to install pyhton packages and pip |
||
15 | 2 | guillaume.devoyon | |
16 | 1 | guillaume.devoyon | <pre> |
17 | sudo apt-get install python3 pip |
||
18 | </pre> |
||
19 | 2 | guillaume.devoyon | |
20 | 1 | guillaume.devoyon | |
21 | Once all installed with perquisites, you can download the tooling for getting details from I2C ports: |
||
22 | <pre> |
||
23 | sudo apt-get install i2c-tools |
||
24 | </pre> |
||
25 | |||
26 | You also need to activate I2C on the rasp : |
||
27 | <pre> |
||
28 | sudo raspi-config |
||
29 | </pre> |
||
30 | |||
31 | A ncurse blue screen must appear. You must go to : |
||
32 | |||
33 | "5 interfacing Options" ==> "P5 I2C Enable / Dibale I2C" |
||
34 | |||
35 | Once done you are ready to start. |
||
36 | |||
37 | Configuration |
||
38 | |||
39 | 1) we need to get the adress used by your BME280. We will use the tool installed with package I2C-tools above : |
||
40 | |||
41 | <pre> |
||
42 | #i2cdetect -y 1 |
||
43 | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
||
44 | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
45 | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
46 | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
47 | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
48 | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
49 | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
50 | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
||
51 | 70: -- -- -- -- -- -- -- 77 |
||
52 | </pre> |
||
53 | |||
54 | In this case my BME280 is running on 0x77 adress. |
||
55 | |||
56 | To read values of sensors, we need to install the package from pip "BEM280". To do so : |
||
57 | <pre> |
||
58 | sudo pip3 install bme280 |
||
59 | </pre> |
||
60 | |||
61 | infos here : https://github.com/kbrownlees/bme280/blob/master/README.rst once installation done : |
||
62 | |||
63 | <pre> |
||
64 | $ ~/.local/bin/read_bme280 --i2c-address 0x77 |
||
65 | 1011.97 hPa |
||
66 | 58.31 % |
||
67 | 23.36 C |
||
68 | </pre> |
||
69 | |||
70 | You can note that usage is made by regular user. Some switches exist in order to get only one sensor value instead of all. |
||
71 | |||
72 | To store datas we will use sqlite which is super light in consumption perspective. To install |
||
73 | <pre> |
||
74 | sudo apt-get install sqlite |
||
75 | </pre> |
||
76 | |||
77 | <pre> |
||
78 | $ sqlite hive_sensors.db |
||
79 | SQLite version 2.8.17 |
||
80 | Enter ".help" for instructions |
||
81 | sqlite> create table bme280( |
||
82 | ...> DATE TEXT NOT NULL, |
||
83 | ...> SENSOR TEXT NOT NULL, |
||
84 | ...> PRESSURE REAL NOT NULL, |
||
85 | ...> TEMPERATURE REAL NOT NULL, |
||
86 | ...> HUMIDITY REAL NOT NULL |
||
87 | ...> ); |
||
88 | sqlite> |
||
89 | </pre> |
||
90 | |||
91 | A script can be run by cron to insert datas : |
||
92 | |||
93 | <pre> |
||
94 | #!/bin/sh |
||
95 | . ../config/openbeelab.conf |
||
96 | |||
97 | DATE=$( date +%Y-%m-%d ) |
||
98 | TIME=$( date +%H:%M ) |
||
99 | |||
100 | |||
101 | # get datas from censor |
||
102 | PRESSURE=`~/.local/bin/read_bme280 --i2c-address $EXTSENS --pressure` |
||
103 | HUMIDITY=`~/.local/bin/read_bme280 --i2c-address $EXTSENS --humidity` |
||
104 | TEMPERATURE=`~/.local/bin/read_bme280 --i2c-address $EXTSENS --temperature` |
||
105 | |||
106 | #modify a bit format for datas (remove space and unity) |
||
107 | PRESSURE=`echo $PRESSURE | sed 's/ *//g' | sed 's/hPa//g'` |
||
108 | HUMIDITY=`echo $HUMIDITY | sed 's/ *//g' | sed 's/%//g'` |
||
109 | TEMPERATURE=`echo $TEMPERATURE | sed 's/ *//g' | sed 's/C//g'` |
||
110 | |||
111 | echo "$PRESSURE $HUMIDITY $TEMPERATURE" |
||
112 | echo "sqlite3 $BASE/sqlite/openbeelab.db insert into bme280 values ($DATE $TIME,$EXTSENS,$PRESSURE,$TEMPERATURE,$HUMIDITY);" |
||
113 | |||
114 | # inserting in database |
||
115 | sqlite3 $BASE/sqlite/openbeelab.db "insert into bme280 values ('$DATE $TIME','$EXTSENS','$PRESSURE','$TEMPERATURE','$HUMIDITY')"; |
||
116 | </pre> |
||
117 | |||
118 | and this script use the config file openbeelab.conf |
||
119 | |||
120 | <pre> |
||
121 | # Configuration |
||
122 | # base repo of scripts |
||
123 | BASE=/home/pi/openbeelab_v1.0 |
||
124 | |||
125 | #external sensore address |
||
126 | EXTSENS=0x77 |
||
127 | |||
128 | </pre> |