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>

きょうはここまで

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

eVY1をAndroidのUSB HOSTに接続

日本Androidの会 横浜支部で動いてるの見せてもらったのでマネしてみました。


eVY1をAndroidに接続するとこんな感じ

Device Info 
Device Path: /dev/bus/usb/002/002
Device Class: Use class information in the Interface Descriptors (0x0)
Vendor ID:  2938
Vendor Name:  
Product ID:  07d2
Product Name:  

Interfaces 
Interface #0 
Class: Audio Device (0x1)
	Endpoints: none
Interface #1 
Class: Audio Device (0x1)
	Endpoint: #0
Address        : 2 (000000010)
Number         : 2
Direction      : Outbound (0x0)
Type           : Bulk (0x2)
Poll Interval  : 0
Max Packet Size: 64
Attributes     : 000000010
	Endpoint: #1
Address        : 129 (10000001)
Number         : 1
Direction      : Inbound (0x80)
Type           : Bulk (0x2)
Poll Interval  : 0
Max Packet Size: 64
Attributes     : 000000010


USB MIDIの規格書はここにあった
Universal Serial Bus Device Class Definition for MIDI Devices
http://www.usb.org/developers/devclass_docs/midi10.pdf


USB HOSTの部分は作ろうと思ったのですがドライバーがあったので使わせてもらいました。
kshoji/USB-MIDI-Driver
https://github.com/kshoji/usb-midi-driver


Galaxy Nexus(4.2.2)にUSB HOSTケーブルでeVY1を接続
アプリで認識されて音がでることは確認しました


sendMidiSystemExclusiveで歌詞を送ればよいみたい

このコードだと固定で「わ」って歌います

 byte systemExclusive[] = {(byte)0xf0, (byte)0x43, (byte)0x79, (byte)0x09,
 (byte)0x00, (byte)0x50, (byte)0x10, 'w', ' ', 'a', (byte)0x00, (byte)0xf7};
 midiOutputDevice.sendMidiSystemExclusive(0, systemExclusive);
 midiOutputDevice.sendMidiNoteOn(0, 0, note, 127);


アプリを作りました

ローマ字入力で歌詞をいれてボタンを押してくと歌う
追加モードも付けた

LPC812に秋月I2C液晶をつなげる

小さいもの好きとしてはNXPのLPC800シリーズは気になります
CPUはCortex-M0+でDIP 8pinもあるのです。


評価ボードでいろいろと試しているとこです
今回は、LPC812に秋月I2C液晶をつなげてみました。


I2C接続小型LCDモジュール 8x2行: ディスプレイ関連 秋月電子通商 電子部品 <http://akizukidenshi.com/catalog/g/gP-06669/>


LPCOpenのサンプル見ながらI2CのROM APIで送信するようにしてみた。
ただ、秋月のデータシートだと間違いがあるのかコントロールビットの取り扱いが違うようだ
このサイトも参考にしました
 null: 秋月 小型I2C液晶 AQM0802A-RN-GBW  駆動方法
  <http://kingyonull.blogspot.jp/2013/06/i2caqm0802a-rn-gbw.html>

表示できたところ

(なんか2行目が欠けてます...残念)


あと、いまいち開発環境がわかっていない
CMSIS_COREとLPCOpenは別物なのか??

AndroidでPlaygroundのサンプルを動かしてみた

Playgroundはマルチプラットフォームゲームエンジンで、「ラブライブ!スクールアイドルフェスティバル」などで使用されている。
ソースコードが公開されたのでとりあえずサンプルを動かしてみた


KLabが開発したゲームエンジン「Playground」のソースコードを公開 | ニュースリリース | KLab株式会社<http://www.klab.com/jp/press/130926.html>

Windowsで開発してAndroidで動かしたいので、このファイルの通りにやってみる

PlaygroundOSS/Doc/Android_Build.md <https://github.com/KLab/PlaygroundOSS/>


簡単に説明するとこんな感じ(??)

  1. VirtualBoxUbuntuAndroid NDKの環境を作ってnative libraryを作ります
  2. サンプルのluaや画像などをzipでまとめます
  3. GameEngineのWorkspaceをimport
  4. あとは普通のAndroidアプリと同じで実機に転送


でも動かない、GCMを使おうとして例外発生しているようなのでとりあえずコメントアウト

音が出てタッチ操作できるサンプルとして16.Soundを実行してみました


サンプルを見た感じ

luaでイベントを受信して描画、音声再生など複雑な記述しなくてもできそう
アプリが非アクティブになると音と止めてくれたりはする

あとコマンドプロンプトでndk-buildするとこんなの出るのは正常なんだろうか

Android NDK: WARNING:jni/Android.mk:Game: non-system libraries in linker flags:-lcurl -lfreetype2
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module

XBeeを設定してみる

少し前に買ってたXBeeのUSB接続基板(AE-XBEE-USB)を組み立てて、2台が通信できるように設定してみる

XBee USBインターフェースボードキット: 秋月電子通商



X-CTUを使ってファームバージョンを最新にして COORDINATORとROUTERに設定


Terminalで確認したら相互に通信ができてるみたい