【성공되었습니다】 PowerBI의 실시간 데이터 세트에 M5Stack에서 직접 데이터를 던져 보았습니다.
이 기사에 대하여
마지막 실패 기사를 바탕으로 됩니다.
마지막 기사 : Power BI의 스트리밍 데이터 세트에 API를 사용하여 직접 데이터를 던져보고 실패한 이야기
마지막 실패한 이유
문장에 쓰여진 대로, Post하고 있는 Json 형식에 오류가 있었기 때문입니다.
파이썬 등에서 던질 때는 여기의 "Raw"라는 부분대로 보내야합니다.
Postman이라면...
이런 느낌입니다.
그건 그렇고, 반환 값은 반환되지 않습니다.
그럼 M5Stack에서 어떻게 할 것인가?
내 환경은 M5Cloud를 사용하기 때문에 MicroPython 형식으로 작성하고 있습니다.
main.pyfrom 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 던져 투표 같은 일을 할 수 있는 가제트를 만들어 보았다(웃음) 아무튼 어떻게 사용할까 모르겠지만. . . 피 c. 라고 r. 코 m / Echao x Bd — 리나타무@steed400 (@R_t_A_n_M) December 24, 2018
요약
문장에 쓰여진 대로, Post하고 있는 Json 형식에 오류가 있었기 때문입니다.
파이썬 등에서 던질 때는 여기의 "Raw"라는 부분대로 보내야합니다.
Postman이라면...
이런 느낌입니다.
그건 그렇고, 반환 값은 반환되지 않습니다.
그럼 M5Stack에서 어떻게 할 것인가?
내 환경은 M5Cloud를 사용하기 때문에 MicroPython 형식으로 작성하고 있습니다.
main.pyfrom 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 던져 투표 같은 일을 할 수 있는 가제트를 만들어 보았다(웃음) 아무튼 어떻게 사용할까 모르겠지만. . . 피 c. 라고 r. 코 m / Echao x Bd — 리나타무@steed400 (@R_t_A_n_M) December 24, 2018
요약
내 환경은 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 던져 투표 같은 일을 할 수 있는 가제트를 만들어 보았다(웃음) 아무튼 어떻게 사용할까 모르겠지만. . . 피 c. 라고 r. 코 m / Echao x Bd — 리나타무@steed400 (@R_t_A_n_M) December 24, 2018
요약
・여러가지 사용할 때는 제대로 조사하고 나서 하자!
・하나 하나 로직을 확실히 확인하면서 만든 편이 나중에 편해!
・물건 만들기의 것 같다!
다음에 하고 싶은 일
센서 데이터를 직접 던져볼까라고 생각합니다♪
Reference
이 문제에 관하여(【성공되었습니다】 PowerBI의 실시간 데이터 세트에 M5Stack에서 직접 데이터를 던져 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rnakamuramartiny/items/243fbc380be8c1fa3b5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)