MQTTHomeClientをプラグインで機能拡張できるように改良した

この記事で作っていたMQTTHomeClient。
MQTT Brokerから受け取ったTopicから処理を分岐させるんですが、ここで呼び出すWakeOnLANの処理をプロジェクト内で実装しています。
どうせ私しか使わないんでべたべた書いてもいいんですが、勉強がてらMQTTのクライアントの機能拡張をDLL追加でできるように改良してみました。

まぁ参考サイトのコードをコピペゲフンゲフン採用させてもらって、WakeOnLANの処理を外部プロジェクトのクラスライブラリ側に寄せただけです。

Interfaceを定義してやって、DLL側とプログラム側でInterfaceに沿った処理を突っ込むだけなので、割と簡単に実装できますね。いやまぁInterfaceの設計が多分一番大変なんでしょうけども。バージョンアップごとに変わっていったらプラグインの追従が死ぬので。

参考サイト

「Ok Google,パソコンの電源を入れて」 を実現したい(IFTTT、MQTT、Raspberry Piを用いる方法)

家で仕事をしているのですが、普段寝る前にはパソコンの電源を落としています。
朝起きて身支度をして、仕事部屋に行ってからパソコンの電源を入れて・・・よりはデスクの前に来た段階で電源が入っていてほしい。

というわけで、朝起きたときに枕もとのGoogle Assistantに「パソコン付けて」というだけで電源が入るようにしました。

続きを読む

MQTTのクライアント側処理サンプル(.NET Core 汎用ホスト版)

個人的に作ってるアプリで必要だったので調べた成果。

MQTT BrokerはBeebottleを想定しつつ、一応汎用的に動くはず。

Beebottleの場合、アカウントIDにトークンを指定してください。

内部的にはMQTTのライブラリとして MQTTnet を使用しています。

ParcelでバンドルしたJavaScriptの関数を直接呼び出すときの方法

HTMLのフォームにonSubmitでJavaScriptを呼ぶように実装してたんですが、HTMLファイルに直接JavaScriptを記載していたり、生のJavaScriptファイルを読ませていた時はうまく動くのに、Parcelを通したJavaScriptファイルだと Uncaught ReferenceError となってしまい、実行されない問題が発生。

ググったところそれっぽい情報を発見。

続きを読む

指定時間にディスプレイの電源をオンオフするだけのミニツールを作るなどした

普段テーブルの端にSurface Proを置き、Twitterクライアントを常時起動させつつ、音楽を再生したりしています。
朝起きた時に夜中のツイートもささっと流し読みしたいので24時間電源を入れっぱなしなのですが、使っていない時間ずっとディスプレイがつきっぱなしなのは電気代がもったいない。かといって電源設定でディスプレイの電源を切る時間を設定すると、普段見たいときにいちいち画面タップするなりしないといけないので面倒。

というわけで、指定した時間にディスプレイの電源をオンオフするだけの機能を持ったタスクトレイ常駐アプリを作りました。

続きを読む

ListからSQL検索条件を生成するLINQ

.NET Core 3.1対応をしているのですが、それに伴ってEntity Framework Coreもv3にあげたところ、LINQのクライアントサイド評価が行われなくなったことでいくつかのクエリが使えなくなったため、いろいろ調べながら対応しています。

続きを読む