littleBits(cloudBits)のAPIをPythonから叩く

cloudBitsを使いました.

最初はIFTTTからいろんなトリガからcloudBitsを動作させましたが,ダメダメでした.理由は,色々なサービスを使えるのですがトリガの挙動が限られていたり,更にcloudBitsにその挙動をするまでとても時間がかかるのが問題でした.littleBitsはcloudAPIを提供しているのでIFTTTではなく直接そちらを叩くこともできます.

http://developers.littlebitscloud.cc/#output-voltage-on-device

詳細がは上のリンクにあるので分かる人はこれでどうぞ.

説明を読めば コマンドラインからcurlAPIを利用する方法はわかります.

ここからこいつをpythonで叩く方法を書いていきます.まずhttp通信でpostするためにrequestsモジュールとjsonモジュールをインポートします.

import requests
import json

インストールしていなければ$pip install requests jsonで準備しておきましょう.

DEVICE_ID = "xxxxxxxx"
CLOUDBITS_ACCESS_TOKEN = "xxxxxxxx"

DEVICE_IDとCLOUDBITS_ACCESS_TOKENはそれぞれlittleBits Cloud Controlのコンソールからsetting>Device IDとAccessTokenからコピペして置き換えてください.

次にアクセスするURLとヘッダーを用意します.

url = "https://api-http.littlebitscloud.cc/v2/devices/" + DEVICE_ID + "/output"
headers = {"Authorization": "Bearer "+CLOUDBITS_ACCESS_TOKEN, "Content-type": "application/json"}
payload = { "percent": 100, "duration_ms": 3000 }

payloadに入れるpercentはcloudBitsからのアナログ出力値,duration_msは何秒間オンにするか[ms]で指定できます.

そしたら

r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r)

rにpostが実行され返答されたコードが入っているので,printで出力してデバッグしてあげます.

<Response [200]>

が帰ってきていれば成功です.

404などのときはcloudBitsがネットに接続されていなかったり,Device IDやAccessTokenなどが間違っている可能性があります.

 

最後ににpythontwitterアカウントのツイートへのイイネを検出してcloudbBitsの出力をONにするサンプルを置いておきます.access tokenなどは各自apps.twitter.comでつくってください.

(※twitter userstreams apiは2018年夏に廃止されます.これがそのまま動くとはおもわないでください.幾つか追加で入れてるモジュールについても同様です.)

gistc477f67f92ca5c8ed950bce7372c8203

mac OS SierraでLenovoのTrackpoint Keyboard使いたかった

mac OS Sierra以上ではKarabinerは使えなくなってKarabiner-Elementsになってる.それより前のprivate.xmlみたいな設定はjsonで記述するタイプに変わっています.

Karabiner-Elementsをインストールしたら,

~/.config/karabiner/assets/complex_modifications

  にjsonを置いてあげます.

Trackpoint Keyboardで中クリック押しながらポッチを動かしてスクロールすると中クリックが動作して知らない間にいっぱいタブが開かれててうざかったので中クリック単体を無効化しました.でcommand+middle-clickで中クリックが動作するようにしてあげました.↓のそのままcomplex_modificationsに置いてGUIから add rulesしてあげればいい感じになります.

 

setting for karabiner-elements to use trackpoint k ...

ARCoreとARKitを試してみよう.

今月はGoogle ARCoreとApple ARKitをすこし試してみました.とりあえず,それぞれのSDKをUnity環境で使って,サンプルを改造して自分が作ったモデルとかをタップした位置に表示する簡単な内容のアプリを作ってみます.

はじめに

この記事はAndroidアプリとかCとかプログラムは何となく分かるけど,Unityって詳しくないしよくわかんないけどとりあえずARナントカアプリを試してみたいという感じでやったもののレポートなので同じ位の知識の人向けです.テキトーに書いてるので動かなくても知りません.

 

参考までに私の環境:

PC:MacBook Pro 13'

Unity

  • ver2017.2.0b9 Personal

Androidバイス(ARCore用):GalaxyS8

  • OSバージョン忘れました

iOSバイス(ARKit用):iPad Pro 9.7' 2016

  • iOS11.0

 

ARアプリは実機がないとデバッグできないので,買いましょう.買うか迷って時間と思考を無駄にするくらいならカネをふんだんに使ってカネにならないことをしましょう.

 

ARCore

ARCoreで遊ぶのに必要なものをダウンロードしてきます.面倒なのでAndroidStudio(AndroidSDK)は導入済みのものとして説明します.

ARCore Downloads  |  ARCore  |  Google Developers

↑ここからarcore-preview.apkとarcore-unity-sdk-preview.unitypackageをダウンロードしてきます.apkはadb installコマンドで実機に入れてあげます.

とりあえずUnityで新規プロジェクトを作成します.

f:id:k3174r0:20170929211827p:plain

Assets>Import Package>Custom Package…からダウンロードしたarcore-unity-sdk-preview.unitypackageをインポートします.

f:id:k3174r0:20170929204826p:plain

Allを選択してからImport.

f:id:k3174r0:20170929213018p:plain

 ImportできたらScenseからHelloARを開いてみます.

f:id:k3174r0:20170929214841p:plain

Build Settings…を開きます.

f:id:k3174r0:20170929221053p:plain

Build Settingsで,PlatformからAndroidを選択したらSwitch Platformします.Add Open Scenesを押してHelloARのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.

f:id:k3174r0:20170929222230p:plain

PlayerSettingsから以下のように設定を変更します.

Other Settings > Multithreaded Rendering: Off
Other Settings > Package Name: 好きな名称に変更(com.Company.ProductName以外)
Other Settings > Minimum API Level: Android 7.0 'Nougat' (API Level 24)
Other Settings > Target API Level: Android 7.0 'Nougat' (API Level 24)
XR Settings > Tango Supported: On

 

これでサンプルはビルドできます.UnityでAndroidアプリをビルドしたことがある人はスッとできるかと思います.エラーが出る時はPreference>External ToolsでAndroidSDKのパスの位置などを確認してみてください.それでもなら検索してみましょう.

f:id:k3174r0:20170929225817p:plain

Build and Runで実機にアプリがインストールされるので遊んでみましょう.

 

タップした場所にAndroidロゴのキャラクタが表示されたかと思いますが,表示されるモデルを変えてみます.Prefabsフォルダに新しくPrefabをつくってあげます.

f:id:k3174r0:20170929233452p:plain

自分の表示したいモデルもドラッグアンドドロップで入れてあげます.他のCADでつくった.fbxファイルを使ってみました.

f:id:k3174r0:20170930003921p:plain

f:id:k3174r0:20170930004028p:plain

ヒエラルキータブのExampleControllerをクリックするとインスペクタータブに色々情報が表示されます.ExampleControllerにアタッチされているスクリプトHelloARControllerには,ARアプリ上の画面で検出された平面をタップした時にその位置にプレハブをインスタンスして配置するといった内容が記述されています.

f:id:k3174r0:20170930005109p:plain

ExampleControllerの詳細にあるHelloARControllerの設定にAndy Android Prefabの項目があります.

f:id:k3174r0:20170930010055p:plain

右側の丸いマーク⦿をクリックして,先程作成した表示したいモデルのPrefabを選択してダブルクリック.Andy Android Prefabの項目が選択したPrefabに変わります.

f:id:k3174r0:20170930011338p:plain

さあこれで,Bild and Runしてみます.タップした場所に表示されるヤツが変更されていると思います.後はスケールとかをいい感じに調整してみてあげてください.

 

参考までに,私が試したものを.↓

 

ARKit

ARkitを試すにはXcode9が必要です.古い情報ではbeta版をインストール必要と書かれていることがありますが,現在はMacApp Storeからダウンロードできる最新のxcodeがもうARKit対応しています.アップデートしておきましょう.

Unity-Technologies / Unity-ARKit-Plugin / Downloads — Bitbucket

↑ここからリポジトリをダウンロードするをクリックしてARKit

のUnity用SDKをダウロードしてきます.

まずはプロジェクト作りましょう

f:id:k3174r0:20170930044122p:plain

Assetsフォルダにダウンロードしてきて解凍したUnity-Technologies-unity-arkit-plugin-ホニャララをドラッグアンドドロップしてあげます.

f:id:k3174r0:20170930044352p:plain

UnityARKitSceneを開きます.

f:id:k3174r0:20170930044753p:plain

Build Settingsで,PlatformからiOSを選択したらSwitch Platformします.Add Open Scenesを押してUnityARKitSceneのシーンが追加されます.Player Setting…を押してインスペクタータグにPlayerSettingsを表示させます.

f:id:k3174r0:20170930045505p:plain

インスペクタータブでPlayerSettings>Camera Usage Discriptionの項目に何かしら説明分を記入します.アプリの初回起動時にカメラ使用許可のメニューに表示される説明文です.ここが空白だと動かないです.

f:id:k3174r0:20170930050156p:plain

したらBuild and Runです.しばらくすると,Xcodeが開かれます.

Xcode上で,プロジェクトファイルの最上のUnity-iPhoneをクリックしてGeneralで幾つか変更します.Identity>Bundle Identiferを固有の名称に変更.Signing>Teamで自分のプロファイルを指定.(ここの設定は,いままでXcodeiOSアプリを制作したことがない人は検索して自分で設定してください.)Generic iOS Deviceクリックしてを接続したiOSバイスを指定します.あとはプレイボタン▶を押せば実機上にインストールされます.

f:id:k3174r0:20170930052301p:plain

タップした場所に灰色の箱が表示されたと思います.箱から自分が表示したいモデルに変えてみます.

ヒエラルキータブでHitCubeParent>HitCubeをクリックしてインスペクタータブでチェックを外して無効化します.自分が表示したいモデルをゲームオブジェクトにして.HitCubeParentの下に配置します.

f:id:k3174r0:20170930053822p:plain

追加したオブジェクトにAdd ComponentからUnityARnHitTestExampleスクリプトを追加します.

f:id:k3174r0:20170930054506p:plain

UnityARnHitTestExampleの設定項目Hit TransformにHitCubeParentを指定してあげます.

f:id:k3174r0:20170930054806p:plain

これで同じようにBuild and RunでXcodeからビルドして実機で確認してみましょう.モデルによっては,シーンでカメラとオブジェクトが同じ向きに配置されるので180度回転させてあげるとか調整をしてあげましょう.

 

参考までに私が試したモノ↓

 

おわりに

説明結構雑になってしまいましたすいません.この記事では一切ソースのスクリプト書き換えたりしなかったですが,実際は読んでいろいろ書いたりして試してみるといろいろおもしろいことが思いつくと思います.

試したのは平面検出・オブジェクト表示だけなので他にも色々できそうです.表示するモデルにRigidbody追加して落としたり転がしたりするだけでも面白そうです.

まだ全然わからないですが,私的にはARKitのほうがトラッキングが良かったりiPhone/iPadは数があるのでアプリを開発する上でいろいろ有利かなと思います.でもイジイジするのだとARCoreのが楽しい感じでした.あとARCoreのほうが名前がカッコイイ.

 

ポジティブに

‪金土日いろいろ心が疲れることあったけど昨日はまあまあ効率よく過ごしてゲーセンいってまわりが外国人とカップルの中ボッチでufoキャッチャーやってすごいお金使ってしまって恥ずかしいしイライラするしもう怒って帰ろうと思って店出たけどもっかい戻って頑張って取れてすごい嬉しかったです。欲しいキーホルダーだったのでよかったです。‬

いきのびました

一年なんだかんだ生きてました

今思えば去年とかその前はなんかいろいろとダメだったけど.ダメなのは変わっていないけどそれを認知するようになって人と話すようになったらリハビリになったかなと.

前はもう自殺しようと思ってたり血液検査とかさせられたけどなんだかな意味なかったな.

あと,他人のそのとき一番つらいことは自分の一番つらいことと比較してはいけない.

来年どうしよう…

いちばんふるい

死にたいと思った記憶。多分小学校入学かそれよりも前、父親が半分無理矢理な形で地元のボーイスカウトに自分を入団させたんだけど。野外の活動は全然好きじゃないんだけど細かい作業とかもあって好きでも嫌いでもなくやってた。ちょっとしたら日本ジャンボラリー大会が富士かどっかであってそれに参加した(でも今調べたらジャンボラリーへの参加資格はボーイ隊かベンチャー隊で当時自分はビーバー隊かカブ隊だよだから違う大会)。でそこにいくのにフリーマーケットで買ってもらったフワフワした財布にお小遣いを入れて持って行った。大会では各支部の隊が出店とかやっててご飯買ったりとかくじ引きとかできた。そんでその終盤で財布を落とした。終盤だったんで特に買うものとかもなくて財布には数百円しか入ってなかったと思う。たしか五十円玉と十円玉だけ。帰って、財布どうした?って言われて落としたっぽいと言ったら死ぬほど怒られた。そんで子供ながらもう死にたいと思った。なんでそんなに怒るの?

これを書いてて思い出したけど、これと同時期かもっと古い記憶として忘れてたのを思い出した。ハッピーセットのおまけのイルカのぬいぐるみを気に入っていつも持ってた。兄弟が大学病院に行くとかでおれも連れて行かれることになったんだけど、家を出るときにポッケにあったイルカのぬいぐるみが駅までの道でなくなってることに気づいた。診察キャンセルして道とかを探しまくったけど見つからずに1日終わった。次の日に夕飯を待ってるときに喪失感から全てどうでもよくなってテーブルに置いてあった鍋の肉のパックの発泡スチロールを食べた。したら母親が救急車呼んでめっちゃ怒られてもっと死にたくなった。4歳くらいだったかな。

特にオチもない話。死にたいと思った出来事の中で一番古い記憶の話。

土器はじめました

f:id:k3174r0:20170211053016j:plain

DOKI

はじめに縄文土器みたいにニョロニョロを重ねあげて丸い器を作りました。

f:id:k3174r0:20170211053242j:plain

表面の荒削り感。郷土資料館とかの土器っぽい感じもするが、もっとスムージングすればよかったと思う。作ってる過程の写真も欲しかったけど、作り途中の手ではカメラもスマホもPCも触れない。

f:id:k3174r0:20170211053532j:plain

こっちは自信作。四角い器に挑戦。一作目の反省を踏まえて試行錯誤を重ねた。こっちはまだ乾燥が進んでいない。

f:id:k3174r0:20170211053836j:plain

しっかり表面のスムージングも。指に水をつけてスーッとするとキレイになる。

 

一週間弱乾燥させ、次は焼成。オーブンが温度調整できるタイプではないのでハックする必要がある。ちょうどいいので、粘土を焼いたあとはハンダリフロー炉として使えるようにしてみたい。

 

思い描く形をそのまま造形することの難しさと、楽しさを思い出した気がする。粘土ってこねてるだけで楽しくなってニヤニヤしてしまうので、心がしんどくなってしまったときは一度全て忘れて粘土を触るのもいい。ずっと土器を作ってみたいといっていたので、ついに手を出すことができた。まだ粘土は余ってるので次は何を作ろう?

 

たまにはこういうのもいいな。