社会の窓締め忘れ通知装置を作った話

このお話は、[IoT縛りの勉強会! IoTLT vol.25 @freee](https://iotlt.connpass.com/event/52080/)でLTした内容です。
ウケ狙いでLTしたため、技術的なことは喋りませんでした、ここに書いておきます。

# LTの内容（SlideShare）
スライドの説明で不十分な個所について、捕捉します。
[![thumbnail](http://image.slidesharecdn.com/random-170324141812/95/slide-1-1024.jpg)](https://www.slideshare.net/YoshiakiIto1/ver2-121421359)

# CC2650STK（センサタグ）
今回は、BLEセンサーとして使っていますが、センサ付きマイコンとしても使うことが可能です。
## BLEセンサーとして使う場合
### スマホアプリで使う
#### ネイティブアプリ
下記に純正アプリがあります

* [iPhone](https://itunes.apple.com/jp/app/ti-simplelink-starter/id1037784820)
* [Android](https://play.google.com/store/apps/details?id=com.ti.ble.simplelinkstarter)
* ソースコードは[ここ](http://www.ti.com/tool/SENSORTAG-SW)にあります



#### EvothingsStudio
* 今回利用しました。Cordovaの開発環境（JavaScript）です
* https://evothings.com/
* いわゆるPhoneGap（Cordova）の開発環境 
* PC上でJavaScript書くとiPhone/Androidで実行できる
* スマホとはワイヤレスで接続、USBケーブル不用
* センサータグ専用ではないが、センサータグのライブラリがあり、``簡単にBLEのプログラム書ける``
* スマホ上に実行環境アプリをインストールする必要あり
* 無料でも使える（プロジェクト数などの制限あり）
* CC2650のサンプルあり

##### yagitsawa さんの[ページ](http://yagitsawa.github.io/2015/11/08/evothings-sensortag/)が参考になります。

### Raspberry piで使う
* nodeで使えます（npm install sensortag）
* Pythonも使えるようですが、私はうまくいきませんでした。

## マイコンとして使う場合（DEVPACKの購入が必要\2000弱）
### Energia
* Arduino  IDEを基にしたIDE（C/C++）
* http://energia.nu/

### Code Composer Studio（CCS）
* Eclipse  を基にしたIDE（C/C++）
* http://www.tij.co.jp/tool/jp/ccstudio

### CCS Cloud
* ブラウザで動作するIDE（C/C++）
* https://dev.ti.com/


# プログラムの解説
![imagel](http://image.slidesharecdn.com/random-170324141812/95/slide-10-1024.jpg)

## サンプルをコピペ
Evothings のサンプル「TI SensorTag CC2650 & CC2541 Sensors」ほとんどそのまま利用しています。

## Evothingsで音を鳴らす
チャックが開いていることを検知すると、警告音を鳴らします、
Evothingsで音を鳴らすには、wav形式などの音声(音楽)を再生します、ファイルでなくても大丈夫で、今回のように短い音の場合メモリ上に置くことも可能です。
isseium さんの[ページ](https://qiita.com/isseium/items/12b215b6eab26acd2afe)を参考にしました

```js
function beep()
{
	var base64 = "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"
	var sound = new Audio("data:audio/wav;base64," + base64)
	sound.play()
}
```

## EvothingsでHTTP通信
警告音が鳴っても、チャックが開いている場合、[Twillio](https://twilio.kddi-web.com/)を利用して電話をかけます。Twillioへはhttpでpostしますが、Evothingsでは「cordovaHTTP.post()」を使用します。

```js
function twilio(sex) {
	var url = 'http://内緒.co.jp/call_boy'
	if (sex === 'girl') {
		url = 'http://内緒.co.jp/call_girl'
	}
	var item = ''
	console_log("twilio call item: " + item)
	cordovaHTTP.post(url,
		item,
		{  },
		function(response) {
			console_log(response.status)
			try {response.data = JSON.parse(response.data)
				console_log(response.data.message)
			} catch(e) {
				console_log("JSON parsing error")
			}
		},
		function(response) {
			console_log(response.status)
			console_log(response.error)
		}
	);
}
```

# CC2650とEvothings
￥4,000-で10種類のセンサが、簡単に利用できます。
ちょっとした試作や、ハッカソンでの実装などのとき便利ですので、使って位はいかがでしょうか？