ラベル cosm の投稿を表示しています。 すべての投稿を表示
ラベル cosm の投稿を表示しています。 すべての投稿を表示

2013年4月12日金曜日

KL25ZとWIZ820ioでcosmへ送信する


WIZ820ioのインターフェースをEthetnetInterfaceのsocket互換に作り直して、cosmへのデータを送信しています。
cosmのベータ版ではあるが、httpプロトコルではなくてtcpプロトコルにJSON形式を載せています。
更に、DNSやDHCPを使わずにIPアドレス固定で接続することも可能です。

下のグラフは一週間の大気圧センサの値です。
あまり精度はよくないが先週末からの低気圧が通過したのがわかります。


参考:
Socket Server
https://cosm.com/docs/beta/socket_server/
IP Addresses
https://cosm.com/docs/v2/ip_addresses.html


#include "mbed.h"
#include "WIZ820ioInterface.h"
#include "MPL115A1.h"

SPI spi(PTD2,PTD3,PTD1); // SPI_0
MPL115A1 bar(spi, PTA13); // spi, cs
WIZ820ioInterface eth(&spi,PTD0,PTD5); // spi, cs, reset

#define qq(...)  #__VA_ARGS__
const char* format = qq(
{
  "method" : "put",
  "resource" : "/feeds/12345678",
  "headers" : {"X-ApiKey":"APIKEYAPIKEYAPIKEYAPIKEYAPIKEYAPIKEYAPIKEYAPIKEY"},
  "body" : {
    "datastreams" : [
      {"id":"6", "current_value":"%.2f"},
      {"id":"7", "current_value":"%.2f"}  
    ]
  }
}
);

void cosm()
{
    char buf[512];
    snprintf(buf, sizeof(buf), format, bar.readPressure() * 10, bar.readTemperature());
    TCPSocketConnection sock;
    sock.set_blocking(false);
    int ret = sock.connect("173.203.98.29", 8081); // cosm tcp server
    if (ret < 0) {
        return;
    }
    sock.send(buf, strlen(buf));
}

int main()
{
    eth.init();
    eth.connect();
    while(1) {
        cosm();
        wait_ms(30*1000);
    }   
}

(2013/4/12)
---

2013年1月23日水曜日

cosmのトリガーでメールを送る


cosmのトリガーHTTP POSTでGAEを叩いてメールを送っていたが、
メールの送り先をGAEの管理者に変更してみた。
管理者メールはGmailで登録しているので、フィルターで携帯電話に転送している。

センサーmbed → cosm → GAE → gmail → 携帯電話

15分間データの更新が無いとfrozenのトリガーがあるのでmbedが無反応になったのもわかります。


# cosmtrigger.py 2013/1/23
#coding: utf-8
import webapp2
from google.appengine.api import app_identity
from google.appengine.api import mail

class TriggerHandler(webapp2.RequestHandler):
    def post(self, param):
        json_str = self.request.get('body')
        mail.send_mail_to_admins(
              sender = "cosmtrigger@" + app_identity.get_application_id() + ".appspotmail.com",
              subject = "cosm trigger %s" % param, body = json_str)

app = webapp2.WSGIApplication([
    (r'/cosmtrigger/(.*)', TriggerHandler),
    ], debug=True)


(2013/1/23)
---

2013年1月20日日曜日

mbedでBluetoothのRSSI受信信号強度の取得



HCI_Write_Inquiry_Mode で Inquiry Result format with RSSI を設定すると、
Inquiry Result Event から Inquiry Result with RSSI Event に変わってRSSI付きの検索結果が
返って来るようになります。

更に、HCI_Periodic_Inquiry_Mode にしておけば Inquiry Command を都度送らなくても、
繰り返して Inquiry Result Event や Inquiry Result with RSSI Event が返って来るようになります。

上のグラフは自分の携帯電話のBluetoothのRSSIを一日間cosmに記録した例です。
mbedオレンジボードに繋いだBluetoothのUSBドングルで検出してcosmにデータを送っています。
cosmにはトリガーがあるので、例えば不検出になったらHTTP POSTすればみまもりに使えそうです。

mbedで実行していたプログラムは次のとおりです。

mimamoriBluetooth_example

(2013/1/20)
---

2012年12月25日火曜日

EthernetInterface版HTTPClient

pachube時代のApiKeyは認証が通るが、cosmで作った新ApiKeyはちょっと長くて、
request parameter形式(http://api.cosm.com/v2/feeds?key=YOUR_KEY_HERE)では、
URLパースのpath領域が足らないみたいで認証できない。
forkしたHTTPClient-longを使う。
HTTPClient-long

(2012/12/25)
---

2012年9月30日日曜日

台風17号の記録

消防署が設置しているNEIの気象観測システムからデータをGAEのcronで取得してcosmで表示。
GAEで動かしていたプログラムはこれ(kisyo.py)です。








(2012/9/30)
---