この記事について
前回の失敗記事を踏まえてになります。
前回記事:Power BI のストリーミングデータセットにAPI使って直接データぶん投げてみて失敗した話
前回の失敗した理由
文末に書いてある通り、PostしているJson形式に誤りがあったためです。
Pythonなどから投げるときは、こちらの「Raw」という部分の通りに送る必要があります。

Postmanだと・・・
では、これをM5Stackではどうやるのか
私の環境は M5Cloudを使用しているため、MicroPython形式で書いています。
main.py
from m5stack import *
import time
import ujson
import urequests
import machine
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
lcd.font(lcd.FONT_DejaVu24)
lcd.clear()
class powerbi:
    def __init__(self):
        self.rtc = machine.RTC()
        self.rtc.ntp_sync('ntp.nict.jp', update_period=3600)
        # PowerBI ストリーミングデータセットのURLを入れる
        self.posturl = ''
    def timeset(self):
        timedata = self.rtc.now()
        prm_year = '{:0=4}'.format(timedata[0])
        prm_month = '{:0=2}'.format(timedata[1])
        prm_day = '{:0=2}'.format(timedata[2])
        prm_hour = '{:0=2}'.format(timedata[3])
        prm_minute = '{:0=2}'.format(timedata[4])
        prm_second = '{:0=2}'.format(timedata[5])
        self.datetime =  prm_year + "-" \
                +   prm_month + "-" \
                +   prm_day + "T" \
                +   prm_hour + ":" \
                +   prm_minute + ":" \
                +   prm_second + "Z"
  
    def postpowerbi(self,btn):
        self.btn = btn
        pbheaders = {
            'Content-Type' :'application/json'
        }
        if "A" in self.btn:
            body = [
                {
                    "datetime" : self.datetime,
                    "A" : 1,
                    "B" : 0,
                    "C" : 0
                }
            ]
            body_json = ujson.dumps(body).encode("utf-8")
        elif "B" in self.btn:
            body = [
                {
                    "datetime" : self.datetime,
                    "A" : 0,
                    "B" : 1,
                    "C" : 0
                }
            ]
            body_json = ujson.dumps(body).encode("utf-8")
        elif "C" in self.btn:
            body = [
                {
                    "datetime" : self.datetime,
                    "A" : 0,
                    "B" : 0,
                    "C" : 1
                }
            ]
            body_json = ujson.dumps(body).encode("utf-8")
        else:
            test = "aaa"
        res = urequests.post(
            self.posturl,
            data=body_json,
            headers=pbheaders
        )
        res.close()
PowerBI = powerbi()
while True:
    PowerBI.timeset()
    if buttonA.wasPressed():
        PowerBI.postpowerbi("A")
    if buttonB.wasPressed():
        PowerBI.postpowerbi("B")
    if buttonC.wasPressed():
        PowerBI.postpowerbi("C")
    time.sleep(0.5)
結果・・・
こうなりました!
#m5stack のボタンで#powerbi のストリーミングデータセットにAPI投げて
— りなたむ@steed400 (@R_t_A_n_M) December 24, 2018
投票みたいなことができるガジェットを作ってみた(笑)
まぁなんに使うんかわからんけど。。。 pic.twitter.com/EtYAoxjabD
まとめ
・いろいろ使うときはちゃんと調べてからやろう!
・一つ一つロジックを確実に確認しながら作ったほうが後々楽!
・モノづくりたのしい!
次やりたいこと
センサーデータを直接投げてみようかなと考えてます♪
