スマートオフィス化計画エアコン編

はじめに

エアコンはありがたいものです。夏の暑いときも冬の寒いときも快適な室温を保ってくれます。
…電源さえ入っていれば。

朝イチで出社するメンバーから、鍵開けてオフィスに入った時点で既にいい感じに涼しくなっていてくれたらとてもうれしいという話を聞いて、やってみることにしました。

オフィス用エアコンは案外賢くない

家庭用エアコンは赤外線リモコンで制御できるので、いわゆるIoTリモコン(スマートリモコン)とPCを連携させれば電源のオンオフ・温度変更・風量変更・モード変更を割と自由に制御出来ます。
一方、オフィス用エアコンは温度やモードが表示されるパネルを見ながら物理ボタンをポチポチ押して制御するしかありません。

という訳で、今回は電源のオンオフに専念します。

SwitchBot

エアコンの電源ボタンを物理的に押すためにSwitchBotを導入しました。

こんな感じでボタンを押してくれます。

SwitchBotはBluetoothを搭載していて、スマートフォンアプリでボタンプッシュの動作をさせることができます。今回は自動制御を目指したいので、ネット経由でトリガを送れるSwitchBot Hubを併用します。

SwitchBot HubをIFTTTと連携させて、以下のようにしてエアコンの自動起動を実現できます。

  1. ラズパイで朝7時にスイッチオン用のスクリプトを起動
  2. IFTTTで設定したWebhooksのURLをスクリプトが叩く
  3. IFTTTからSwitchBot Hub経由でSwitchBotにトリガが届く
  4. スイッチオン!

IFTTTとの連携

IFTTTでは’This’としてWebhooks、’That’としてSwitchBotのBot Pressを選んでアプレットを作成しました。

このアプレットへのアクセスキーをIFTTTのWebhooksのページで発行すれば、以下のようなURLを叩いてSwitchBotを動かせます。(XXXの部分がアクセスキーです)

https://maker.ifttt.com/trigger/PressSwitchBot12F_Red/with/key/XXXXXXXXXXXXXXXXX

残念ながら、IFTTTでもSwitchBot Hubでも1個のトリガで複数のSwitchBotを動かすアクションは実行できないので、オフィスの6台分のエアコンそれぞれに対応したアプレットを作って6つのURLを1個ずつ叩くスクリプトを作りました。IFTTTで「平日朝7時に実行」というトリガを作れるので、それを6台分設定することも考えましたが「平日だけど会社は休み」のパターンへの対応を考えてスクリプトから起動しています。

結果

自動起動を始めて2週間ほど経ちます。それなりにちゃんと動いていて、朝イチの出社のメンバーを空調の効いたオフィスが迎えてくれるようになっているようです。

「それなり」というのは、6台のエアコンのうち1,2台が動いていないことが多いからです。「オフィスに入ったら空調が効いている」という目的には大きな影響は無いと言えば無いのですが、何故全部ちゃんと動いてくれないのかは気になるところです。いろいろ試した感じではSwitchBot Hubがどうも怪しいようです。何回かに1回IFTTTからのトリガを取りこぼしたり1個のトリガで2回動いたりします。

https://github.com/OpenWonderLabs/python-host
を使えば SwitchBot Hub 無しでラズパイから直接SwitchBotを制御できるようなので、いずれ挑戦してみたいと思います。

Webスクレイピングをはじめてみました(1)

 

こんにちは、長年Webデザインに携わってきましたがプログラミングがなかなか覚えられないLQヒロシです。

今回は一念発起して、流行りのPythonWebスクレイピングをしながらプログラミングを勉強していこうという試みです。

なぜWebスクレイピングなのか?

 

PHPのちょっとした修正や、jQueryを使ったクリックやリサイズの簡単なイベントぐらいはできるけど、そこから先になかなか進めない・・。デザイナーなんだしJavaScriptUI周りのエフェクトとかを実装できるようになりたいと思ってはいるのですが、UI周りってイベント同士が絡んだりすると途端に難しくなってなかなか続かないのが目下の課題だったりします。

簡単なアウトプットを段階的にこなしていって、ファンクションのまとめ方だったり、データのやり取りなどプログラミングの勘所を掴んでいけるのが理想的ですよね。

Webスクレイピングであれば、WebサービスのAPI活用・クローリングでのデータの収集、データベースへの保存や取り出し、データの加工の作成という一連の流れが小規模なカタチで勉強できるので、体系的にポイントを抑えた勉強ができそうです。データを加工するのに正規表現も使うことになりそうだし。

 

プログラミング言語はpythonを使用し、ツイッターと連携して画像を収集しギャラリーサイト作成を最終的な目標としたいと思います。

 

第一回目は、スクレイピングとPythonについてご紹介できればと思います。

そもそもWebスクレイピングとは?

 

厳密にはクローリングとスクレイピングに分けることができます。

・クローリング
WebサイトのハイパーリンクをたどってWebページを探す作業

・スクレイピング
Webページから必要な情報を抜き出し、整形し直す作業

例えば、電子書籍の販売サイトから書籍情報を抜き出して価格を比較、最安値の情報のみをまとめるなど、要するに複数のWebサイトから任意の情報だけを抜き出し、雑多なデータを整理して有益な情報にすることでしょうか。

Pythonって何?おいしいの?

 

GoogleFacebookで採用されていて、機械学習やIoTの事例も多い現在最も旬な言語とも言われていますので、おいしいです。他のプログラミング言語同様、WindowsMacOSLinuxなどのプラットフォームで動作でき、環境構築・Webシステムの開発~データ解析までひとつの言語で実現できることから世界中で広く使われています。

Pythonの特徴

 

文法が読みやすい

 

プログラムは一度書かれた後も他の人に読まれるもの。pythonでは「シンプルで読みやすいコードが書けること」という設計思想があり、コード上の装飾が極力少なくなるような記述方法になっています。少し文例を見てみましょう

実行結果:hogeです

 

このように文の終わりに閉じタグが必要なく、制御構文では影響する範囲を括弧で囲む代わりにインデントで定義。変数は代入するだけで宣言されたことになるのでとてもすっきりとして読みやすいコードになります。

Pythonってなんだか難しそうなイメージがありましたが、PHPなどと比べても別段特殊な書き方をしているわけでもなく、文法が見やすいので非常に馴染みやすく感じました。教育の現場でも採用されていたりするそうで、プログラミング初心者にも学びやすい言語だと思います。

 

・導入が簡単!

 

MacならHomebrewでインストールするだけですぐに使えました。コンパイルする必要もないので、ぶっちゃけ笑ってしまうぐらい早いですwww

(以前PHPを導入した際は、php.iniファイルの設定を調整したり、事前にDBを用意したりと面倒だった思い出があります。)

 

・豊富なライブラリ

 

Pythonには正規表現、数学関数、通信プロコトルなどの標準ライブラリが非常に豊富でインストールするだけで利用が可能です。さらにサードパーティ製のライブラリも豊富に提供されています。最近ではディープラーニング用のTensorFlowなどが有名ですね。データ解析のライブラリも強力で、スクレイピングしたデータをインフォグラフィックとして表現できたりもします。

 

それではPythonの導入方法を見てみましょう

 

Pythonは2系と3系があり、現在は3系が主流になりつつあります。2系と3系の間には互換性がありません。Macではデフォルトでインストールされていますが2系だったりするので、Homebrewで3系をインストールします。

 

 

バージョンを確認してみましょう

 

Homebrewでインストールしたものが参照されているか確認します。

と表示されれば準備は完了です。

 

では、対話方式でプログラム実行できる「インタラクティブシェル」でPythonを動かしてみます。やり方はターミナル上で「python3」と入力するだけですw

立ち上がったら上記のようなメッセージが表示され、コマンド受付状態になります。では、構文を入力してみましょう。

はい、これだけですw簡単ですw

 

終了する時は

または

これでbashに戻ることができます。

 

第一回目は以上になります。説明や導入を中心に駆け足でご紹介してきました。
まだまだ勉強中の身のため、上手く伝えられず分かりにくい部分が多々あると思いますが、次回からは実際にPythonを利用して少しでも魅力をお伝えできればと思います!

「PHPカンファレンス関西2018」に協賛させていただきます


「PHPカンファレンス関西2018」に、Goldスポンサーとして協賛させていただきます。
 
<期間>
2018年7月14日(土)
<会場>
グランフロント大阪
<主催>
PHPカンファレンス関西2018開催実行委員会
「PHPカンファレンス関西2018」公式サイト

NginxをHTTP/2対応する際のポイント

NginxをHTTP/2に対応するにはALPNに対応する必要があり、下記ソフトウェアバージョンの条件を満たす必要があります。

  • Nginx 1.9.5以上であること
    ※但し、その後のバージョンでHTTP/2に関する不具合の修正がある為、ご注意ください。
  • OpenSSL 1.0.2以上であること

導入されているソフトウェアバージョンについては、下記コマンドにて確認可能です。

$ nginx -V

下記のようにバージョン条件が満たされた出力がされていれば問題ありません。

nginx version: nginx/1.10.3 (Ubuntu)
built with OpenSSL 1.0.2g 1 Mar 2016
TLS SNI support enabled

過去にHTTP/2対応したと思っていてもOpenSSLのバージョンが低く、正しくHTTP/2に対応できていないということがあるのでご注意ください。

正しく対応できているかの確認はchromeのDeveloper toolにてProtocol列を表示し、確認してください。

問題がない場合には[h2]と出力されています。

 

VRで運動不足解消

基本的に用事以外は外に出ない
おうち大好きなカツラです。

 

家の中にこもりっきりなので1年に1度ぐらいは運動を始めるのですが、長続きしていません。
直近だと去年はプール、その前の年はジムにいってどちらも大体3ヶ月ほど行ってやめてます。

 

やめる理由としては
・雨の日に出るのが億劫になる
・汗をかいて家まで帰るのが面倒
・継続的にかさむ出費
・単純に筋トレやプール自体に飽きた

 

そうやって今年も同じくそろそろ運動をと思い出したところで今年はVRで運動を始めました!

まだ始めて少ししか経っていないですが、VRでの運動は今まで途中でやめた理由をほとんど解消できます!

 

・雨の日に出るのが億劫になる => 移動が不要
・汗をかいて家まで帰るのが面倒 => 風呂に入る前にやればOK
・継続的にかさむ出費 => ゲームソフトを買い切り
・単純に筋トレやプール自体に飽きた => 飽きれば新しいソフトへ!

 

これはみんなに伝えるしかない!ということで今遊んでる運動になるVR音ゲーを紹介したいと思います!

 

一つ目はこちら

ゲームとしてクオリティーが高いです。
個人的な感覚としては運動よりも音ゲーに比重が傾きますが、ゲーム自体面白いです!

曲もやって行くうちに解放されて行きストーリーもある音ゲーとしてほぼ完成されたようなゲームオススメの一品です!

 

二つ目はこちら

こちらは現状は早期アクセスゲームとなっていますが、運動をするなら1番おすすめです!

簡単に説明すると迫り来るブロックを斬って斬って斬りまくるゲームです。

ハードぐらいの難易度で2回ぐらいやると汗が出て運動になっていい感じです!
こちら切る方向をどこからでもできるモードなどがあるので、ストレス解消にも良さげで今の所1番おすすめです!

 

やり始めたきっかけとしては会社の健康診断の結果が思ったよりもヤバげだったというのもありますが、歳が経つにつれ体に無理がきかなくなることを考えると今のうちに少しでも運動をと・・・

 

同じように「運動不足」で「VR機器」を持っていて「遊ぶスペースが2mx1.5m以上」ある方はぜひ遊んでみてください!