2019年2月11日月曜日

ラズベリーパイ Cayenne(カイエン)1

一日放置し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+1
vi  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できることを
確認した




センサーの調達

アマゾンなどでもセンサーが購入できるけど、やはり高い
初めて https://best.aliexpress.com/ AliExpressで購入してみた

eBayに慣れているので非常に驚いた、WEBサイトとてもよくできている。

  • 販売者は10日以内に配送を行う
  • 60日以内に届かない、違うものが配送された場合 AliExpressが補償する
購入直後に10日のカントダウンが始まって
今日どうなっているか確認した
60日は非常に意識されているようで、カウントダウンが表示されてる(中国人が中国人向けに作っているのが理解できる作り、言い逃れはさせないぜって感じで、好感がもてます)

実際は届いてみてからだけど 
まずは 2月9日発注が いつ届くか楽しみ
Your order should arrive within 15-29 Days,  

  • BME280   1個 240円
  • INA226  1個 120円    
  • BH1750   1個   95円
    送料   合計 192円






注目の投稿

ラズベリーパイ Cayenne(カイエン)1

一日放置しGUIをいじった Liveはしたのようにグラフが見えるが m など 違う区切りにすると その下のように データが無いと表示される。 コミュニティーに聞いてみたら、デフォルトで取得される値は グラフ表示されないとのことでした。 まともに動いていないかと...