M5Stack/ATOMシリーズとGPSユニットを組み合わせてGPSトラッキングをする仕組みができないか調査をしている中で、計測した位置情報をサイボウズ社のkintoneに直接アップロードするところまでできたのでソースコードを公開します。
通信ユニットとIoT回線を使いスタンドアロンでも動きGPSロガーを「M5Stack+GPSユニット+通信ユニット+IoT回線でGPSロガーを作る」
で公開しました。
大きな画像を表示( http://www.ria-lab.com/omiyage/gps_cybozu_20220120.png )
from m5stack import * from m5ui import * from uiflow import * import wifiCfg import time import ntptime import urequests import json import unit gps0 = unit.get(unit.GPS, unit.PORTA) API_URL = 'https://<YOUR_SUBDOMAIN>.cybozu.com/k/v1/record.json' API_TOKEN = '<YOUR_TOKEN>' APP_ID = '<YOUR_APP_ID>' time = None longitude = None latitude = None data = None # Wi-Fi接続 wifiCfg.autoConnect(lcdShow=True) wifiCfg.reconnect() # Wi-Fi接続に成功するまで待機 while not (wifiCfg.wlan_sta.isconnected()): wait_ms(500) print('retry') # NTPで時刻合わせ/タイムゾーン設定 ntp = ntptime.client(host='ntp.nict.jp', timezone=9) gps0.set_time_zone(9) # メインループ while True: # GPSモジュールからデータを取得 time = gps0.gps_time longitude = gps0.longitude latitude = gps0.latitude # 取得したデータをKintone向けの形式に整える data = {'app':APP_ID,'record':({'gpstime':({'value':str(time)}),'latitude':({'value':str(latitude)}),'longitude':({'value':str(longitude)})})} try: # APIトークンとJSONデータを送信 req = urequests.request(method='POST', url=API_URL,json=json.dumps(data), headers={'X-Cybozu-API-Token':API_TOKEN,'Content-Type':'application/json'}) except: print(str('error')) wait(10) wait_ms(2)
[…] […]
[…] […]