teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

バックォートを追記しました。

2018/02/23 00:08

投稿

tamasa
tamasa

スコア11

title CHANGED
File without changes
body CHANGED
@@ -219,7 +219,9 @@
219
219
  try:
220
220
  read_data()
221
221
  tweet_data()
222
- write_data()```
222
+ write_data()
223
+
224
+ ```
223
225
  ### 試したこと
224
226
 
225
227
 

2

バックォートを追記しました。

2018/02/23 00:07

投稿

tamasa
tamasa

スコア11

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,19 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ラズベリーパイにセンサーのBME280を取り付けて温度、湿度、気圧のデータを出力できました。これらのデータをgoogleスプレッドシートに飛ばして記録したく、
3
+  ラズベリーパイにセンサーのBME280を取り付けて温度、湿度、気圧のデータを出力できました。
4
+
4
- 下記のホームページを参考にしましたがエラーが表示されて実行できません。
5
+  これらのデータをgoogleスプレッドシートに飛ばして記録したく、下記のホームページを参考にしましたがエラーが表示されて実行できません。
6
+ http://www.ogaworks.com/archives/9870
7
+
8
+ プログラムはPythonです。
9
+
5
10
  どなたかgoogleスプレッドシートへ飛ばすエラーを解決して下さいませんか。
11
+
6
12
  超初心者でプログラミングがよくわかっておらずすみませんが宜しくお願い致します。
7
13
 
8
14
  ### 発生している問題・エラーメッセージ
9
- 下記のホームページを参考に実行ファイルの中のプログラムの最後にgoogoleスプレッドシートにデータを飛ばすプログラムを追記しました。
10
- http://www.ogaworks.com/archives/9870
11
15
 
16
+  下記のホームページを参考に実行ファイルの中のプログラムの最後にgoogoleスプレッドシートにデータを飛ばすプログラムを追記しました。
12
17
  すると、下記のエラーが表示されて実行できません。
13
18
  ```
14
19
  wite_data()
@@ -19,7 +24,7 @@
19
24
 
20
25
  ### 該当のソースコード
21
26
 
22
- '''
27
+ ```
23
28
  #!/usr/bin/python
24
29
  # -*- coding: utf-8 -*-
25
30
 
@@ -214,8 +219,7 @@
214
219
  try:
215
220
  read_data()
216
221
  tweet_data()
217
- write_data()'''
222
+ write_data()```
218
-
219
223
  ### 試したこと
220
224
 
221
225
 

1

ソースコードを全て記載しました。

2018/02/23 00:05

投稿

tamasa
tamasa

スコア11

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
  ### 発生している問題・エラーメッセージ
9
9
  下記のホームページを参考に実行ファイルの中のプログラムの最後にgoogoleスプレッドシートにデータを飛ばすプログラムを追記しました。
10
+ http://www.ogaworks.com/archives/9870
11
+
10
12
  すると、下記のエラーが表示されて実行できません。
11
13
  ```
12
14
  wite_data()
@@ -17,51 +19,204 @@
17
19
 
18
20
  ### 該当のソースコード
19
21
 
22
+ '''
20
- Python
23
+ #!/usr/bin/python
24
+ # -*- coding: utf-8 -*-
21
25
 
22
- from twython import Twython, TwythonError
23
- from datetime import datetime
26
+ from smbus import SMBus
24
- :
25
- tweet_str = ''
27
+ import time
26
- :
27
28
 
29
+ bus_number = 1
30
+ i2c_address = 0x76
31
+
32
+ bus = SMBus(bus_number)
33
+
34
+ digT = []
35
+ digP = []
36
+ digH = []
37
+
38
+ t_fine = 0.0
39
+
40
+
41
+ def writeReg(reg_address, data):
42
+ bus.write_byte_data(i2c_address,reg_address,data)
43
+
44
+ def get_calib_param():
45
+ calib = []
46
+
47
+ for i in range (0x88,0x88+24):
48
+ calib.append(bus.read_byte_data(i2c_address,i))
49
+ calib.append(bus.read_byte_data(i2c_address,0xA1))
50
+ for i in range (0xE1,0xE1+7):
51
+ calib.append(bus.read_byte_data(i2c_address,i))
52
+
53
+ digT.append((calib[1] << 8) | calib[0])
54
+ digT.append((calib[3] << 8) | calib[2])
55
+ digT.append((calib[5] << 8) | calib[4])
56
+ digP.append((calib[7] << 8) | calib[6])
57
+ digP.append((calib[9] << 8) | calib[8])
58
+ digP.append((calib[11]<< 8) | calib[10])
59
+ digP.append((calib[13]<< 8) | calib[12])
60
+ digP.append((calib[15]<< 8) | calib[14])
61
+ digP.append((calib[17]<< 8) | calib[16])
62
+ digP.append((calib[19]<< 8) | calib[18])
63
+ digP.append((calib[21]<< 8) | calib[20])
64
+ digP.append((calib[23]<< 8) | calib[22])
65
+ digH.append( calib[24] )
66
+ digH.append((calib[26]<< 8) | calib[25])
67
+ digH.append( calib[27] )
68
+ digH.append((calib[28]<< 4) | (0x0F & calib[29]))
69
+ digH.append((calib[30]<< 4) | ((calib[29] >> 4) & 0x0F))
70
+ digH.append( calib[31] )
71
+
72
+ for i in range(1,2):
73
+ if digT[i] & 0x8000:
74
+ digT[i] = (-digT[i] ^ 0xFFFF) + 1
75
+
76
+ for i in range(1,8):
77
+ if digP[i] & 0x8000:
78
+ digP[i] = (-digP[i] ^ 0xFFFF) + 1
79
+
80
+ for i in range(0,6):
81
+ if digH[i] & 0x8000:
82
+ digH[i] = (-digH[i] ^ 0xFFFF) + 1
83
+
84
+ def readData():
85
+ data = []
86
+ for i in range (0xF7, 0xF7+8):
87
+ data.append(bus.read_byte_data(i2c_address,i))
88
+ pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4)
89
+ temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4)
90
+ hum_raw = (data[6] << 8) | data[7]
91
+
92
+ compensate_T(temp_raw)
93
+ compensate_P(pres_raw)
94
+ compensate_H(hum_raw)
95
+
96
+ def compensate_P(adc_P):
97
+ global t_fine
98
+ pressure = 0.0
99
+
100
+ v1 = (t_fine / 2.0) - 64000.0
101
+ v2 = (((v1 / 4.0) * (v1 / 4.0)) / 2048) * digP[5]
102
+ v2 = v2 + ((v1 * digP[4]) * 2.0)
103
+ v2 = (v2 / 4.0) + (digP[3] * 65536.0)
104
+ v1 = (((digP[2] * (((v1 / 4.0) * (v1 / 4.0)) / 8192)) / 8) + ((digP[1] * v1) / 2.0)) / 262144
105
+ v1 = ((32768 + v1) * digP[0]) / 32768
106
+
107
+ if v1 == 0:
108
+ return 0
109
+ pressure = ((1048576 - adc_P) - (v2 / 4096)) * 3125
110
+ if pressure < 0x80000000:
111
+ pressure = (pressure * 2.0) / v1
112
+ else:
113
+ pressure = (pressure / v1) * 2
114
+ v1 = (digP[8] * (((pressure / 8.0) * (pressure / 8.0)) / 8192.0)) / 4096
115
+ v2 = ((pressure / 4.0) * digP[7]) / 8192.0
116
+ pressure = pressure + ((v1 + v2 + digP[6]) / 16.0)
117
+ print ("pressure : %7.2f hPa" % pressure/100)
118
+
119
+ def compensate_T(adc_T):
120
+ global t_fine
121
+ v1 = (adc_T / 16384.0 - digT[0] / 1024.0) * digT[1]
122
+ v2 = (adc_T / 131072.0 - digT[0] / 8192.0) * (adc_T / 131072.0 - digT[0] / 8192.0) * digT[2]
123
+ t_fine = v1 + v2
124
+ temperature = t_fine / 5120.0
125
+ print ("temp : %-6.2f ℃" % (temperature))
126
+
127
+ def compensate_H(adc_H):
128
+ global t_fine
129
+ var_h = t_fine - 76800.0
130
+ if var_h != 0:
131
+ var_h = (adc_H - (digH[3] * 64.0 + digH[4]/16384.0 * var_h)) * (digH[1] / 65536.0 * (1.0 + digH[5] / 67108864.0 * var_h * (1.0 + digH[2] / 67108864.0 * var_h)))
132
+ else:
133
+ return 0
134
+ var_h = var_h * (1.0 - digH[0] * var_h / 524288.0)
135
+ if var_h > 100.0:
136
+ var_h = 100.0
137
+ elif var_h < 0.0:
138
+ var_h = 0.0
139
+ print ("hum : %6.2f %" % (var_h))
140
+
141
+
142
+ def setup():
143
+ osrs_t = 1 #Temperature oversampling x 1
144
+ osrs_p = 1 #Pressure oversampling x 1
145
+ osrs_h = 1 #Humidity oversampling x 1
146
+ mode = 3 #Normal mode
147
+ t_sb = 5 #Tstandby 1000ms
148
+ filter = 0 #Filter off
149
+ spi3w_en = 0 #3-wire SPI Disable
150
+
151
+ ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode
152
+ config_reg = (t_sb << 5) | (filter << 2) | spi3w_en
153
+ ctrl_hum_reg = osrs_h
154
+
155
+ writeReg(0xF2,ctrl_hum_reg)
156
+ writeReg(0xF4,ctrl_meas_reg)
157
+ writeReg(0xF5,config_reg)
158
+
159
+
160
+ setup()
161
+ get_calib_param()
162
+
163
+
164
+ if __name__ == '__main__':
165
+ try:
166
+ readData()
167
+ except KeyboardInterrupt:
168
+ pass
169
+
170
+
171
+ import gspread
172
+ from oauth2client.service_account import ServiceAccountCredentials
173
+
174
+ column_datas = []
175
+
28
176
  def read_data():
29
- global tweet_str
177
+ global column_datas
30
- :
31
- tweet_str = compensate_T(temp_raw)
32
- tweet_str = tweet_str + ' ' + compensate_P(pres_raw)
33
- tweet_str = tweet_str + ' ' + compensate_H(hum_raw)
34
- print tweet_str
35
- :
36
178
 
37
- def tweet_data():
38
- consumerKey = "{Consumer Key (API Key)}"
39
- consumerSecret = "{Consumer Secret (API Secret)}"
40
- accessToken = "{Access Token}"
41
- accessSecret = "{Access Token Secret}"
42
- twitter = Twython(consumerKey, consumerSecret, accessToken, accessSecret)
43
- twitter.update_status(status=datetime.now().strftime("%Y/%m/%d %H:%M:%S") + ' ' + tweet_str)
179
+ column_datas.append(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
44
- :
45
180
 
181
+
182
+ def write_data():
183
+ global column_datas
184
+ filename = '/home/pi/BME280-master/Python27/BME280test-d6e6eab111ef.json'
185
+ client_email = "bme280test@bme280test.iam.gserviceaccount.com"
186
+ with open(filename) as f: private_key = f.read()
187
+ scopes = ['https://spreadsheets.google.com/feeds/', 'https://docs.google.com/feeds']
188
+ credentials = ServiceAccountCredentials.from_json_keyfile_name(filename, scopes)
189
+ gs = gspread.authorize(credentials)
190
+ doc = gs.open('bme280_thp')
191
+ sheet = doc.worksheet("bme280")
192
+ sheet.append_row(column_datas)
193
+
194
+
46
195
  def compensate_P(adc_P):
47
- :
48
- return " / 気圧: %7.2f hPa" % (pressure/100)
196
+ global column_datas
49
197
 
198
+ column_datas.append("%7.2f" % (pressure/100))
199
+
200
+
50
201
  def compensate_T(adc_T):
51
- :
52
- return " / 温度: %-6.2f℃" % (temperature)
202
+ global column_datas
53
203
 
204
+ column_datas.append("%-6.2f" % (temperature))
205
+
206
+
54
207
  def compensate_H(adc_H):
55
- :
56
- return " / 湿度: %6.2f %%" % (var_h)
208
+ global column_datas
57
209
 
210
+ column_datas.append("%6.2f" % (var_h))
211
+
212
+
58
213
  if __name__ == '__main__':
59
214
  try:
60
- :
61
- read_data()
215
+ read_data()
62
- tweet_data()
216
+ tweet_data()
63
- :
217
+ write_data()'''
218
+
64
219
  ### 試したこと
65
220
 
66
- : は削除しました。
221
+
67
222
  pythonでチェックできる他のエラーは修正しました。