Closed5
HomeKitに対応した温湿度計を作った
ピン留めされたアイテム
モチベ
- 組み込みやってみたかった
- 毎年冬は自分の部屋の湿度が気になっていたが湿度計を買う気にはなれなかった。
- 買うならHomeKitに対応していて欲しかったが高い
- 毎年冬は自分の部屋の隅々の温度が気になっていた
- 床側と天井側の温度差、ドア側と暖房側の温度差などなど
買ったもの
ボード
- Arduino互換
- WiFiモジュール付き
- 1000円で2枚という安さ
- ピンを半田付けする必要あり
センサー
- 500円で3つという安さ
持ってたもの
- 半田付けセット
- ブレッドボード
- 固定抵抗
- ワイヤ
ボードのピンの半田付けは多分オモテウラ逆…
Arduino用 開発環境 Setup
-
C_Cpp.intelliSenseEngine
はDefaultで良いと思う…。valueとかたくさん使われてる変数名をマウスオーバーするとVSCodeが止まるようになる。 - 実行時にIDEがチラ見えするのが嫌なのでarduino-cliを使う
まずはコンソール上で動くものを
ESP8266はPIN周りがちょっと違った
21%は…
HomeKitへ接続したい
使うライブラリ
リポジトリのexampleを参考(という名のコピペ)にして
accessory.c
// example for humidity
homekit_characteristic_t g_cha_humidity
= HOMEKIT_CHARACTERISTIC_(CURRENT_RELATIVE_HUMIDITY, 0);
// Add this HOMEKIT_SERVICE if you has a HUMIDITY_SENSOR together
HOMEKIT_SERVICE(
HUMIDITY_SENSOR,
.characteristics = (homekit_characteristic_t *[]){
&g_cha_humidity,
HOMEKIT_CHARACTERISTIC(NAME, "Humidity Sensor"),
NULL
}
),
- 湿度部分のコメントアウトを外して、湿度用のアクセサリーを追加
thermo-hygrometer.ino
void my_homekit_report() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
LOG_D("%.1f °C, %.1f %%", temperature, humidity);
g_cha_current_temperature.value.float_value = temperature;
homekit_characteristic_notify(
&g_cha_current_temperature, g_cha_current_temperature.value);
g_cha_humidity.value.float_value = humidity;
homekit_characteristic_notify(&g_cha_humidity, g_cha_humidity.value);
}
-
my_homekit_report()
内に湿度の分を追加
iOS
- アクセサリを追加→その他のオプション
- Arduinoが検知され、選択すると番号の入力画面へ。下のコードの部分で指定した数字を入力します。
homekit_server_config_t g_config = {
.accessories = g_accessories,
.password = "111-11-111"
};
完成!
湿度はさらに下がった!
このスクラップは2022/01/19にクローズされました