Lesson10.TVのリモコン
ワークフロー
URLでNatureRemoをコントロールできます
Tokenの取得やAPIの詳細はインターネットで調べてください
APIはCURLのPOSTで操作が可能ですのでターミナルで遊んでみてください
なお、Tokenは個々のNatureRemoへのアクセス用になるので、公開できない情報です
(公開するとあなたの家電を第3者がコントロールできちゃいますから)
tokenのような情報はexport禁止の変数として管理します
ワークフロー右上の[χ]をクリックして環境変数の一覧を表示させてください
インストール後には、Nameにtoken、valueが空欄、Don’t Exportにチェックとなっています
valueにご自身の使いたいNatureRemoのトークンを貼り付けてください
引用符は不要です
Configure workflow and variables
キーワドなしとキーワドありをサポートしたいのでArgument Optionalを指定しています
この後のconditionalユーティリティで処理の分岐を制御しています
Keyword
今回のconditionalユーティリティは4分岐としています
シェルスクリプトのソースは基本コマンドラインの集合で、構造化に向いていないので
このように分岐させるとわかりやすいかな
conditionalユーティリティを開いてみてください
1行目の条件はパラメータがない状態を意味します(『is equal to』と『(空欄)』)
なお『then』のあとのテキスト(『On/Off』)はalfredワークフローをわかりやすくする
ための表示用文字列です。ソースコードを書くような感じに見えますが勘違いしないようにご注意ください
2行目の条件(『matches regex』)は正規表現で条件をかけますが
『+』,『++』,・・・と『+』10個までの文字列にマッチします
結構難しく、試行錯誤を繰り返してしまいましたが、TV ++として音量を2つあげるということを当初の
目的を達成できました
3行目は上記のマイナスバージョンです
後続のRun Scriptはほぼ同じですが、remo操作用のIDが異なるので、ここで分岐させました
4行目はその他でチャンネル変更になります
数字や文字での指定が可能ですが、詳細はスクリプトで実装します
conditional
NatureRemoのAPIでは、tokenとIDで、どのNatureRemoで何の操作をするかを指定します
tokenはパネルで設定していますが、スクリプト内では$tokenとして記述できます
IDは、それぞれの環境で異なると思いますので、変数として切り出しました
またCurlが長文になるので\で区切って改行させています
tokenは変数として固有の値を設定しています。スクリプト内では$tokenとしてha
ヴォリューム用のスクリプトでは文字の長さに応じて繰り返し処理をしています
下記の${#1}がパラメータの長さを取得するコードです
『++』であれば2、『—』であれば3となります
for ((i=0;i<${#1};i++)) ; do
RunScript (Volume +)
チャンネル変更のスクリプトは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変更
チャンネル変更でetvをセットする条件が誤っていました
3|etv|eとなっていますが、2|etv|eが正解です
セットするIDについても違っていたので修正しています
TV東京も同様にIDが12のものでした。7が正しいです
TV番組表.alfredworkflowと連携させるため、青い部分を追加しています
開発メモ等の詳細は、https://kitanotamotsu.github.io/tv をご覧ください
トップページに戻る