GAE+独自ドメインにSSLを設定

GAE+独自ドメインSSLを設定するのにGoogle Appsが必要だったが
最近は違うようなので試してみました。

qiita.com


CSRを作るときにコマンドが必要だけど
サーバーに証明書を転送したり、設定ファイルを変更したりは必要なくて楽でした。


SSLを強制するのもapp.yamlを変更するだけでした。

- url: /.*
  script: _go_app
  secure: always

フレッツでIPv6使えるようになってた

住んでるマンションは「Bフレッツ マンションタイプ」だと思っていたら
いつの間にか「フレッツ 光ネクスト」になっていたらしい


「フレッツ 光ネクスト」が始まったころに切り替えるの大変ですみたいにNTTの人言ってたのに...


Bフレッツ ハイパーファミリータイプ」、および「Bフレッツ マンションタイプ」の「フレッツ 光ネクスト」へのサービス移行について|フレッツ公式|NTT東日本
https://flets.com/news_release/service-migration.html


ということで「IPv6アドレスを用いたインターネット接続」が使えるみたいです。


公式サイト見てもよくわからないです
サービス概要 | OCN 「フレッツ光」対応 IPv6インターネット接続
http://service.ocn.ne.jp/ipv6/access/


接続機器とか買わなくてもYAMAHAルーターIPv6 PPPoEに対応しているので、
Web設定からIPv6 PPPoEを選んでIPv6用の接続情報を入れると、ルーティングしてくれます。
ただIPv4DNS使うとAAAAレコードがフィルタされるようなので、
ルーターDNSの問い合わせ先をIPv6優先にしておくと対応サイトはIPv6で接続してくれます。


ブラウザにインジケーター入れておくとIPv6対応サイトが分かって面白いです。
googleはだいたいIPv6でつながるのかな

BLEモジュールBL600を試してみた

今回使用したボードはこれです
FRISKケースに入るBL600基板 REBL600FR - ランニングエレクトロニクス
http://www.runele.com/ca1/24/p-r-s/


UART-USB変換ケーブルを使いました
UARTのピンをつけてもFRISKケースに入る


UwTerminalを使えばsmartBASICをコンパイルして転送とかできます
あとATコマンドを使って大体のことはできるみたい


ファームウェアバージョンを表示するときは、こんな感じ

ATI 3
10 3 1.2.54.0
00

内部のファイルシステムのファイル一覧を出すとき

ATI+DIR

06 test1
00

・新しめのファームウェアがLaird TechnologyのサイトにあってUARTで更新できそうだけど
 1.5以上のファームウェアからしか更新できないのかな
 (もとから書いてあるファーム1.2.54.0からやってみたがファイルシステムが変なことになる^^;)
・UwTerminalは最新ファームウェアのサンプルフォルダにあるものが最新らしい
サンプルソースがライブラリを呼んで終わり、みたいなのが多くて
 変更しようとしたときどこから手を付けてよいのかわからない


BLEおいといて、とりあえずI2Cで遊んでみる

Intel Galileoで集めたセンサーデータをFluentd + GrowthForecastでグラフ化する

Android Bazaar and Conference 2014 Spring http://www.android-group.jp/conference/abc2014s/に参加してきました
Androidに関係のないGalileoを使った物を展示してました(^^;)


まずセンサーデータはXBeeのメッシュネットワークを使用してGalileoに送ります。
・温度センサー(LM60BIZ)は、XBeeのA/D変換を使って周期的に計測
・温度,湿度センサー(AM2321)、気圧センサー(LPS331)は、LPC812にI2Cで接続して周期的に計測
 LPC812のところをLPC810で出来ると良いなぁ



GalileoではXBeeからのデータをまとめて、JSONにしてサーバー(ConoHa VPS)に送る。
データの処理にはFluentdを使います。
1. GalileoからFluentdのhttp Input PluginにPOSTします。
2. FluentdのOutput PluginでGrowthForecastとMongoDBに送ります。


Fluentd: Open Source Log Management http://fluentd.org/
GrowthForecast - Lightning fast Graphing / Visualization http://kazeburo.github.io/GrowthForecast/


あとはGrowthForecastがいい感じにグラフにしてくれます。


Intel GalileoでEthernet Libraryを使うとエラーがでる

Ethernet Libraryを使ってHTTPでサーバに接続するプログラムを作ったのだけど
EthernetClientのstop関数を呼ぶとログに** B0100000063f694が出て動作が停止する


ググルとこんなのあるけど同じことしても解消しなかった
Ethernet Library: sketch crashes when remote cl... | Intel Communities


このファイルの\arduino-1.5.3\hardware\arduino\x86\libraries\Ethernet\EthernetClient.cpp
stop関数のソース見てたら_inactive_counterにアクセスしているあたりで
エラーが出ている。

void EthernetClient::stop()
{
	if (_sock < 0)
		return;

	connect_true = false;
	if (_inactive_counter != NULL)
		*_inactive_counter = 0;
	if(_sock != -1){
		close(_sock);
		_sock = -1;

		// Sketches do a Ethernet client = server.available() - which means a copy constructor is used
		// Hence any server which populated a pclients[idx] - won't actually see the socket closed - since
		// his client was copied - not given a pointer to.... pcleint[] in EthernetServer.cpp _sock != -1 at this point
		// make it so !
		if(_pCloseServer != NULL){
		    	_pCloseServer->closeNotify(this->id);
		}
	}
}

よく見ると_inactive_counterが初期されてないように見えるので、
とりあえずコンストラクタでNULLにしてみたらエラーが出なくなった


EthernetServer.cpp

		for(int sock = 0; sock < MAX_SOCK_NUM && success == 0; sock++){
			if (pclients[sock]._sock == -1){
				pclients[sock]._sock = ret;
				pclients[sock]._pCloseServer = this;
				pclients[sock].connect_true = true;
				pclients[sock]._inactive_counter = &_pcli_inactivity_counter[sock];
				success = 1;
			}
		}

EthernetServerから使われるときはポインタに値が入るみたいだ
これでいいのかな...

BitbucketのprivateリポジトリをwerckerでさくらのVPSにデプロイ

サイトをいままでWinSCPでぽちぽち更新していたのですが、やっぱりgitにpushしたら更新されると良いですよね
なんか今風のWebサービスがあったのでhttp://wercker.com/を設定してみた

  • 今のところは無料みたい
  • Boxって環境を切り替えて、ビルドやテストもできるみたい
  • Androidアプリもビルドできる??
  • 設定を共有できる??
  • dockerがつかえる??


画面


今回の流れ
git push -> Bitbucket - git -> wercker - capistrano -> さくらのVPS(反映と再起動)


werckerの設定

boxはruby
buildでテストとか実行するらしいが今回は無しで
SSHの接続のためのkeyを作っています

box: wercker/ruby
services:
  - wercker/mysql
build:
  steps:
    - bundle-install
    - bundle-package
deploy:
  steps:
    - script:
        name: make .ssh directory
        code: mkdir -p "$HOME/.ssh"
    - create-file:
        name: write ssh key
        filename: $HOME/.ssh/id_rsa
        overwrite: true
        hide-from-log: true
        content: $WERCKER_CAP_PRIVATE_KEY_PRIVATE
    - script:
        name: set permissions for ssh key
        code: chmod 0400 $HOME/.ssh/id_rsa
    - bundle-install
    - cap

Key managementが変わったようでwebからkeyを作ることができるようになって、private keyが見れない感じに

Capistrano

Capistranoを一度も使ってなくて調べながらなんとかSSHで接続してファイルが反映されるところまではできた。
Capistrano2と3が違いすぎて辛い
rubyのサーバを再起動したいのだけど調べ中

Intel Galileoを買ったので使ってみる

Intel Galileoは、Intelが発売したArduino互換なx86 CPUのボードかな

Arduino - IntelGalileo

こんな使い方したい

ネットワークが標準でついてるので複数XBeeからのデータをサーバに送信するような使い方を考えた。
(RaspberryPiでやろうとしてたけど、浮気)

開発環境

Arduino IDEでプログラムできる。
ネットにあるArduinoのライブラリとか使えるはずなので試してみた

xbee-arduino

XBee複数つないで通信したいのでAPIモード用のこのライブラリを使う。
UART1を使いたいのでこのようにしてそのまま使えた。

XBee xbee = XBee();
...
  Serial.begin(9600);
  Serial1.begin(9600);
  xbee.begin(Serial1);
...

XBeeの設定をして、End PointのADCとポート状態を定期的に受信できた


xbee-arduino - Arduino library for communicating with XBees in API mode
<http://code.google.com/p/xbee-arduino/>

Ethernet

特に修正することなく
WebClientのサンプルは動いた。

EthernetClient client;
Ethernet.begin(mac)
...

これを使ってサーバにPOSTすればよいのかな
amcewen/HttpClient
<https://github.com/amcewen/HttpClient>

きょうはここまで

部屋の温度とか外の温度とか見たいので
センサつないだり、サーバ用意したりしないとですね