質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

2回答

2404閲覧

UiflowでAPIアクセスでjsonデータを取得したい。

MaeharaKenji

総合スコア86

M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2022/03/13 05:33

編集2022/03/14 07:11

現在、M5stackでUiflow開発環境でのプログラムを勉強しています。

WEB APIのURLにアクセスしてjsonデータを取得してみたいと思い、下図のようなプログラムを組んでみました。
イメージ説明

なお、WEB APIのURLはプラネックス社製のドコデモセンサーというセンサーのWEB APIです。jsonデータの取得方法などはこちらのサイトを参考にしました。

上記のブロックプログラムのpythonの変換プログラムはこちらになります。

from m5stack import * from m5stack_ui import * from uiflow import * import urequests import json import time screen = M5Screen() screen.clean_screen() screen.set_screen_bg_color(0xFFFFFF) loopCount = None JsonData = None JsonData0 = None label0 = M5Label('label0', x=29, y=31, color=0x000, font=FONT_MONT_14, parent=None) label1 = M5Label('label1', x=31, y=144, color=0x000, font=FONT_MONT_14, parent=None) from numbers import Number loopCount = 0 while True: try: req = urequests.request(method='GET', url='https://svcipp.planex.co.jp/api/get_data.php?type="WS-USB02-PIR"&mac="端末のMACアドレス"&from="2022-03-12 9:22:33"&to="2022-03-12 18:00:44"&token="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"', headers={}) JsonData = json.dumps((req.text)) JsonData0 = ('' in JsonData.keys())[0] label0.set_text(str(JsonData0)) except: pass loopCount = (loopCount if isinstance(loopCount, Number) else 0) + 1 label1.set_text(str(loopCount)) wait(10) wait_ms(2)

ただ、jsonデータを正常に受信できているのか確認できません。
方法などはありませんでしょうか?

どうぞ、ご教示の程よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

とりあえず、現在うまく動作できているプログラムのブロック図です。

イメージ説明

投稿2022/03/14 07:33

MaeharaKenji

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

少し進展があったので、記述させて頂きます。
UIFlowでシリアル出力の機能を知り使ってみました。
イメージ説明
すると、400 Bad Requestという表示が出てきていることがわかりました。
イメージ説明

ググってみると、APIのURLに間違いがあるとのこと...

https://svcipp.planex.co.jp/api/get_data.php?type="WS-USB02-PIR"&mac="端末のMACアドレス"&from="2022-03-12 9:22:33"&to="2022-03-12 18:00:44"&token="zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"

上記のURLをchromeのアドレスバーにコピペしてみると、ちゃんとセンサログが出て来るので、なんでURLの入力ミスのエラーがでてくるんだろ?って思ってたのですが、

イメージ説明

https://svcipp.planex.co.jp/api/get_data.php?type=%22WS-USB02-PIR%22&mac=%22(端末のMACアドレス)%22&from=%222022-03-14%2001:22:33%22&to=%222022-03-14%2001:30:44%22&token=%22zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz%22

chromeのアドレスバーをよく見てみると、URLアクセス時にURLの一部が変化していることに気づきました。

そのURLアドレスのテキストをUIFlowのURLに代入してみたところ、
イメージ説明

正常にログを受信できていることが確認できました。

投稿2022/03/14 07:11

MaeharaKenji

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問