読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

Node.jsとAmazon Dashボタンで鬼が来たボタンを作った

おはようございます。去年の時期から次男の便秘で小児科通ったりしてましたが、最近では定期的にうんちが出るようになりました。kjunichiです。

背景

昨年末、自作PCを一新をきっかけにMacよりWindowsに触れる機会が多くなり、sayコマンドのWindows版が ないか調べていたら、Windowsでもいくつかの方法で似たようなものは作れることが分かりました。

Edge.jsでNode.jsからC#のコードを呼びさせることを知っていたので、これとWindows向けに使える win-node-dash-buttonをつかってやってみました。

今回はIOTで子育てを解決してみます(嘘)!

子供が夜なかなか寝ないを解決したい!

子供がよる遊んでなかなか寝ないので、ボタン一つで解決を目指します。

つくるもの

Dashボタンを押すと、「おにがきたぞー」とCortanaと音字声でパソコンに脅かしてもらいます。

Edge.jsからSystem.Speech.dllを参照させる

今回のポイントはここだけです。32ビットの話が多く64ビットだと、\Windows配下で検索して 見つかったdllがいくつか見つかり、この中から当たりを見つけて、.jsと同一のディレクトリに 置きます。

ほんとは、このEdge.jsのdll参照時のパスの設定方法を調べたかったのですが。。。

また、UWPでもやってみましたが、参照設定が必要なのか、使用したい名前空間のクラスが見つかりませんでした。

成果物

const Server = require('win-node-dash-button').Server
const DashButton = require('win-node-dash-button').DashButton
const edge = require('edge');

const hostIp = '192.168.0.123';
const dashButtonMAC = "88:71:e5:xx:xx:xx";

const say = edge.func(`
    #r "System.Speech.dll"
    using System.Speech.Synthesis;
    async (input) => {
         SpeechSynthesizer sz = new SpeechSynthesizer();
         sz.Volume = 100;
         sz.Rate = -1;
         sz.Speak(input.ToString());
         return "";
    }
`);

const svr = new Server(),
    tide   = new DashButton(dashButtonMAC,  () => {
      say('おにがきたぞー、はやくねろ!', (error, result)=> {
        if (error) throw error;
        console.log(result);
    });
     console.log("Tide pressed"); 
    });
 
svr.register(tide)
.start(hostIp);

まとめ

  • IOTを駆使することで、子供たちをボタン一つで寝かしつけに成功した。(嘘です)
  • Edge.jsすごいとは思っていたものの、適用箇所が思いつかなかったが、この記事で一例ができた。

参考資料

関連記事

12年前の記事