iOS
Swift
homekit
peaks

[HomeKit対応仕様] デロンギ マルチダイナミックヒーター

De'Longhi Multi Dynamic Heater WiFi Model

主なサービス

HMServiceType 説明
Thermostat サーモスタット

主なキャラクタ

HMCharacteristicType 説明 フォーマット 書き込み
CurrentHeatingCooling 現在の冷暖房の状態 uint8 -
TargetHeatingCooling 冷暖房の目標状態 uint8
CurrentTemperature 現在の温度 float -
TargetTemperature 目標温度 float
TemperatureUnits 温度表示装置 uint8

概要

ちょっとお高くて(Apple Storeで¥84,800)試用レベルではなかなか買えないHomeKit製品の代表格かと思います。
私の知っている限りでは、一番高額なHomeKit対応製品です1

私はきちんと詳細把握していないのですが純粋にヒーターとしても高性能らしく、第3のヒーターとも言われているようです(参考)。

公開されている情報と、この機器を実際に利用しているUIデザイナーの元山さんの感覚をもとにメリットを並べると、一般的なエアコン暖房と比較して

  • 温度を一定に保つ能力が高い
  • 静か
  • 乾燥しない

といった特徴があります。
私もワークスペースで一緒に使わせていただいているわけですが、実際に稼働しているかどうかわからないくらい静かで、暖房が付いているという感覚がありません。

一方で、他の実際に利用している知り合いの感想として「あまり暖かくなっている感じがしないので、結局、石油ヒーターのほうを使っている」というものもありました。

自然に適温な空間を作りたいのか、もっと直接的に暖まりたいのかなどの好みによっても利用感が変わってくるのかもしれません。

なおHomeKitのサービスとしては主にはサーモスタットのみで、書き込み可能なキャラクタとして「暖房機能のOn/Off」「目標温度」「温度表示装置」などがあります。

また、隠し機能(というかHomeKitでは定義されていないカスタムキャラクタ)としてEco Modeなど14つのカスタムキャラクタもありますので、解析すればより細かい制御ができると思います。

暖房をOnにするには?

温度の設定はCurrentTemperature(目標温度)を上書きすれば良さそうですが、暖房をOnにするにはどうすれば良いでしょう?
この機器には他の機器によくあるPowerState(電源の状態)キャラクタがありません。

また、TargetHeatingCooling(冷暖房の目標状態)というキャラクタがありますが、この機器に冷房機能はないんですが?

といった時にはキャラクタのmetadataプロパティを参照すれば明確になることが多いです。例えばこの機器のTargetHeatingCoolingキャラクタのmetadataは以下になっていました。

プロパティ 実際の値
format uint8
units
minimumValue 0
maximumValue 1
stepValue 1
validValues
maxLength

このキャラクタのvalueには数値で0 or 1を指定できるようです。
実際に以下のコードで 1 を指定すると暖房がOnになりました。

let service = home.servicesWithTypes([HMServiceTypeThermostat])?.first
let candidates = service?.characteristics.filter { $0.characteristicType == HMCharacteristicTypeTargetHeatingCooling }

guard let targetHeatingCooling = candidates?.first else {
    return
}

targetHeatingCooling.writeValue(1) { error in
}

逆に0を指定すれば暖房はOffになります。

この機器ではvalueに指定できる最大値(maximumValue)が1になっていますが、冷房機能がサポートされていれば2も指定することができ、それにより冷房をOnにできるようです。

TmperatureUnit(温度表示装置)とは?

温度表示装置ってなに?と思いましたが、実際に以下コードでこのキャラクタのvalueを上書きするとはっきり分かりました(ちなみにこういった情報はHomeKit Accessory Protocol Specificationのドキュメントに明示されてるんですがブログなどに書いちゃいけない類のやつなので、実際にコードで叩いた結果を示します)。

let service = home.servicesWithTypes([HMServiceTypeThermostat])?.first
let candidates = service?.characteristics.filter { $0.characteristicType == HMCharacteristicTypeTemperatureUnits }

guard let temperatureUnit = candidates?.first else {
    return
}

temperatureUnit.writeValue(1) { error in
}

TmperatureUnitを0にするとディスプレイの温度の表示が摂氏になり、1を指定すると華氏になります2


まとめ

試しに使ってみるという金額ではありませんのでご購入は計画的に。この機器についてHomeKitで操作・参照できる項目は今のところどこにも公開されていないようですので、この記事の主なキャラクタも是非ご参考にいただければと思います。

自宅の子供部屋用の暖房を新設するときはこれにしようかなあという気持ち。

iOS 11 Programmingについて

この記事は「iOS 11 Programming」の 第12章 HomeKit入門とiOS 11における新機能 の中の 12.4.2 HomeKit 対応製品利用実例 への追加コンテンツ的位置付けにもなっています。
この製品がサポートするサービス(HMService)やキャラクタ(HMCharacteristic)の表など、全てこの書籍に合わせた形で掲載しております。

「iOS 11 Programming」にご興味のあるかたは是非、以下リンクからご参照ください。


iOS 11 Programming


  1. 少なくとも2018年2月8日時点で日本用に発売されているものとしては 

  2. これはHomeアプリでも切り替えられます