2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【成功しました】PowerBI のリアルタイムデータセットにM5Stackから直接データをぶん投げてみた

Last updated at Posted at 2018-12-24

この記事について

前回の失敗記事を踏まえてになります。
前回記事:Power BI のストリーミングデータセットにAPI使って直接データぶん投げてみて失敗した話

前回の失敗した理由

文末に書いてある通り、PostしているJson形式に誤りがあったためです。
Pythonなどから投げるときは、こちらの「Raw」という部分の通りに送る必要があります。
image.png

Postmanだと・・・

こんな感じです。
image.png
ちなみに、戻り値は返ってきません。

では、これを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)

結果・・・

こうなりました!

まとめ

・いろいろ使うときはちゃんと調べてからやろう!
・一つ一つロジックを確実に確認しながら作ったほうが後々楽!
・モノづくりたのしい!

次やりたいこと

センサーデータを直接投げてみようかなと考えてます♪

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?