チャンネル・フィードのサマリーを取得

小林

最後の更新3ヶ月前

  •  概要

Get Channel Feed Summaries API は、チャネル内のすべてのセンサーフィールドからフィードサマリーを読み取るために使用されます。このメソッドは JSON または CSV オブジェクトを返します。各フィードサマリーのレコードは、各フィールドの合計値、平均値、レコード数、標準偏差、最大値、最小値で構成されます。


チャネルの最新の読み取り値のみにアクセスする必要がある場合は、Get Channels APIを使用することを推奨します。これは、すべてのチャネルの最新の測定値を一度に返します。


  • API URL

JSONオブジェクトを返すには

https://webapi.ubibot.com/channels/CHANNEL_ID/summary.json?parameters


CSVファイルを返すには

https://webapi.ubibot.com/channels/CHANNEL_ID/summary.csv?parameters


 CHANNEL_IDはターゲット・チャンネルのID


  •  HTTPメソッド

GET


  • URLパラメータ
名称タイプ必須説明
api_key or account_key文字列プライベート・チャンネルに必須チャネルの API 書き込みキーまたは読み込みキー、あるいはウェブコンソールパネルから取得した account_key を指定します。
results整数値オプション検索するエントリ数。最大数は8,000件です。
start日付 オプション開始日のフォーマット YYYY-MM-DD%20HH:NN:SS
end日付 オプション終了日のフォーマット YYYY-MM-DD%20HH:NN:SS.
timezone文字列オプションこのリクエストのTime Zones Referenceの識別子
callback文字列オプションJSONPクロスドメインリクエストに使用される関数名
  • 応答
データ・リクエストに成功すると、HTTPコード200が返されます。ボディには JSON オブジェクトが含まれ、 要求された形式のフィードの要約が含まれます。レスポンスの JSON に is_truncated が含まれ、その値が true の場合は、取得できるエントリの数が上限に達したために結果が切り捨てられたことを意味します。開始値と終了値を変更することで、範囲を縮小することができます。


エラー: 詳細については、エラーコードのリストを参照してください。


GET https://webapi.ubibot.com/channels/123/summary?api_key=XXXXXXXXXXXXX

応答は、例えばJSONオブジェクトである:

{
"result": "success", "server_time": "2019-02-07T13:13:15Z", "is_truncated": false, "start": "2019-02-07T02:00:00+00:00", "end": "2019-02-07T11:00:00+00:00", "timezone": "Europe/London", "num_records": 10, "results": 10, "channel": { "channel_id": "1419", "name": "C-1419", "field1": "Temperature", "field2": "Humidity", "field3": "Light", "field4": "Voltage", "field5": "WIFI RSSI", "field6": "Vibration Index", "field7": "Knocks", "field8": "External Temperature Probe", "field9": "Reed Sensor", "field10": null, "latitude": "41.7922", "longitude": "123.4328", "elevation": null, "created_at": "2018-12-07T03:15:40Z", "public_flag": "false", "user_id": "8D5F3ACB-87A5-4D80-AA5F-FC64E8647990", "last_entry_date": "2019-02-07T13:10:26Z", "last_entry_id": "50982", "vconfig": "{\"field1\":{\"h\":\"0\",\"u\":\"1\"},\"field2\":{\"h\":\"0\",\"u\":\"3\"},\"field3\":{\"h\":\"0\",\"u\":\"4\"},\"field4\":{\"h\":\"0\",\"u\":\"5\"},\"field5\":{\"h\":\"0\",\"u\":\"6\"},\"field6\":{\"h\":\"0\",\"u\":\"7\"},\"field7\":{\"h\":\"0\",\"u\":\"8\"},\"field8\":{\"h\":\"0\",\"u\":\"1\"},\"field9\":{\"h\":\"0\",\"u\":\"9\"}}", "full_dump": "0", "plan_code": "ubibot_free", "username": "cloudleader" }, "feeds": [{ "created_at": "2019-02-07T11:00:00+00:00", "field3": { "sum": 0.24, "avg": 0.06, "count": 4, "sd": 0, "max": 0.06, "min": 0.06 }, "field1": { "sum": 94.515136, "avg": 23.628784, "count": 4, "sd": 0.018257971122225, "max": 23.646141, "min": 23.603416 }, "field2": { "sum": 40, "avg": 10, "count": 4, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -160, "avg": -40, "count": 4, "sd": 0, "max": -40, "min": -40 } }, { "created_at": "2019-02-07T10:00:00+00:00", "field3": { "sum": 0.69, "avg": 0.062727272727273, "count": 11, "sd": 0.0044536177141512, "max": 0.07, "min": 0.06 }, "field1": { "sum": 260.85257, "avg": 23.71387, "count": 11, "sd": 0.035359001690453, "max": 23.803696, "min": 23.675514 }, "field2": { "sum": 110, "avg": 10, "count": 11, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -487, "avg": -44.272727272727, "count": 11, "sd": 4.3294112362875, "max": -40, "min": -49 }, "field4": { "sum": 4.472982, "avg": 4.472982, "count": 1, "sd": 0, "max": 4.472982, "min": 4.472982 } }, { "created_at": "2019-02-07T09:00:00+00:00", "field3": { "sum": 22.48, "avg": 11.24, "count": 2, "sd": 1.74, "max": 12.98, "min": 9.5 }, "field1": { "sum": 48.264282, "avg": 24.132141, "count": 2, "sd": 0.021362, "max": 24.153503, "min": 24.110779 }, "field2": { "sum": 20, "avg": 10, "count": 2, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -80, "avg": -40, "count": 2, "sd": 0, "max": -40, "min": -40 } }, { "created_at": "2019-02-07T08:00:00+00:00", "field3": { "sum": 457.879989, "avg": 38.15666575, "count": 12, "sd": 12.868984722494, "max": 57.32, "min": 16.779999 }, "field1": { "sum": 294.736777, "avg": 24.561398083333, "count": 12, "sd": 0.27719641719199, "max": 25.056076, "min": 24.209579 }, "field2": { "sum": 113, "avg": 9.4166666666667, "count": 12, "sd": 0.49300664859163, "max": 10, "min": 9 }, "field5": { "sum": -512, "avg": -42.666666666667, "count": 12, "sd": 4.0892813821284, "max": -40, "min": -51 }, "field4": { "sum": 4.475632, "avg": 4.475632, "count": 1, "sd": 0, "max": 4.475632, "min": 4.475632 } }, { "created_at": "2019-02-07T07:00:00+00:00", "field3": { "sum": 200.879997, "avg": 100.4399985, "count": 2, "sd": 2.6000025, "max": 103.040001, "min": 97.839996 }, "field1": { "sum": 56.227211, "avg": 28.1136055, "count": 2, "sd": 0.2456705, "max": 28.359276, "min": 27.867935 }, "field2": { "sum": 16, "avg": 8, "count": 2, "sd": 0, "max": 8, "min": 8 }, "field5": { "sum": -90, "avg": -45, "count": 2, "sd": 4, "max": -41, "min": -49 } }, { "created_at": "2019-02-07T06:00:00+00:00", "field3": { "sum": 31344.398927, "avg": 2612.0332439167, "count": 12, "sd": 2824.6816531297, "max": 7016.959961, "min": 116.199997 }, "field1": { "sum": 378.384835, "avg": 31.532069583333, "count": 12, "sd": 2.9701401037999, "max": 35.892273, "min": 26.377892 }, "field2": { "sum": 87, "avg": 7.25, "count": 12, "sd": 1.0103629710818, "max": 9, "min": 6 }, "field5": { "sum": -491, "avg": -40.916666666667, "count": 12, "sd": 0.27638539919628, "max": -40, "min": -41 }, "field4": { "sum": 4.487029, "avg": 4.487029, "count": 1, "sd": 0, "max": 4.487029, "min": 4.487029 } }, { "created_at": "2019-02-07T05:00:00+00:00", "field3": { "sum": 197.159996, "avg": 98.579998, "count": 2, "sd": 1.579998, "max": 100.159996, "min": 97 }, "field1": { "sum": 46.082627, "avg": 23.0413135, "count": 2, "sd": 0.0146865, "max": 23.056, "min": 23.026627 }, "field2": { "sum": 20, "avg": 10, "count": 2, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -89, "avg": -44.5, "count": 2, "sd": 4.5, "max": -40, "min": -49 } }, { "created_at": "2019-02-07T04:00:00+00:00", "field3": { "sum": 1133.039978, "avg": 94.419998166667, "count": 12, "sd": 6.4416674668395, "max": 115.040001, "min": 89.68 }, "field1": { "sum": 277.075209, "avg": 23.08960075, "count": 12, "sd": 0.015318618498007, "max": 23.114746, "min": 23.069351 }, "field2": { "sum": 120, "avg": 10, "count": 12, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -535, "avg": -44.583333333333, "count": 12, "sd": 5.3456888133232, "max": -40, "min": -52 }, "field4": { "sum": 4.469537, "avg": 4.469537, "count": 1, "sd": 0, "max": 4.469537, "min": 4.469537 } }, { "created_at": "2019-02-07T03:00:00+00:00", "field3": { "sum": 153.099998, "avg": 76.549999, "count": 2, "sd": 0.549999, "max": 77.099998, "min": 76 }, "field1": { "sum": 46.242844, "avg": 23.121422, "count": 2, "sd": 0.0066760000000006, "max": 23.128098, "min": 23.114746 }, "field2": { "sum": 20, "avg": 10, "count": 2, "sd": 0, "max": 10, "min": 10 }, "field5": { "sum": -82, "avg": -41, "count": 2, "sd": 0, "max": -41, "min": -41 } }, { "created_at": "2019-02-07T02:00:00+00:00", "field3": { "sum": 1153.739984, "avg": 96.144998666667, "count": 12, "sd": 50.714404305812, "max": 256.320007, "min": 73.059998 }, "field1": { "sum": 278.933775, "avg": 23.24448125, "count": 12, "sd": 0.069417701157708, "max": 23.352409, "min": 23.141449 }, "field2": { "sum": 122, "avg": 10.166666666667, "count": 12, "sd": 0.37267799624997, "max": 11, "min": 10 }, "field5": { "sum": -536, "avg": -44.666666666667, "count": 12, "sd": 7.3861732687201, "max": -40, "min": -66 }, "field4": { "sum": 4.497895, "avg": 4.497895, "count": 1, "sd": 0, "max": 4.497895, "min": 4.497895 } }] }
  •  PHPクイックスタート
<?php
// +---------------------------------------------------------------------- // | UbiBot // +---------------------------------------------------------------------- // | Copyright (c) 2016-2019 https://www.ubibot.com All rights reserved. // +---------------------------------------------------------------------- // | Author: UbiBot <[email protected]> // +---------------------------------------------------------------------- //---------------------------------- // Get Channel Summaries (Get Channel Summaries) // To view a channel feed, send an HTTP GET replacing CHANNEL_ID with the ID of your channel // https://webapi.ubibot.com/docs/ //---------------------------------- header('Content-type:text/html;charset=utf-8'); //yours channel read key, can be obtained from web console panel $apikey = "xxxxxxxxx"; $channel_id = 'XXXXXX'; //channel ID of your device $url = 'https://webapi.ubibot.com/channels/'.$channel_id.'/summary'; $params = array( "api_key" => $apikey,// (string) is Read or Write key for this specific channel (no key required for public channels) "results" => 30,//(integer) Number of entries to retrieve, 8000 max (optional) // "start" => "",//(datetime) Start date in format YYYY-MM-DD%20HH:NN:SS (optional) // "end" => "",//(datetime) End date in format YYYY-MM-DD%20HH:NN:SS (optional) // "timezone" => "",//(string) Identifier from Time Zones Reference for this request (optional) // "callback" => "",//(string) Function name to be used for JSONP cross-domain requests (optional) ); $paramstring = http_build_query($params); $content = getcurl($url,$paramstring); $result = json_decode($content,true); if($result){ if($result['result']=='success'){ $result['channel']['vconfig'] = json_decode($result['channel']['vconfig'],true); //Filter channels that need to be displayed $filter_fields = array('field1','field2','field3','field4','field5','field6','field7','field8','field9','field10'); //Sensor unit $unit = array('temperature_celcius','temperature_feh','humidity','light_lux','voltage','WIFI_dbm','vibration','knocks','magnetic_switch','soil_absolute_moisture'); $list = array(); foreach ($filter_fields as $value) { $list[$value]['name'] = $result['channel'][$value]; if (isset($result['channel']['vconfig'][$value])) { $list[$value]['show'] = $result['channel']['vconfig'][$value]['h']?0:1; $list[$value]['unit'] = $unit[$result['channel']['vconfig'][$value]['u']]; } else { $list[$value]['show'] = 0; $list[$value]['unit'] = null; } } foreach ($result['feeds'] as $value) { foreach ($value as $k => $val) { $tmp = array(); if (in_array($k, $filter_fields)) { $val['created_at'] = $value['created_at']; $list[$k]['data'][] = $val; } } } }else{ echo $result['errorCode'].":".$result['desp']; } }else{ echo "failed"; } //************************************************** /** * @param string $url * @param string $params * @param int $ispost * @return string */ function getcurl($url,$params=false,$ispost=0){ $httpInfo = array(); $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 60); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); if( $ispost ) { curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , $params ); curl_setopt( $ch , CURLOPT_URL , $url ); } else { if($params){ curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params ); }else{ curl_setopt( $ch , CURLOPT_URL , $url); } } $response = curl_exec( $ch ); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE ); $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) ); curl_close( $ch ); return $response; } ?> <html> <head> <style type="text/css"> table { border-collapse: collapse; border: none; width: 100%; } td,th { border: solid #000 1px; text-align:center; } li{ display:inline} </style> </head> <body> <table> <tr> <th>KEY</th> <th>Sensor name</th> <th>Show</th> <th>Unit</th> <th>Summary Feeds</th> </tr> <?php foreach ($list as $key => $value) :?> <tr> <td><?php echo $key;?></td> <td><?php echo $value['name'];?></td> <td><?php echo $value['show']?'是':'否';?></td> <td><?php echo $value['unit'];?></td> <td style="text-align: left;"> <?php if (empty($value['data'])) :?> No data <?php else :?> <?php foreach ($value['data'] as $val):?> <ul> <li>avg:<?php echo $val['avg'];?></li> <li style="margin-left:20px;">sum:<?php echo $val['sum'];?></li> <li style="margin-left:20px;">count:<?php echo $val['count'];?></li> <li style="margin-left:20px;">sd:<?php echo $val['sd'];?></li> <li style="margin-left:20px;">min:<?php echo $val['min'];?></li> <li style="margin-left:20px;">max:<?php echo $val['max'];?></li> <li style="margin-left:20px;">created_at:<?php echo $val['created_at'];?></li> </ul> <?php endforeach;?> <?php endif;?> </td> </tr> <?php endforeach;?> </table> </body> </html>
  • Node JS
const http = require("http");
let channel_id = xxxx; let url = 'http://webapi.ubibot.io/channels/' + channel_id + '/summary'; let data = { api_key: "xxxxxxxxxxxxxxxxxx", results: 30 // ... }; let querystring = require('querystring'); let content = querystring.stringify(data); http.get(url + '?' + content, (resp) => { let data = ''; resp.on('data', (chunk) => { data += chunk; }); resp.on('end', () => { let json = JSON.parse(data); if (json.error_code == 'success') { console.log(json); } else { console.log(json["errorCode"] + ":" + json["desp"]); } }); }).on('error', (e) => { console.log('request api error'); });
  • Python
#!/usr/bin/env python3
# -*- coding: utf-8 -*- import json import requests from urllib.parse import urlencode api_key = "xxxxxxxxxxxxxxx" channel_id = xxxxx; url = "http://webapi.ubibot.io/channels/%s/summary" % (channel_id) params = { "api_key": api_key, "results": 30, # ...... } params = urlencode(params) r = requests.get("%s?%s" % (url, params)) res = r.json() if res: error_code = res["result"] if error_code == 'success': print(res) else: print("%s:%s" % (res["errorCode"], res["desp"])) else: print("request api error")

この記事は役に立ちましたか。

0 人中 0 人がこの記事を気に入っています

ヘルプが必要ですか?メッセージをお送りください