忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

FIWAREへM5stackのデータを送信を行う 

最近IoT開発をやっているのですが、サーバーサイドの開発はやっぱり大変です。PHPやらSQLやら
なかなかハマるポイントが多いです。

先日FIWAREというサーバーサイドのデータ連携基盤があるというのを知ったので使ってみることにしました。データベースなどを構築しなくてもいいのでメイカー的にはちょっと開発が楽かもしれないです。 

まず用意するものです。

・サーバー EC2 OSはubuntu 20.04
・m5stack 
・気圧、温湿度センサー ENV.ⅡSENSOR(M5stack用環境センサユニット) 


AWSでサーバーを立てるところは割愛します。
かなりポートを開かないといけません、22のほかに1026,8000,4041,7896って具合です。

まずはdockerとdocker-composeの準備をします。ここここを参考にしました。

githubでdockerの準備をします。
git clone https://github.com/lets-fiware/lets-fiware.tutorials
cd lets-fiware.tutorials/esp32/05.ul20-http/
ls -s docker-compose.yml
docker-compose up -d 



esp32で実績があるみたいなので、M5stackだったら大丈夫そうですね。

インストールが完了したら下記コマンドで確認します
curl -X GET   'http://<EC2のIP>:4041/iot/about'

{"libVersion":"2.7.0","port":"4041","baseRoot":"/","version":"1.7.0"} ←こんな具合でかえってきたらorion Context Broker というFIWAREのメインのサーバーとIoT Agentっていうデータを受け取るサーバーが機能している証拠です。

ちなみにorion Context Brokerは

curl -X GET   'http://<EC2のIP>:1026/version'  

で確認できます。


続いてコンテキストっていうデータの型?みたいなものを設定します。
curl -iX POST \
  'http://<EC2のIP>:4041/iot/services' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
 "services": [
   {
     "apikey":      "任意の英数字",
     "cbroker":     "http://<EC2のIP>:1026",
     "entity_type": "Thing",
     "resource":    "/iot/d"
   }
 ]
}'
続いてM5stackでpostしたいデータを設定していきます。


api keyは任意で設定しますがm5stackでも同じ値を使ってください。
curl -iX POST \
  'http://<EC2のIP>:4041/iot/devices' \
  -H 'Content-Type: application/json' \
  -H 'fiware-service: openiot' \
  -H 'fiware-servicepath: /' \
  -d '{
 "devices": [
   {
     "device_id":   "sensor001",
     "entity_name": "urn:ngsd-ld:Sensor:001",
     "entity_type": "Sensor",
     "timezone":    "Asia/Tokyo",
     "attributes": [
       { "object_id": "d", "name": "dateObserved", "type": "DateTime" },
       { "object_id": "t", "name": "temperature", "type": "Number" },
       { "object_id": "h", "name": "relativeHumidity", "type": "Number" },
       { "object_id": "p", "name": "atmosphericPressure", "type": "Number" }
     ],
     "static_attributes": [
       { "name":"location", "type": "geo:json", "value" : { "type": "Point", "coordinates" : [ 139.7671, 35.68117 ] } }
     ]
   }
 ]
}
'
座標も入ってますが、日付と温湿度、気圧しか使いません。IPアドレスをかならず立てたEC2のものへ変更してください。

ここからはm5stackのスケッチになります。arduinoIDEで作成しました。さきほど設定したapi keyとssid、passは変更してください。これで問題なければarduinoIDEシリアルモニタで下記のようにpostできます。  
POST http://<EC2のIP>:7896/iot/d?k=<api key>&i=sensor001
d|2022-01-29T21:40:40+0900|t|21.14|h|33.03|p|1004.39
httpCode: 200

あとはちゃんとPOSTできているかの確認は下記コマンドとなります。
curl -X GET   'http://<EC2のIP>:1026/v2/entities/urn:ngsd-ld:Sensor:001?type=Sensor' 
  -H 'fiware-service: openiot' 
  -H 'fiware-servicepath: /'
温湿度を吐き出すjsonが出てきたらOKです。 …ちょっと実感が薄いですが、FIWARE特有のコンテキスト処理が完了しています。 次回はこれをブラウザで見るwirecloudと連携させていきたいと思います。    →その2へ





拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30