AlfredWorkflowで遊ぶページ

Lesson10.TVのリモコン

開発メモ

ワークフロー
 

1.NatureRemoのAPI

 URLでNatureRemoをコントロールできます
 Tokenの取得やAPIの詳細はインターネットで調べてください
 APIはCURLのPOSTで操作が可能ですのでターミナルで遊んでみてください
 なお、Tokenは個々のNatureRemoへのアクセス用になるので、公開できない情報です
 (公開するとあなたの家電を第3者がコントロールできちゃいますから)

2.export禁止変数


 tokenのような情報はexport禁止の変数として管理します
 ワークフロー右上の[χ]をクリックして環境変数の一覧を表示させてください
 インストール後には、Nameにtoken、valueが空欄、Don’t Exportにチェックとなっています
 valueにご自身の使いたいNatureRemoのトークンを貼り付けてください
 引用符は不要です
 
 Configure workflow and variables
 

3.キーワード(TV)入力時のパラメータ

 キーワドなしとキーワドありをサポートしたいのでArgument Optionalを指定しています
 この後のconditionalユーティリティで処理の分岐を制御しています
 
 Keyword
 

4.入力パラメータによって処理を分岐させる(conditionalユーティリティ)

 今回のconditionalユーティリティは4分岐としています
 シェルスクリプトのソースは基本コマンドラインの集合で、構造化に向いていないので
 このように分岐させるとわかりやすいかな

 conditionalユーティリティを開いてみてください
 1行目の条件はパラメータがない状態を意味します(『is equal to』と『(空欄)』)
 なお『then』のあとのテキスト(『On/Off』)はalfredワークフローをわかりやすくする
 ための表示用文字列です。ソースコードを書くような感じに見えますが勘違いしないようにご注意ください

 2行目の条件(『matches regex』)は正規表現で条件をかけますが
 『+』,『++』,・・・と『+』10個までの文字列にマッチします
 結構難しく、試行錯誤を繰り返してしまいましたが、TV ++として音量を2つあげるということを当初の
 目的を達成できました

 3行目は上記のマイナスバージョンです
 後続のRun Scriptはほぼ同じですが、remo操作用のIDが異なるので、ここで分岐させました

 4行目はその他でチャンネル変更になります
 数字や文字での指定が可能ですが、詳細はスクリプトで実装します

 conditional
 

5.APIを利用する

 NatureRemoのAPIでは、tokenとIDで、どのNatureRemoで何の操作をするかを指定します
 tokenはパネルで設定していますが、スクリプト内では$tokenとして記述できます

 IDは、それぞれの環境で異なると思いますので、変数として切り出しました
 またCurlが長文になるので\で区切って改行させています

 tokenは変数として固有の値を設定しています。スクリプト内では$tokenとしてha
 ヴォリューム用のスクリプトでは文字の長さに応じて繰り返し処理をしています
 下記の${#1}がパラメータの長さを取得するコードです
 『++』であれば2、『—』であれば3となります

 for ((i=0;i<${#1};i++)) ; do


 
 RunScript (Volume +)
 

4.チャンネル変更用のIDをセットする

 チャンネル変更のスクリプトはcaseで多重分岐を処理しています
 条件が文字列マッチで、正規表現のように|がorの意味です

 ちなみにcaseはesacで締め、ifはfiで締めていて粋な感じですね
 for(というかdo?)はrofでなないのですね
 
 RunScript (Channel)
 

取扱説明

機能:

 NatureRemoのAPIでTVをリモコン操作する
 ※conditionalユーティリティ、export禁止変数のサンプルです

インストール:

 1.alfredworkflowをダウンロード
 2.ファイルをダブルクリックしてワークフローに登録
 3.NatureRemoのアクセス用トークンを入力し変数を設定(インストール後で可能)
  ※ワークフロー右上の[χ]をクリックして設定
 4.多分スクリプトにある$IDも変更が必要(インストール後に変更)
  ※Run Scriptを開いて書き換え

使い方:


 1.Hotkey『⌃t』(HOTKEYはご自身で設定が必要です)でテレビのON/OFF
 
 2.キーワード『TV』+ パラメータでテレビをコントロール
 例)
  TV(パラメータなし) ON/OFF
  TV 数字/文字  チャンネル変更
  TV +/-  Vol変更

修正履歴

ver1.0既知のバグ


 チャンネル変更でetvをセットする条件が誤っていました
 3|etv|eとなっていますが、2|etv|eが正解です
 セットするIDについても違っていたので修正しています
 TV東京も同様にIDが12のものでした。7が正しいです

ver1.1

TV番組表.alfredworkflowと連携させるため、青い部分を追加しています
 開発メモ等の詳細は、https://kitanotamotsu.github.io/tv をご覧ください

トップページに戻る