一日放置しGUIをいじった
Liveはしたのようにグラフが見えるが m など 違う区切りにすると
その下のように データが無いと表示される。
コミュニティーに聞いてみたら、デフォルトで取得される値は
グラフ表示されないとのことでした。
まともに動いていないかと心配して調べるのを躊躇していたがもう少し調べてみることにした、まずは デフォルトではない 数値のグラフ化を調べる
Docsを読む
Cayenne は クライアントとサーバが MQTT(Message Queuing Telemetry Transport)を使って通信する、 これはMTM IoTデバイスなどのフットプリントが小さなプロトコルで非常に軽く限られた不安定なネットワークでも通信が可能
Cayenne Cloud は沢山のデバイスとのブローカーとして機能する
MQTT初めて聞いた
クライアントにMQTT Clients をインストールしてこれから Cayenne Cloud に転送するのだけど、pythonにした、書いたことないし、 C/C++ 嫌いだし
Paho: The Eclipse Paho project provides open-source MQTT clients for C/C++, Python, Java, Javascript, Go and C#. If you are using one of Cayenne’s libraries, the Paho client is bundled in the library to make using MQTT with Cayenne easy.
Add New >Device/Wiget追加 選択
3つがあとで必要になる
MQTT_USERNAME = "MQTT_USERNAME"
MQTT_PASSWORD = "MQTT_PASSWORD"
MQTT_CLIENT_ID = "MQTT_CLIENT_ID"
クリックすると 下記が表示される
https://github.com/myDevicesIoT/Cayenne-MQTT-Python
インストールはこれだけでOK
pip install cayenne-mqtt読み進めていくとサンプルが、
import cayenne.client import time # Cayenne authentication info. This should be obtained from the Cayenne Dashboard. MQTT_USERNAME = "MQTT_USERNAME" MQTT_PASSWORD = "MQTT_PASSWORD" MQTT_CLIENT_ID = "MQTT_CLIENT_ID" # The callback for when a message is received from Cayenne. def on_message(message): print("message received: " + str(message)) # If there is an error processing the message return an error string, otherwise return nothing. client = cayenne.client.CayenneMQTTClient() client.on_message = on_message client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID) # For a secure connection use port 8883 when calling client.begin: # client.begin(MQTT_USERNAME, MQTT_PASSWORD, MQTT_CLIENT_ID, port=8883) i=0 timestamp = 0 while True: client.loop() if (time.time() > timestamp + 10): client.celsiusWrite(1, i) client.luxWrite(2, i*10) client.hectoPascalWrite(3, i+800) timestamp = time.time() i = i+1vi Cayenee_sample.py
chmod 755 Cayenee_sample.py
authentication 書き換え
python Cayenee_sample.py > log.text &
グラフができました。
データを送付するのはこの部分であると推測 で
client.celsiusWrite(1, i) # 1がDB iがデータ たぶん
client.celsiusWrite(1, i)
client.luxWrite(2, i*10)
client.hectoPascalWrite(3, i+800)
ここを書き換える
client.celsiusWrite(1, commands.getoutput("vcgencmd measure_temp | sed -e 's/temp=//g' -e 's/C//g' | rev | cut -c 2- | rev") )
client.luxWrite(2, commands.getoutput("vcgencmd measure_clock arm | sed -e 's/frequency(45)=//g' ") )
client.luxWrite(3, commands.getoutput("vcgencmd measure_volts| sed -e ' s/volt=//g' -e 's/V//g' "))
client.luxWrite(4, commands.getoutput("vcgencmd get_mem arm | sed -e 's/arm=//g' -e 's/M//g' "))
client.luxWrite(5, commands.getoutput("vcgencmd get_mem arm | sed -e 's/gpu=//g' -e 's/M//g' "))
client.luxWrite(6, commands.getoutput("grep wlan0 /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((x2 / 1024 / 1024)); done "))
client.luxWrite(7, commands.getoutput("grep wlan0 /proc/net/dev | while read x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11; do echo $((x2 / 1024 / 1024)); done "))
shell 呼び出ししているので 下記も必要
import commands
アイコンはめちゃくちゃだけど とりあえずデータは上がっている
よって ラズベリーパイで取得できるデータを Cayenne に uploadできることを
確認した