JJUG CCC 2019 Springの懇親会でもらったOracle Code Cardを使ってみる
やること
JJUG CCC 2019 Springの懇親会でもらったOracle Code Cardを使ってみる。
準備
とりあえず、この辺を読んで準備する。
Fn Serverを用意する
この解説によると、JSONをCode Cardに返すことができればよいみたい。 JSONを返すだけなら、適当なWebサーバーでもOKなのだが、JavaでFunctionを作ってみる。 Fn Serverは、Oracle CloudにLinux Instanceを作れって書いてあるが、Ubuntu Serverにインストールした。
Fn ServerにAppをデプロイする。
アプリはGithubにコミットした。 github.com
git clone https://github.com/rixwwd/mycodecard.git cd mycodecard fn deploy --create-app --local --all
こうすると結果が返ってくるのがわかる。
$ curl http://localhost:8080/t/mycodecard/mycodecard {"template":"template1","title":"My Code Card","subtitle":"Duke","bodytext":"Hello world","icon":"duke","backgroundColor":"white"}
Code Cardの設定
USBでPCに接続してscreenで接続する。
sudo screen /dev/ttyUSB0 115200
横の電源スイッチをONにして、2つのボタンを同時に押すと設定ができるようになる。
Code CardにWifiの設定
Code Cardのの設定モード?になったら以下を入力する。
ssid=myssid password=wifipassword
Code Cardのボタンを押した時に呼ばれるURLの設定
Wifiの設定に続いて、以下を入力する。この場合は、ボタンAを短く押した時のURL。(1:短く押した時、2:長く押した時)
buttona1=http://192.168.1.14:8080/t/mycodecard/mycodecard
設定できたら、ボタンを押した時の動作確認を行う。設定モード?のままで以下を入力するとボタンAを短く押した時の動作をシミュレートできる。 設定モードではボタンを押しても効かず、設定モードを抜けるのは面倒なので、これで確認する。
shortpressa
エラーの対処
これで動くと見せかけでエラーになる。
Unexpected response: HTTP/1.0 200 OK
調べてみると、HTTP/1.0のレスポンスが返ってきたときはエラーになる。 Githubのこのコミットではエラーが出ないように変更されているが、使っているCode Cardはちょっと古いやつなのかもしれない。
そこで、Nginxをリバースプロキシとして、HTTP/1.0でレスポンスを返されないようにした。 ちなみに、Code CardからのHTTPリクエストをtcpdumpで確認するとHTTP/1.0で送っている。自分で送ったバージョンを受け取れないなんて残念。
nginxの設定は、
Nginx reverse proxy settings for fn server.
nginxはDockerでサクッと準備した。
docker run --rm -v $HOME/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 nginx
再度Code Cardの設定をする。今度はnginxの経由のURLに変更した。
buttona1=http://192.168.1.14/t/mycodecard/mycodecard
これでとりあえず動いた。 結果を表示するだけだけど、電源の供給がなくても表示したまま。