前提・実現したいこと
ラズパイzeroで温湿度管理のシステムを作っています。
Webでサンプルプログラムを引用して開発中です。
開発環境 MySQL(8.0.16) Apache(2.4.39) php(7.3.6) phpmyadmin(4.9.0.1)
実現したいことは、ラズパイで取得した温湿度データをデータベースにアップロードしたいです。
発生している問題・エラーメッセージ
下記エラーでデータベースに温湿度データがアップロードできない状態です。 ラズパイ側はPython、データベース側はPHPプログラムとphpmyadminで作成したDBです。 Pythonのエラーメッセージ ------------------------ pi@raspberrypi:~ $ python web.py {"press": 1020, "hum": 39.1, "temp": 21.8, "datetime": "2018/10/11 00:05:36"} Traceback (most recent call last): File "web.py", line 26, in <module> main() File "web.py", line 23, in main uploadSensorValues(21.8, 39.1, 1020) File "web.py", line 18, in uploadSensorValues print res.json() File "/usr/lib/python2.7/dist-packages/requests/models.py", line 850, in json return complexjson.loads(self.text, **kwargs) File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 516, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 374, in decode obj, end = self.raw_decode(s) File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 404, in raw_decode return self.scan_once(s, idx=_w(s, idx).end()) simplejson.scanner.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ------------------------
該当のソースコード
python
1import requests 2import json 3 4from datetime import datetime 5 6def uploadSensorValues(temp, hum, press): 7 8 url = 'http://10.xx.xxx.xxx/localfolder/sensor.php' 9 10 sensorsdata = {'datetime':datetime.now().strftime("%Y/%m/%d%H:%M:%S"),'temp':temp,'hum':hum,'press':press} 11 12 print json.dumps(sensorsdata) 13 14 headers = {'content-type': 'application/json'} 15 16 res = requests.post(url, data=json.dumps(sensorsdata), headers=headers, verify=False) 17 18 print res.json() 19 pass 20 21def main(): 22 23 uploadSensorValues(21.8, 39.1, 1020) 24 25if __name__ == '__main__': 26 main() 27
sensorvalues
1CREATE TABLE `sensorvalues` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT, 3 `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 4 `temp` float NOT NULL, 5 `hum` float NOT NULL, 6 `press` float NOT NULL, 7 PRIMARY KEY (`id`) 8) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=316 ;
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
sensor.phpのソースコード <?php $pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8','tablename','mypassword'); switch ($_SERVER['REQUEST_METHOD']) { case 'GET': $st = $pdo->query("SELECT * FROM sensorvalues"); echo json_encode($st->fetchAll(PDO::FETCH_ASSOC)); break; case 'POST': $in = json_decode(file_get_contents('php://input'), true); if (!isset($in['id'])) { $st = $pdo->prepare("INSERT INTO sensorvalues(datetime,temp,hum,press) VALUES(:datetime,:temp,:hum,:press)"); } $st->execute($in); echo json_encode("normal end"); break; } ?>
回答2件
あなたの回答
tips
プレビュー