一定時間ボタンを押さなければ〇〇する

オートメーションシステムには必ず「IF(もしも)」があって「THEN(〇〇する)」の2つが合わさって成り立ちます。。
今回は「もしも一定期間何もボタンを押さない場合、○○を実行する」という概要を紹介します。

豊富な「トリガー」 x 「アクション」を活用しよう

一般的なフロー

  • トリガー:もしもiViewer4内に用意されたボタンを押すと・・・
  • アクション:リレーが閉じる
  • 結果:電気がつく

これが基本であり、「結果」を動かすために、どういうアクションを起こせばいいか、最も近道を探るのが当社の設置業者の腕の見せ所です。

トリガーに「もしも〇〇秒間ボタンを押さなかったら」とjsファイルを埋め込む

  • トリガー:もしもiViewer4内のボタンを10秒間何も押さないと・・・
  • アクション:APIでiPadのディスプレイの照度を変える
  • 結果:スクリーンセーバーになる

といったことが可能です。

java script

var counter1 = 0, counter2 = 0,  timer1 = 5; timer2 = 10;  
var startjoin= 0, stopjoin = 2000;
var allJoins = [];
for (startjoin = 0; startjoin <= stopjoin; allJoins.push("d"+startjoin++));

function onButtonPressed(join, value, tokens) {
    counter1 = 0; counter2 = 0;  
    CF.log("counter: "+counter);
}
 
function onBackButtonPressed() {
    counter1 = 0; counter2 = 0; 
    CF.flipToPage("Startup");
    
}
 

function onPageFlip(from, to, orientation){
  CF.log("From: " + from + " To: " + to + "");
  counter1 = 0; counter2 = 0;
   
}



CF.userMain = function() {

	var timerID = setInterval(function(){
		if(counter1 == timer1){ 		 
		     
		     CF.runCommand("Loopback", "action1"); //x command
		     
		     counter1 = 0;  
		}

		if(counter2 == timer2){ 
		      
		     CF.runCommand("Loopback", "action2"); //y command
		     
		     counter2 = 0;  
		}


		counter1 = counter1 + 1;
		counter2 = counter2 + 1;    
    				   
	},1000);

    CF.watch(CF.ObjectPressedEvent, allJoins, onButtonPressed);
    
    CF.watch(CF.PageFlipEvent, onPageFlip, true);
		
    // Watch two sliders and a button
    CF.log("counter: "+counter);


};

解説

GUI Designer内で起こしたいアクションを2つ用意します。
31行目、38行目で起こしたいコマンド名を割り当てます。