Sumasupiのアイコン画像
Sumasupi 2021年05月16日作成 (2021年05月16日更新)
製作品 製作品 閲覧数 1517
Sumasupi 2021年05月16日作成 (2021年05月16日更新) 製作品 製作品 閲覧数 1517

どんな状態の照明でも全点灯させるAIスマートリモコン

どんな状態の照明でも全点灯させるAIスマートリモコン

はじめに

すますぴ!「~ 初心者の為のスマートスピーカーサイト ~」の管理人です。
今回、obniz IoTコンテスト 2021 in Elchikaに参加させていただくことになりました。
obnizを使うのは初めて(※ 厳密には2年前に購入したものの通電してLCDチカ?させたのみ)です。
製作物には誤記やバグもあるかもしれませんが、何卒御容赦ください。

本投稿に際しましては、基本的に初心者ユーザー向けに書かせていただきます。
(本人も初心者です(笑))
私が実際にやった手順で、同じように作業すれば100%再現できるように書かせていただきます。

それでは皆さま、よろしくお願いいたします。

 

このテーマを選んだ理由

私はスマートスピーカーサイトの管理人で、日々スマートスピーカーや周辺機器の実験や評価を行っています。(毎日遊んでいるだけですが・・・

そんな中、意外と困っていることが「スマートリモコンの自由度が低いこと」です。

日本でスマートスピーカーが発売されてから約3年半、今や定番である赤外線を使ったスマートリモコンも登場して3年になります。

しかしながら、多くの製品は「決められた赤外線」を送信するだけの機能で、「ユーザーの環境」を自動的に判断して動作させるようなことはできません。

Google Home(Nest)のルーティン機能、Amazon Echoの定型アクション機能は、多機能化が進んでいます。
しかしながら音声命令や時間指定で動作する機能しか無く、「ユーザーの環境」を判断して動作する機能は実現できることは、ごく一部の周辺機器に限られています。

それに対し、今回使うobnizは多くのセンサーを自由に選び、組み合わせて使うことも可能です。

市販されているスマートホーム機器でなくても、電子部品として流通しているものなら、何でも自由に使うことが可能です。
更に「プログラミング」によりセンサーの値を自由に判断・処理することができますので、赤外線リモコンが「ユーザー環境の判断機能をもったAIリモコン」に生まれ変わります。

以前から何か作れたら・・・と思っていたのですが、今回は私の家で使っている照明(蛍光灯)を使って実現させることにしました。

 

我が家のリビングの蛍光灯は・・・

こちらが我が家のリビングの蛍光灯です。
|

古すぎて型番や製造年度がよくわかりません。(天井から剥がせばケース裏に書いていると思いますが・・・)

また、リモコンは最近のものとは違い、ボタンがたった1つしかありません。

ただ、単純に 「点ける」「消す」 かではなく 「何度か押す」ことにより点灯モードが変化する構造になっています。
(画像の左が欠けます(泣)ので、クリック(タップ)で拡大して御確認ください)

キャプションを入力できます

※ リモコンのボタンを押す度に、左から右の状態に遷移します

写真の上にAmazon Echoでの音声コマンドを書きましたが、そもそもがワンボタンなので全て同じになります。だから何度も(声で)押すことになるわけです。

例えば、音声命令で点灯させる場合、常夜灯が付いている状態からであれば・・

キャプションを入力できます

・・・と、いう流れになります。2回命令を言うのが大変ですが、その都度目で確認するのも面倒です。
折角音声の命令で便利になっているはずが、これでは意味がありません。


「あんた、なにアホなことやってんの?
リモコン2回押した方が早いやんか!!」

・・・確かにそうです(泣)

上は一例でしたが、他に照明がどこのモードにいるかは見ただけではわからない場合もあり、最大で3回も押す必要がでてきます。

・・・で、今回はこの 「目で見て判断する」部分をobnizに任せることにしました。

ただ、obnizの豊富な製作例を見たところ、赤外線リモコン も簡単に作ることができそうでしたので、一緒に作ることにしました。
(※ ちなみに、市販のスマートリモコンを使う方が大変です(笑))

 

 

デモ動画

動画の機材配置はこちらのようになっています。

AmazonEcho → obnizモジュール → 蛍光灯 の流れになります。
obnizの向きが動作に影響しますので、動画撮影の際はこの形で配置させていただきました。

ここに動画が表示されます

液晶画面はこの様になります。


フォントはわかる範囲で小さくしています・・・ちょっと厳しかったですね。
数値は単に電圧測定値なのですが、目安になった方が便利なのでワザと残してあります。

 

 

部品

このコロナ禍では電子部品も入手困難な状況が続いていると聞きましたので、基本的に手持ちの部品を使うことにしました。

名前 用途 部品URL ライブラリURL
IRSensor(赤外線センサ) 本来の赤外線リモコンからリモコン送信時の発光データを取り込むのに使いました。 https://akizukidenshi.com/catalog/g/gI-00622/ https://obniz.io/ja/sdk/parts/IRSensor/README.md
InfraredLED(赤外線LED) obnizを赤外線リモコンとして使うために、赤外線でコントロール信号を出力します。 https://www.switch-science.com/catalog/1484/ https://obniz.io/ja/sdk/parts/InfraredLED/README.md
フォトトランジスタ(PT550代用) リビングの明るさを測定するために使用しました。 https://akizukidenshi.com/catalog/g/gI-08910/ https://obniz.io/ja/sdk/parts/PT550/README.md(参考)
抵抗(10Ω,200kΩ) 赤外線LEDの電流制限、フォトトランジスタのプルダウンに使いました。 https://akizukidenshi.com/catalog/e/erd25s_dT
obniz Board 1Y obniz本体です。 https://obniz.com/ja/doc/reference/board-1y/ https://blog.obniz.com/make

※ フォトトランジスタに関しましては、PT550を使わずにフォトトランジスタ+抵抗で代用しました。今回の用途では全く問題ありません。

 

 

設計図

今回は面倒な半田付け作業は省略し、各々のパーツのリード線を巻き付けて接続することにしました。昔よく使われたワイヤーラッピングですね(笑)


回路図は作図ソフトを探すところから始めないと・・・ごめんなさい!後ほど!!


念のため全ての部品は1pinずつ空けて配置しています。

左の赤外線センサは最初のリモコンデータ取りの時のみ使います。(最終のプログラムにはありません)

中央がobnizを赤外線リモコン代わりにする赤外線LED抵抗(10Ω) です。
保護抵抗はわずか10Ωですが、LEDを壊さないように空中で絡げて接続しています。
(※ 5pinへは接続していません)
蛍光灯は天井にありますので、壊さないように途中から上に向けています。

右が本来は照度センサーPT550の代用として使った フォトTrプルダウン抵抗(200kΩ) です。9pinにも接続する必要がありますので、しっかり絡げています。
これも本来は上に向けた方が良いのですが、窓の外の光や蛍光灯の光が入るより部屋の散乱光が入った方がいいので、横に向けたままにしました。(※ でも結果はそれなりでした(泣))

 

ソースコード

最終的にobnizのリポジトリに登録した内容で、サーバーレスイベントからこれを呼び出す形になります。

<html>

<head>
    <meta charset="utf-8" />
    <title>AlexaからIFTTT経由で自動で照明を全点灯させる</title>
        <script src="https://unpkg.com/obniz@3.x/obniz.js"></script>
</head>

<body>
    <script>
      let obniz = new Obniz("obniz id");
      obniz.onconnect = async () => {
                        
    //自動で全点灯リモコン 蛍光灯がどんなモードであっても、全点灯するまで点灯状態を確認しリモコンを送出する。

            //タイトル表示
            obniz.display.font('Avenir',13);                 //obniz内蔵液晶 タイトルフォント13
            obniz.display.print("自動で全点灯リモコン");     //obniz内蔵液晶への表示
            //変数
            var ovr = 0;                                     // 状態フラグ
            const WAIT_MS = 3000;                            // ウエイト定数

            //照度測定ダミー(最初の値が不安定な為(2回目以降は安定))
               var pt550 = obniz.wired("PT550", {gnd:8, vcc:10, signal:9});          //フォトトランジスタの設定
                const voltage = await pt550.getWait();                                //読み取った値をvoltageへ
                console.log("ダミー電圧読み出し" + voltage);   //コンソール表示
                //  obniz.display.font('Avenir',10);           //obniz内蔵液晶フォント10
                //  obniz.display.print("ダミー" + voltage);   //obniz内蔵液晶への表示
  
        if (typeof req === "object") {
            if (req.body.light) {
                obniz.display.font('Avenir',12);               //obniz内蔵液晶 タイトルフォント12
                obniz.display.print("赤外線リモコン送信!");   //obniz内蔵液晶への表示
                
                // ウェイト
                //await obniz.wait(WAIT_MS);
                
                //リモコン5回までループ                
                for (let step = 0; step < 5; step++) {
                  //1秒待ち
                  await obniz.wait(1000);

                  //明るさ測定
                    const voltage = await pt550.getWait();    //フォトトランジスタで明るさ読み取り
                    console.log("測定値" + voltage);          //コンソール表示
  
                  //明るさ判定と赤外線リモコン送信
                  if (voltage < 3.0 ){

                    // もし暗かったら赤外線リモコン
                    console.log((step + 1) + "回目 暗いのでリモコンボタン押します!"); //コンソール表示
                    if(step == 2){ obniz.display.clear();}                             //オーバーフロ一時の画面消去
                    obniz.display.print(voltage + "から" + (step + 1) + "回目" );      //obniz内蔵液晶への表示

                    // 赤外線リモコン送信   データは日立照明用でこちらの方法で取得 https://obniz.io/ja/sdk/parts/IRSensor/README.md
                      var led2 = obniz.wired('InfraredLED', {anode: 4, cathode: 6});
                      led2.send(
                        [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
                      )
                    ovr = 1;

                  } else {

                    //もし明るくなったら終了
                    console.log("明るくなったので終了します!!");       //コンソール表示
                    obniz.display.print("点灯しました!" + voltage);     //obniz内蔵液晶への表示
                    await obniz.wait(WAIT_MS * 2);
                    ovr = 2;
                    break;
                  }

                  //赤外線送信後ウェイト
                  await obniz.wait(1000);

                }
                
                //リモコン効かない(5回送信しても動かなければ諦めましょう)
                  if ( ovr == 1 ){
                     console.log("リモコン効かないので終了します!!"); //コンソール表示
                     obniz.display.print("リモコン動作不良(;_;)");      //obniz内蔵液晶への表示
                     await obniz.wait(WAIT_MS * 2);
                  }

            }
        } else {
                console.log("IFTTT外の動作です");                      //開発環境から直接実行
                obniz.display.font('Avenir',13);                       //obniz内蔵液晶フォント14
                obniz.display.print("IFTTT以外の動作です");            //obniz内蔵液晶への表示
        }
  
        if (typeof done === "function") {
            done();
        } 
    }
    </Script>
</body>
</html>

 

【初心者向け】おまけ・実際の開発手順

初めてのobniz開発ということもあり、obniz公式などの製作記事を参考にさせていただきました。
先に個々の電子部品やプログラムの動作検証や特性確認を行い、最終的にIFTTTからコントロールするサーバーレスイベントとして動作させることにしました。

初心者がハマりやすい・・・いえ、実際にハマった(泣)ところも書かせていただきました。

##赤外線リモコンデータの抽出
IRSensorのページを参考に作業しました。

プログラムにより赤外線受光センサを使い、手持ちの赤外線リモコンのデータを開発環境のconsoleからコピペして、テキストデータに保存しました。
今回は1ボタンだけなのでラクチンです!!

ちなみに、obniz idのところに自分のobnizの番号を入れれば、このままダイレクトに実行できて素晴らしいです!!
ただし、ピン配置を自分の環境に合わせておかないといきなり部品を壊すので注意ですね。

 

赤外線リモコンの送信動作確認

InfraredLEDのページを参考に作業しました。

上で取得したデータを貼り付ければ、obnizを赤外線リモコンとして使えるようになります!

もう!これだけで嬉しくなって、いろいろな赤外線リモコンで遊び続けたかったぐらいなのですが我慢して作業を続けました。

これもピン配置は注意ですね!
(私の住む地域は電子部品屋さんが無くなってしまったので切実なんです)

 

照度センサーの動作

PT550のページを参考に作業しました。

上にも書きましたが、PT550を使わずに手持ちのフォトトランジスタと抵抗で代替回路を作りました。ライブラリも流用したのですが、部屋の明るさをフォトトランジスタで電圧化して読めることを確認しました。(本来のPT550はもっと精度や安定度がよいと思います)

部屋の明るさやデバイスの方向を変えてみて電圧値を確認しました。
正直、精度もなく再現性も高くはありませんが、蛍光灯の明暗ぐらいは十分判断できると判断しました。

これまでのプログラムの統合

まずは、リモコン動作を単体で行えることの確認として、ここまでで得られた赤外線リモコンのデータや各素子の動かし方を1つのプログラムにまとめました。
開発者コンソールHTMLプログラムからですね!!


最初はテンプレートが出てくるので貼り付けたり書き込んだりして、デバッグが終わったら、あとはAmazon Echo(Alexa)から呼び出せるようにするだけです。
多少苦労しましたが、なんとか動くようになりました。

 

IFTTTの連携によるサーバーレスイベントプログラムへの統合

次にIFTTTとの連携なのですが、
参考になるページとしてobnizとAlexaの連携 -IFTTTを使ってLEDを点滅-の内容を読み、作業を行いました。(他にもありましたが最終的にこちらを参考にしました)

ここでハマったのが、リポジトリの作成です。


上に書いたHTMLプログラムを貼り付けて作ったのですが、単体では動作するもののIFTTTからの呼び出しでは動作しないという現象が出てきました。

その後、いろいろなページを見て、この部分↓でのからのデータ渡しも修正したのですが、IFTTT-obniz間は正常になったものの全く動作しません。


・・・で、知人の環境では「問題なく動く」と言われたのですが・・・なぜか、このプログラムを入力してもダメでした。


(後から気づいたのですがファイルが3つあります。1つ入力しただけでは動かないですね)

その後、その手前にあるこちらの画面↓を見て手入力してみるように言われたところ・・・動きました!!


原因はよくわかってないのですが、1つでも動くことがわかれば話は早いです。
もう一度最初から、このプログラム↑を参考にしてリポジトリを作り直しました。


そしてサーバーレスイベントに登録して・・・動きました!!


この後、プログラムの最終調整後に完成となりました。

HTMLプログラムから作ったリポジトリのプログラムがなぜ動かなかった?はまだわかっていませんが、引き続き原因を調べたいと思います。

 

 

今後の課題

作りながら考えていたことを備忘録代わりに書かせていただきます。

  • Alexaスキル化・・・IFTTTの遅延の影響を避けるため、Alexaスキルからアクセスできるように改善する。
  • 全点灯だけでなく全消灯も対応・・・objectの値により条件分岐させ、明るさを検知して全消灯もさせる。(IFTTTなら複数のアプレット)
  • 赤外線LEDの強化・・・今回は電流容量の多いobnizの特性からLED1個で試したが、さらに増強することで向きを意識しなくてすむようにしたい。
  • 赤外線リモコン読込対応・・・IRセンサーをプログラム作成時の時だけでなく、通常の使用時にも活用できるようにしたい。
  • 照度センサーの高精度化・・・LED同様に向きの影響を無くし、安定に測定させたい。
  • 動作状態の明確化・・・余っている端子を利用しスピーカーやLEDを接続することにより、音や光により動作状態をわかりやすくしたい。

・・・実はプログラムで最大5回回しているのは、赤外線LEDの送信ミス防止の為です。回数を増やすだけでは30秒ルールに引っかかってしまいそうなので、根本的にパワーアップした方が良さそうです。

最後に

今回、プログラムの動作で相談させていただいたrobo8080さん、投稿の編集方法について教えていただいた紅樹タカオさんに感謝いたします。

どうもありがとうございました。

('21 20:23改定) しばらく見づらい状態が続きますが、初めてのMarkdown記法で苦しんでおります。何卒御了承ください。
('21 23:05追記) とりあえず、治せるところまで修正しました。もう思い残すことはありません(泣)

Sumasupiのアイコン画像
初心者の為のスマートスピーカーサイトの管理人です!  https://sumasupi.net/
  • Sumasupi さんが 2021/05/16 に 編集 をしました。 (メッセージ: 初版)
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Sumasupi さんが 2021/05/16 に 編集 をしました。
  • Opening
    Sumasupiのアイコン画像 Sumasupi 2021/05/20

    遅くなりましたが、既定により加筆できませんのでこちらで報告させていただきます。

    本文中に書いた 「単体では動作するもののIFTTTからの呼び出しでは動作しない」 の件ですが、
    ようやく原因が見つかりました。

    原因はリポジトリのコードの先頭に「//(プログラムの名称や日付などのコメント)」が入っていたことでした。

    これが入っていても、リポジトリの編集画面での「実行」やサーバーレスイベント画面での「テスト実行」では
    問題なく実行されてしまいます。
    しかしながら、IFTTTから起動した場合はなぜか実行されず30秒のタイムアウトになります。
    (サーバーレスイベントのログで確認)

    この現象がプログラムのミスによるものなのか、なんらかの制限事項や https://qiita.com/wamisnet/items/20b111298c12e81d5da0 で書かれているノウハウ?的なものなのかわからず、延々悩み続けた次第です。
    蓋をあけてみれば大元は単なるケアレスミスだったわけですが、舞い上がってしまってコード本体しか見てなかった
    ので全く気づきませんでした。

    以上、時間をかけた分だけいろいろ勉強させていただきました。

    お騒がせして申し訳ありませんでした。

    0 件の返信が折りたたまれています
ログインしてコメントを投稿する