Skip to content

Commit 3f7efff

Browse files
committedMay 15, 2022
refactor
1 parent eeb6ab5 commit 3f7efff

File tree

3 files changed

+49
-58
lines changed

3 files changed

+49
-58
lines changed
 

‎bme280.py

+10-38
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33

44
# copied from https://github.com/SWITCHSCIENCE/samplecodes/blob/master/BME280/Python27/bme280_sample.py
55
from smbus2 import SMBus
6-
import time
7-
import datetime
8-
import sqlite3
96

107
class BME280:
118
def __init__(self):
@@ -18,7 +15,7 @@ def __init__(self):
1815
self.digH = []
1916

2017
self.t_fine = 0.0
21-
18+
2219
# FIXME:
2320
self.result_T = 0.0
2421
self.result_P = 0.0
@@ -31,7 +28,7 @@ def writeReg(self, reg_address, data):
3128

3229
def get_calib_param(self):
3330
calib = []
34-
31+
3532
for i in range (0x88,0x88+24):
3633
calib.append(self.bus.read_byte_data(self.i2c_address,i))
3734
calib.append(self.bus.read_byte_data(self.i2c_address,0xA1))
@@ -56,7 +53,7 @@ def get_calib_param(self):
5653
self.digH.append((calib[28]<< 4) | (0x0F & calib[29]))
5754
self.digH.append((calib[30]<< 4) | ((calib[29] >> 4) & 0x0F))
5855
self.digH.append( calib[31] )
59-
56+
6057
for i in range(1,2):
6158
if self.digT[i] & 0x8000:
6259
self.digT[i] = (-self.digT[i] ^ 0xFFFF) + 1
@@ -67,7 +64,7 @@ def get_calib_param(self):
6764

6865
for i in range(0,6):
6966
if self.digH[i] & 0x8000:
70-
self.digH[i] = (-self.digH[i] ^ 0xFFFF) + 1
67+
self.digH[i] = (-self.digH[i] ^ 0xFFFF) + 1
7168

7269
def readData(self):
7370
data = []
@@ -76,22 +73,22 @@ def readData(self):
7673
pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4)
7774
temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4)
7875
hum_raw = (data[6] << 8) | data[7]
79-
76+
8077
self.compensate_T(temp_raw)
8178
self.compensate_P(pres_raw)
8279
self.compensate_H(hum_raw)
8380

8481
def compensate_P(self, adc_P):
8582
global t_fine
8683
pressure = 0.0
87-
84+
8885
v1 = (t_fine / 2.0) - 64000.0
8986
v2 = (((v1 / 4.0) * (v1 / 4.0)) / 2048) * self.digP[5]
9087
v2 = v2 + ((v1 * self.digP[4]) * 2.0)
9188
v2 = (v2 / 4.0) + (self.digP[3] * 65536.0)
9289
v1 = (((self.digP[2] * (((v1 / 4.0) * (v1 / 4.0)) / 8192)) / 8) + ((self.digP[1] * v1) / 2.0)) / 262144
9390
v1 = ((32768 + v1) * self.digP[0]) / 32768
94-
91+
9592
if v1 == 0:
9693
return 0
9794
pressure = ((1048576 - adc_P) - (v2 / 4096)) * 3125
@@ -101,7 +98,7 @@ def compensate_P(self, adc_P):
10198
pressure = (pressure / v1) * 2
10299
v1 = (self.digP[8] * (((pressure / 8.0) * (pressure / 8.0)) / 8192.0)) / 4096
103100
v2 = ((pressure / 4.0) * self.digP[7]) / 8192.0
104-
pressure = pressure + ((v1 + v2 + self.digP[6]) / 16.0)
101+
pressure = pressure + ((v1 + v2 + self.digP[6]) / 16.0)
105102
pressure = pressure/100
106103

107104
self.result_P = float("{:7.2f}".format(pressure))
@@ -132,7 +129,7 @@ def compensate_H(self, adc_H):
132129
var_h = 100.0
133130
elif var_h < 0.0:
134131
var_h = 0.0
135-
132+
136133
self.result_H = float("{:6.2f}".format(var_h))
137134

138135
print("hum : %6.2f %" % (var_h))
@@ -154,42 +151,17 @@ def setup(self):
154151
self.writeReg(0xF2,ctrl_hum_reg)
155152
self.writeReg(0xF4,ctrl_meas_reg)
156153
self.writeReg(0xF5,config_reg)
157-
154+
158155
def result(self) -> (float, float, float):
159156
# print(self.result_T) # e.g. 27.9
160157
# print(self.result_P) # e.g. 997.31
161158
# print(self.result_H) # e.g. 57.1
162159
return self.result_T, self.result_P, self.result_H
163160

164-
class Repository:
165-
def __init__(self, dsn) -> None:
166-
self.conn = sqlite3.connect(dsn)
167-
168-
def store(self, temperature, pressure, humidity):
169-
cur = self.conn.cursor()
170-
date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
171-
cur.execute('insert into environment(date, temperature, pressure, humidity) values(?, ?, ?, ?)', (date, temperature, pressure, humidity))
172-
self.conn.commit()
173-
174-
def close(self):
175-
self.conn.close()
176-
177-
178161
if __name__ == '__main__':
179162
try:
180163
bme280 = BME280()
181164
bme280.get_calib_param()
182165
bme280.readData()
183-
t, p, h = bme280.result()
184-
185-
dsn = '/home/pi/github.com/ddddddO/sensor-pi/environment.sqlite3'
186-
repo = Repository(dsn)
187-
repo.store(t, p, h)
188-
repo.close()
189166
except KeyboardInterrupt:
190167
pass
191-
192-
193-
194-
195-

‎bme280_store.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from bme280 import BME280
2+
import datetime
3+
import sqlite3
4+
5+
class Repository:
6+
def __init__(self, dsn) -> None:
7+
self.conn = sqlite3.connect(dsn)
8+
9+
def store(self, temperature, pressure, humidity):
10+
cur = self.conn.cursor()
11+
date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
12+
cur.execute('insert into environment(date, temperature, pressure, humidity) values(?, ?, ?, ?)', (date, temperature, pressure, humidity))
13+
self.conn.commit()
14+
15+
def close(self):
16+
self.conn.close()
17+
18+
if __name__ == '__main__':
19+
try:
20+
bme280 = BME280()
21+
bme280.get_calib_param()
22+
bme280.readData()
23+
t, p, h = bme280.result()
24+
25+
dsn = '/home/pi/github.com/ddddddO/sensor-pi/environment.sqlite3'
26+
repo = Repository(dsn)
27+
repo.store(t, p, h)
28+
repo.close()
29+
except KeyboardInterrupt:
30+
pass

‎plotter/main.go

+9-20
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,19 @@ import (
1515
"gonum.org/v1/plot/vg/draw"
1616
)
1717

18-
var dir = "/home/pi/github.com/ddddddO/sensor-pi/" // raspberry pi
19-
// var dir = "/mnt/c/DEV/workspace/GO/src/github.com/ddddddO/sensor-pi/environment.sqlite3" // wsl
18+
// const baseDir = "/home/pi/github.com/ddddddO/sensor-pi/" // raspberry pi
19+
const baseDir = "/mnt/c/DEV/workspace/GO/src/github.com/ddddddO/sensor-pi/" // wsl
20+
const plotterDir = "plotter"
2021

21-
// FIXME: 日時の取り扱い
2222
// ref: https://github.com/gonum/plot/wiki/Example-plots#more-detailed-style-settings
2323
func main() {
24-
loc, err := time.LoadLocation("Asia/Tokyo")
25-
if err != nil {
26-
fmt.Fprintln(os.Stderr, err)
27-
os.Exit(1)
28-
}
29-
// TODO: 使い方あってないよね?
30-
plot.UTCUnixTime = plot.UnixTimeIn(loc)
31-
3224
p := plot.New()
3325

3426
p.Title.Text = "pressure @around tama river"
3527
p.Y.Label.Text = "pressure"
3628
p.X.Label.Text = "date"
3729
p.X.Tick.Marker = plot.TimeTicks{Format: "2006-01-02\n15:04"}
30+
3831
p.Add(plotter.NewGrid())
3932

4033
data, err := fetchData()
@@ -61,7 +54,8 @@ func main() {
6154
p.Add(lpLine, lpPoints)
6255
// p.Legend.Add("line points", lpLine, lpPoints)
6356

64-
if err := p.Save(4*vg.Inch, 4*vg.Inch, filepath.Join(dir, "plotter", "pressure.png")); err != nil {
57+
var imageName = "pressure.png"
58+
if err := p.Save(4*vg.Inch, 4*vg.Inch, filepath.Join(baseDir, plotterDir, imageName)); err != nil {
6559
fmt.Fprintln(os.Stderr, err)
6660
os.Exit(1)
6761
}
@@ -73,7 +67,7 @@ type datum struct {
7367
}
7468

7569
func fetchData() ([]datum, error) {
76-
var dsn = filepath.Join(dir, "environment.sqlite3")
70+
var dsn = filepath.Join(baseDir, "environment.sqlite3")
7771
db, err := sql.Open("sqlite3", dsn)
7872
if err != nil {
7973
return nil, err
@@ -88,10 +82,6 @@ func fetchData() ([]datum, error) {
8882
defer rows.Close()
8983

9084
const layout = "2006-01-02 15:04:05"
91-
loc, err := time.LoadLocation("Asia/Tokyo")
92-
if err != nil {
93-
return nil, err
94-
}
9585
data := []datum{}
9686
for rows.Next() {
9787
var (
@@ -102,12 +92,11 @@ func fetchData() ([]datum, error) {
10292
return nil, err
10393
}
10494

105-
// NOTE: 一先ず気圧だけ
106-
tm, err := time.ParseInLocation(layout, d, loc)
95+
tm, err := time.Parse(layout, d)
10796
if err != nil {
10897
return nil, err
10998
}
110-
datum := datum{t: tm, value: p}
99+
datum := datum{t: tm, value: p} // NOTE: 一先ず気圧だけ
111100
data = append(data, datum)
112101
}
113102
if err := rows.Err(); err != nil {

0 commit comments

Comments
 (0)
Please sign in to comment.