Closed5

HomeKitに対応した温湿度計を作った

ピン留めされたアイテム
wakewake

https://github.com/ywake/thermo-hygrometer

モチベ

  • 組み込みやってみたかった
  • 毎年冬は自分の部屋の湿度が気になっていたが湿度計を買う気にはなれなかった。
    • 買うならHomeKitに対応していて欲しかったが高い
  • 毎年冬は自分の部屋の隅々の温度が気になっていた
    • 床側と天井側の温度差、ドア側と暖房側の温度差などなど

買ったもの

ボード

https://www.amazon.co.jp/dp/B07S6G6TWJ

  • Arduino互換
  • WiFiモジュール付き
  • 1000円で2枚という安さ
  • ピンを半田付けする必要あり

センサー

https://www.amazon.co.jp/dp/B07DHKZJKY

  • 500円で3つという安さ

持ってたもの

  • 半田付けセット
  • ブレッドボード
  • 固定抵抗
  • ワイヤ


ボードのピンの半田付けは多分オモテウラ逆…

wakewake

HomeKitへ接続したい

使うライブラリ
https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266

リポジトリのexampleを参考(という名のコピペ)にして
https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266/tree/master/examples/Example01_TemperatureSensor

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にクローズされました