node-red-contrib-mqtt-broker の元となる mosca がArchivedになっていて node-red-contrib-aedes MQTTブローカーノードを見つけたメモです。
背景
最近、 Windows 10 で Node-RED を使っていて node-red-contrib-mqtt-broker を使おうとしたところ、以下のようなエラーに出くわしました。
SchemaError: Expected `schema` to be an object or boolean
はじめは、よくある Windowsでnpm installしてnode-gypでつまずいた時対処方法 – Qiita あたりの npm install --global windows-build-tools
まわりのエラーかなと思ったのですが解決せず、ちょっと Node.js 環境を崩してしまった可能性はあるのですが、さらに、追ってみると node-red-contrib-mqtt-broker の元となる moscajs/mosca: MQTT broker as a module でも同じエラーが出ることがわかりました。
ただ、強引な解決策は無くはないのですが、なにかしっくりこない。
というのも、
moscajs/mosca: MQTT broker as a module
mosca が This repository has been archived by the owner. It is now read-only.
となっていてメンテナンスされておららず、なんと aedes という新しいライブラリが開発されていました。
ライブラリ内の Mosca vs Aedes を見てみると、高速化が行われているようでイイ感じです。
改めて見てみると node-red-contrib-mqtt-broker にも紹介がある
よく見ると、 node-red-contrib-mqtt-broker にも紹介ありました。
Not maintained anymore because dependant Mosca is not maintained. Please check node-red-contrib-aedes node instead of that.
のとおりで、 さきほどの aedes を元にした node-red-contrib-aedes (node) – Node-RED がありました。
インストールしてみる
パレットの管理から node-red-contrib-aedes を調べたら、すんなり出てきたのでインストールします。ちなみに、node-red-contrib-mqtt-broker が入っていると競合してインストールに失敗したので、前もってアンインストールしておきましょう。
無事インストールされたので node-red-contrib-mqtt-broker と同じ感覚でワークスペースに配置します。
どどん。
デプロイすると、さきほどエラーが起きていた Windows 10 でもちゃんと動きました。使用感は変わらず!ありがたい!
内部の設定も node-red-contrib-mqtt-broker の内容を引き継ぎつつも、分かりやすいレイアウトになっていました。
元となる aedes もこれからアップデートされていきそうな新鮮さを感じますし、いちはやく、Node-REDの方々が追いかけてくれているので、今後はこちらを使っていこうと思います。
Windows 10でのエラーも直すのが大変だったので、なおさら移行したほうがいいですね。