feat: 初始化小米 IoT (MIoT) 智能家居 Go 库

- 实现 MIoT 客户端核心功能(MQTT 连接、设备管理、属性读写)
- 支持云端 API 调用与局域网设备发现(mDNS)
- 集成国际化(i18n)多语言支持
- 添加 MIoT 设备规约解析器(spec_parser)
- 包含单元测试与使用示例
This commit is contained in:
2026-06-28 22:05:49 +08:00
parent ac442812b4
commit 3a44cb9e6a
118 changed files with 31630 additions and 0 deletions
+261
View File
@@ -0,0 +1,261 @@
data:
urn:miot-spec-v2:property:air-cooler:000000EB: open_close
urn:miot-spec-v2:property:alarm:00000012: open_close
urn:miot-spec-v2:property:anion:00000025: open_close
urn:miot-spec-v2:property:anti-fake:00000130: yes_no
urn:miot-spec-v2:property:arrhythmia:000000B4: yes_no
urn:miot-spec-v2:property:auto-cleanup:00000124: open_close
urn:miot-spec-v2:property:auto-deodorization:00000125: open_close
urn:miot-spec-v2:property:auto-keep-warm:0000002B: open_close
urn:miot-spec-v2:property:automatic-feeding:000000F0: open_close
urn:miot-spec-v2:property:blow:000000CD: open_close
urn:miot-spec-v2:property:card-insertion-state:00000106: yes_no
urn:miot-spec-v2:property:contact-state:0000007C: contact_state
urn:miot-spec-v2:property:current-physical-control-lock:00000099: open_close
urn:miot-spec-v2:property:delay:0000014F: yes_no
urn:miot-spec-v2:property:deodorization:000000C6: open_close
urn:miot-spec-v2:property:dns-auto-mode:000000DC: open_close
urn:miot-spec-v2:property:driving-status:000000B9: yes_no
urn:miot-spec-v2:property:dryer:00000027: open_close
urn:miot-spec-v2:property:eco:00000024: open_close
urn:miot-spec-v2:property:glimmer-full-color:00000089: open_close
urn:miot-spec-v2:property:guard-mode:000000B6: open_close
urn:miot-spec-v2:property:heater:00000026: open_close
urn:miot-spec-v2:property:heating:000000C7: open_close
urn:miot-spec-v2:property:horizontal-swing:00000017: open_close
urn:miot-spec-v2:property:hot-water-recirculation:0000011C: open_close
urn:miot-spec-v2:property:image-distortion-correction:0000010F: open_close
urn:miot-spec-v2:property:local-storage:0000011E: yes_no
urn:miot-spec-v2:property:motion-detection:00000056: open_close
urn:miot-spec-v2:property:motion-state:0000007D: motion_state
urn:miot-spec-v2:property:motion-tracking:0000008A: open_close
urn:miot-spec-v2:property:motor-reverse:00000072: yes_no
urn:miot-spec-v2:property:mute:00000040: open_close
urn:miot-spec-v2:property:off-delay:00000053: open_close
urn:miot-spec-v2:property:on:00000006: open_close
urn:miot-spec-v2:property:physical-controls-locked:0000001D: open_close
urn:miot-spec-v2:property:plasma:00000132: yes_no
urn:miot-spec-v2:property:preheat:00000103: open_close
urn:miot-spec-v2:property:seating-state:000000B8: yes_no
urn:miot-spec-v2:property:silent-execution:000000FB: yes_no
urn:miot-spec-v2:property:sleep-aid-mode:0000010B: open_close
urn:miot-spec-v2:property:sleep-mode:00000028: open_close
urn:miot-spec-v2:property:snore-state:0000012A: yes_no
urn:miot-spec-v2:property:soft-wind:000000CF: open_close
urn:miot-spec-v2:property:speed-control:000000E8: open_close
urn:miot-spec-v2:property:submersion-state:0000007E: yes_no
urn:miot-spec-v2:property:time-watermark:00000087: open_close
urn:miot-spec-v2:property:un-straight-blowing:00000100: open_close
urn:miot-spec-v2:property:uv:00000029: open_close
urn:miot-spec-v2:property:valve-switch:000000FE: open_close
urn:miot-spec-v2:property:ventilation:000000CE: open_close
urn:miot-spec-v2:property:vertical-swing:00000018: open_close
urn:miot-spec-v2:property:wake-up-mode:00000107: open_close
urn:miot-spec-v2:property:water-pump:000000F2: open_close
urn:miot-spec-v2:property:watering:000000CC: open_close
urn:miot-spec-v2:property:wdr-mode:00000088: open_close
urn:miot-spec-v2:property:wet:0000002A: open_close
urn:miot-spec-v2:property:wifi-band-combine:000000E0: open_close
urn:miot-spec-v2:property:wifi-ssid-hidden:000000E3: yes_no
urn:miot-spec-v2:property:wind-reverse:00000117: yes_no
translate:
default:
de:
'false': Falsch
'true': Wahr
en:
'false': 'False'
'true': 'True'
es:
'false': Falso
'true': Verdadero
fr:
'false': Faux
'true': Vrai
it:
'false': Falso
'true': Vero
ja:
'false': 偽
'true': 真
nl:
'false': 'False'
'true': 'True'
pt:
'false': 'False'
'true': 'True'
pt-BR:
'false': 'False'
'true': 'True'
ru:
'false': Ложь
'true': Истина
tr:
'false': Yanlış
'true': Doğru
zh-Hans:
'false': 假
'true': 真
zh-Hant:
'false': 假
'true': 真
contact_state:
de:
'false': Kein Kontakt
'true': Kontakt
en:
'false': No Contact
'true': Contact
es:
'false': Sin contacto
'true': Contacto
fr:
'false': Pas de contact
'true': Contact
it:
'false': Nessun contatto
'true': Contatto
ja:
'false': 非接触
'true': 接触
nl:
'false': Geen contact
'true': Contact
pt:
'false': Sem contato
'true': Contato
pt-BR:
'false': Sem contato
'true': Contato
ru:
'false': Нет контакта
'true': Контакт
tr:
'false': Temas Yok
'true': Temas
zh-Hans:
'false': 分离
'true': 接触
zh-Hant:
'false': 分離
'true': 接觸
motion_state:
de:
'false': Keine Bewegung erkannt
'true': Bewegung erkannt
en:
'false': No Motion Detected
'true': Motion Detected
es:
'false': No se detecta movimiento
'true': Movimiento detectado
fr:
'false': Aucun mouvement détecté
'true': Mouvement détecté
it:
'false': Nessun Movimento Rilevato
'true': Movimento Rilevato
ja:
'false': 動きが検出されません
'true': 動きを検知
nl:
'false': Geen contact
'true': Contact
pt:
'false': Sem contato
'true': Contato
pt-BR:
'false': Sem contato
'true': Contato
ru:
'false': Движение не обнаружено
'true': Обнаружено движение
tr:
'false': Hareket Algılanmadı
'true': Hareket Algılandı
zh-Hans:
'false': 无人
'true': 有人
zh-Hant:
'false': 無人
'true': 有人
open_close:
de:
'false': Schließen
'true': Öffnen
en:
'false': Close
'true': Open
es:
'false': Cerrado
'true': Abierto
fr:
'false': Fermer
'true': Ouvert
it:
'false': Chiuso
'true': Aperto
ja:
'false': 閉じる
'true': 開く
nl:
'false': Dicht
'true': Open
pt:
'false': Fechado
'true': Aberto
pt-BR:
'false': Fechado
'true': Aberto
ru:
'false': Закрыть
'true': Открыть
tr:
'false': Kapalı
'true': Açık
zh-Hans:
'false': 关闭
'true': 开启
zh-Hant:
'false': 關閉
'true': 開啟
yes_no:
de:
'false': Nein
'true': Ja
en:
'false': 'No'
'true': 'Yes'
es:
'false': 'No'
'true': Sí
fr:
'false': Non
'true': Oui
it:
'false': 'No'
'true': Si
ja:
'false': いいえ
'true': はい
nl:
'false': Nee
'true': Ja
pt:
'false': Não
'true': Sim
pt-BR:
'false': Não
'true': Sim
ru:
'false': Нет
'true': Да
tr:
'false': Hayır
'true': Evet
zh-Hans:
'false': 否
'true': 是
zh-Hant:
'false': 否
'true': 是
+774
View File
@@ -0,0 +1,774 @@
{
"urn:miot-spec-v2:device:bath-heater:0000A028:yeelink-v10": {
"en": {
"service:003:property:001:valuelist:000": "Idle",
"service:003:property:001:valuelist:001": "Dry"
},
"tr": {
"service:003:property:001:valuelist:000": "Boşta",
"service:003:property:001:valuelist:001": "Kurutma"
}
},
"urn:miot-spec-v2:device:electronic-valve:0000A0A7:lxzn-02": {
"tr": {
"service:004:property:001": "Yüksek Güç - Eşik Ayarı"
},
"zh-Hans": {
"service:004:property:001": "功率过高-阈值设置"
}
},
"urn:miot-spec-v2:device:electronic-valve:0000A0A7:ykcn-cbcs": {
"tr": {
"service:004:property:001": "Yüksek Güç - Eşik Ayarı",
"service:004:property:009": "Düşük Voltaj Alarmı - Eşik Ayarı"
},
"zh-Hans": {
"service:004:property:001": "功率过高-阈值设置",
"service:004:property:009": "欠压告警-阈值设置"
}
},
"urn:miot-spec-v2:device:fan:0000A005:zhimi-za1": {
"tr": {
"service:002:property:005:valuelist:000": "Doğal Rüzgar",
"service:002:property:005:valuelist:001": "Doğrudan Üfleme"
},
"zh-Hans": {
"service:002:property:005:valuelist:000": "自然风",
"service:002:property:005:valuelist:001": "直吹风"
}
},
"urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1": {
"de": {
"service:001": "Geräteinformationen",
"service:001:property:003": "Geräte-ID",
"service:001:property:005": "Seriennummer (SN)",
"service:002": "Gateway",
"service:002:event:001": "Netzwerk geändert",
"service:002:event:002": "Netzwerk geändert",
"service:002:property:001": "Zugriffsmethode",
"service:002:property:001:valuelist:000": "Kabelgebunden",
"service:002:property:001:valuelist:001": "5G Drahtlos",
"service:002:property:001:valuelist:002": "2.4G Drahtlos",
"service:002:property:002": "IP-Adresse",
"service:002:property:003": "WiFi-Netzwerkname",
"service:002:property:004": "Aktuelle Zeit",
"service:002:property:005": "DHCP-Server-MAC-Adresse",
"service:003": "Anzeigelampe",
"service:003:property:001": "Schalter",
"service:004": "Virtueller Dienst",
"service:004:action:001": "Virtuelles Ereignis erzeugen",
"service:004:event:001": "Virtuelles Ereignis aufgetreten",
"service:004:property:001": "Ereignisname"
},
"en": {
"service:001": "Device Information",
"service:001:property:003": "Device ID",
"service:001:property:005": "Serial Number (SN)",
"service:002": "Gateway",
"service:002:event:001": "Network Changed",
"service:002:event:002": "Network Changed",
"service:002:property:001": "Access Method",
"service:002:property:001:valuelist:000": "Wired",
"service:002:property:001:valuelist:001": "5G Wireless",
"service:002:property:001:valuelist:002": "2.4G Wireless",
"service:002:property:002": "IP Address",
"service:002:property:003": "WiFi Network Name",
"service:002:property:004": "Current Time",
"service:002:property:005": "DHCP Server MAC Address",
"service:003": "Indicator Light",
"service:003:property:001": "Switch",
"service:004": "Virtual Service",
"service:004:action:001": "Generate Virtual Event",
"service:004:event:001": "Virtual Event Occurred",
"service:004:property:001": "Event Name"
},
"es": {
"service:001": "Información del dispositivo",
"service:001:property:003": "ID del dispositivo",
"service:001:property:005": "Número de serie (SN)",
"service:002": "Puerta de enlace",
"service:002:event:001": "Cambio de red",
"service:002:event:002": "Cambio de red",
"service:002:property:001": "Método de acceso",
"service:002:property:001:valuelist:000": "Cableado",
"service:002:property:001:valuelist:001": "5G inalámbrico",
"service:002:property:001:valuelist:002": "2.4G inalámbrico",
"service:002:property:002": "Dirección IP",
"service:002:property:003": "Nombre de red WiFi",
"service:002:property:004": "Hora actual",
"service:002:property:005": "Dirección MAC del servidor DHCP",
"service:003": "Luz indicadora",
"service:003:property:001": "Interruptor",
"service:004": "Servicio virtual",
"service:004:action:001": "Generar evento virtual",
"service:004:event:001": "Ocurrió un evento virtual",
"service:004:property:001": "Nombre del evento"
},
"fr": {
"service:001": "Informations sur l'appareil",
"service:001:property:003": "ID de l'appareil",
"service:001:property:005": "Numéro de série (SN)",
"service:002": "Passerelle",
"service:002:event:001": "Changement de réseau",
"service:002:event:002": "Changement de réseau",
"service:002:property:001": "Méthode d'accès",
"service:002:property:001:valuelist:000": "Câblé",
"service:002:property:001:valuelist:001": "Sans fil 5G",
"service:002:property:001:valuelist:002": "Sans fil 2.4G",
"service:002:property:002": "Adresse IP",
"service:002:property:003": "Nom du réseau WiFi",
"service:002:property:004": "Heure actuelle",
"service:002:property:005": "Adresse MAC du serveur DHCP",
"service:003": "Voyant lumineux",
"service:003:property:001": "Interrupteur",
"service:004": "Service virtuel",
"service:004:action:001": "Générer un événement virtuel",
"service:004:event:001": "Événement virtuel survenu",
"service:004:property:001": "Nom de l'événement"
},
"ja": {
"service:001": "デバイス情報",
"service:001:property:003": "デバイスID",
"service:001:property:005": "シリアル番号 (SN)",
"service:002": "ゲートウェイ",
"service:002:event:001": "ネットワークが変更されました",
"service:002:event:002": "ネットワークが変更されました",
"service:002:property:001": "アクセス方法",
"service:002:property:001:valuelist:000": "有線",
"service:002:property:001:valuelist:001": "5G ワイヤレス",
"service:002:property:001:valuelist:002": "2.4G ワイヤレス",
"service:002:property:002": "IPアドレス",
"service:002:property:003": "WiFiネットワーク名",
"service:002:property:004": "現在の時間",
"service:002:property:005": "DHCPサーバーMACアドレス",
"service:003": "インジケータライト",
"service:003:property:001": "スイッチ",
"service:004": "バーチャルサービス",
"service:004:action:001": "バーチャルイベントを生成",
"service:004:event:001": "バーチャルイベントが発生しました",
"service:004:property:001": "イベント名"
},
"ru": {
"service:001": "Информация об устройстве",
"service:001:property:003": "ID устройства",
"service:001:property:005": "Серийный номер (SN)",
"service:002": "Шлюз",
"service:002:event:001": "Сеть изменена",
"service:002:event:002": "Сеть изменена",
"service:002:property:001": "Метод доступа",
"service:002:property:001:valuelist:000": "Проводной",
"service:002:property:001:valuelist:001": "5G Беспроводной",
"service:002:property:001:valuelist:002": "2.4G Беспроводной",
"service:002:property:002": "IP Адрес",
"service:002:property:003": "Название WiFi сети",
"service:002:property:004": "Текущее время",
"service:002:property:005": "MAC адрес DHCP сервера",
"service:003": "Световой индикатор",
"service:003:property:001": "Переключатель",
"service:004": "Виртуальная служба",
"service:004:action:001": "Создать виртуальное событие",
"service:004:event:001": "Произошло виртуальное событие",
"service:004:property:001": "Название события"
},
"tr": {
"service:001": "Cihaz Bilgileri",
"service:001:property:003": "Cihaz ID",
"service:001:property:005": "Seri Numarası (SN)",
"service:002": "Ağ Geçidi",
"service:002:event:001": "Ağ Değişti",
"service:002:event:002": "Ağ Değişti",
"service:002:property:001": "Erişim Yöntemi",
"service:002:property:001:valuelist:000": "Kablolu",
"service:002:property:001:valuelist:001": "5G Kablosuz",
"service:002:property:001:valuelist:002": "2.4G Kablosuz",
"service:002:property:002": "IP Adresi",
"service:002:property:003": "WiFi Ağ Adı",
"service:002:property:004": "Geçerli Zaman",
"service:002:property:005": "DHCP Sunucusu MAC Adresi",
"service:003": "Gösterge Işığı",
"service:003:property:001": "Anahtar",
"service:004": "Sanal Hizmet",
"service:004:action:001": "Sanal Olay Oluştur",
"service:004:event:001": "Sanal Olay Gerçekleşti",
"service:004:property:001": "Olay Adı"
},
"zh-Hant": {
"service:001": "設備信息",
"service:001:property:003": "設備ID",
"service:001:property:005": "序號 (SN)",
"service:002": "網關",
"service:002:event:001": "網路發生變化",
"service:002:event:002": "網路發生變化",
"service:002:property:001": "接入方式",
"service:002:property:001:valuelist:000": "有線",
"service:002:property:001:valuelist:001": "5G 無線",
"service:002:property:001:valuelist:002": "2.4G 無線",
"service:002:property:002": "IP地址",
"service:002:property:003": "WiFi網路名稱",
"service:002:property:004": "當前時間",
"service:002:property:005": "DHCP伺服器MAC地址",
"service:003": "指示燈",
"service:003:property:001": "開關",
"service:004": "虛擬服務",
"service:004:action:001": "產生虛擬事件",
"service:004:event:001": "虛擬事件發生",
"service:004:property:001": "事件名稱"
}
},
"urn:miot-spec-v2:device:lock:0000A038:loock-t2pv1": {
"tr": {
"service:003:property:1021:valuelist:000": "Kilitli",
"service:003:property:1021:valuelist:001": "Kilitli (Çocuk Kilidi)",
"service:003:property:1021:valuelist:002": "Kilitli (İçten Kilitli)",
"service:003:property:1021:valuelist:003": "Kilitli (İçten Kilitli + Çocuk Kilidi)",
"service:003:property:1021:valuelist:004": "Kilidi Açık",
"service:003:property:1021:valuelist:008": "Kapı Kapalı Değil (Zaman Aşımı)",
"service:003:property:1021:valuelist:012": "Kapı Aralık"
},
"zh-Hans": {
"service:003:property:1021:valuelist:000": "已上锁",
"service:003:property:1021:valuelist:001": "已上锁(童锁)",
"service:003:property:1021:valuelist:002": "已上锁(反锁)",
"service:003:property:1021:valuelist:003": "已上锁(反锁+童锁)",
"service:003:property:1021:valuelist:004": "已开锁",
"service:003:property:1021:valuelist:008": "门未关(门超时未关)",
"service:003:property:1021:valuelist:012": "门虚掩"
}
},
"urn:miot-spec-v2:device:plant-monitor:0000A030:hhcc-v1": {
"en": {
"service:002:property:001": "Soil Moisture"
},
"tr": {
"service:002:property:001": "Toprak Nemi",
"service:002:property:003": "Işık Yoğunluğu"
},
"zh-Hans": {
"service:002:property:001": "土壤湿度",
"service:002:property:003": "光照强度"
}
},
"urn:miot-spec-v2:device:switch:0000A003:090615-x1tpm": {
"en": {
"service:027:property:001": "Fan Switch",
"service:027:property:003": "Light Switch",
"service:027:property:004": "Fan and Light Switch"
},
"tr": {
"service:027:property:001": "Vantilatör Anahtarı",
"service:027:property:003": "Işık Anahtarı",
"service:027:property:004": "Vantilatör ve Işık Anahtarı"
}
},
"urn:miot-spec-v2:device:switch:0000A003:lumi-acn040": {
"en": {
"service:011": "Right Button On and Off",
"service:011:property:001": "Right Button On and Off",
"service:015:action:001": "Left Button Identify",
"service:016:action:001": "Middle Button Identify",
"service:017:action:001": "Right Button Identify"
},
"tr": {
"service:011": "Sağ Düğme Açma ve Kapama",
"service:011:property:001": "Sağ Düğme Açma ve Kapama",
"service:015:action:001": "Sol Düğme Tanımlama",
"service:016:action:001": "Orta Düğme Tanımlama",
"service:017:action:001": "Sağ Düğme Tanımlama"
},
"zh-Hans": {
"service:015:action:001": "左键确认",
"service:016:action:001": "中键确认",
"service:017:action:001": "右键确认"
}
},
"urn:miot-spec-v2:device:thermostat:0000A031:cubee-th123e": {
"ru": {
"service:002": "термостат",
"service:002:property:001": "выключатель",
"service:002:property:002": "режим нагрузки",
"service:002:property:002:valuelist:000": "без подогрева",
"service:002:property:002:valuelist:001": "нагрев",
"service:002:property:003": "неисправность",
"service:002:property:003:valuelist:000": "ошибка датчика",
"service:002:property:003:valuelist:001": "без ошибок",
"service:002:property:003:valuelist:002": "защита от высоких температур",
"service:002:property:003:valuelist:003": "криогенная защита",
"service:002:property:004": "режим",
"service:002:property:004:valuelist:000": "ручной режим",
"service:002:property:004:valuelist:001": "домашний режим",
"service:002:property:004:valuelist:002": "режим выхода из дома",
"service:002:property:004:valuelist:003": "автоматический режим",
"service:002:property:004:valuelist:004": "Режим сна",
"service:002:property:005": "температура цели",
"service:002:property:007": "текущая температура",
"service:004": "Пользовательские услуги",
"service:004:property:001": "детский замок",
"service:004:property:002": "тип датчика",
"service:004:property:002:valuelist:000": "внутренний датчик",
"service:004:property:002:valuelist:001": "выносной датчик",
"service:004:property:002:valuelist:002": "встроенный и внешний датчик",
"service:004:property:003": "пусковая разность температур",
"service:004:property:004": "компенсационная температура",
"service:004:property:005": "температура выносного датчика",
"service:004:property:006": "максимальная температура цели",
"service:004:property:007": "минимальная температура цели "
},
"tr": {
"service:002": "Termostat",
"service:002:property:001": "Anahtar",
"service:002:property:002": "Yük Modu",
"service:002:property:002:valuelist:000": "Isıtmasız",
"service:002:property:002:valuelist:001": "Isıtma",
"service:002:property:003": "Arıza",
"service:002:property:003:valuelist:000": "Sensör Hatası",
"service:002:property:003:valuelist:001": "Hata Yok",
"service:002:property:003:valuelist:002": "Yüksek Sıcaklık Koruması",
"service:002:property:003:valuelist:003": "Düşük Sıcaklık Koruması",
"service:002:property:004": "Mod",
"service:002:property:004:valuelist:000": "Manuel Mod",
"service:002:property:004:valuelist:001": "Ev Modu",
"service:002:property:004:valuelist:002": "Dışarıda Modu",
"service:002:property:004:valuelist:003": "Otomatik Mod",
"service:002:property:004:valuelist:004": "Uyku Modu",
"service:002:property:005": "Hedef Sıcaklık",
"service:002:property:007": "Geçerli Sıcaklık",
"service:004": "Özel Hizmetler",
"service:004:property:001": "Çocuk Kilidi",
"service:004:property:002": "Sensör Tipi",
"service:004:property:002:valuelist:000": "Dahili Sensör",
"service:004:property:002:valuelist:001": "Harici Sensör",
"service:004:property:002:valuelist:002": "Dahili ve Harici Sensör",
"service:004:property:003": "Başlangıç Sıcaklık Farkı",
"service:004:property:004": "Telafi Sıcaklığı",
"service:004:property:005": "Harici Sensör Sıcaklığı",
"service:004:property:006": "Maksimum Hedef Sıcaklık",
"service:004:property:007": "Minimum Hedef Sıcaklık"
}
},
"urn:miot-spec-v2:device:thermostat:0000A031:cubee-th123w": {
"ru": {
"service:002": "термостат",
"service:002:property:001": "выключатель",
"service:002:property:002": "режим нагрузки",
"service:002:property:002:valuelist:000": "нагрев",
"service:002:property:002:valuelist:001": "без подогрева",
"service:002:property:003": "неисправность",
"service:002:property:003:valuelist:000": "без ошибок",
"service:002:property:003:valuelist:001": "ошибка датчика",
"service:002:property:003:valuelist:002": "защита от высоких температур",
"service:002:property:003:valuelist:003": "криогенная защита",
"service:002:property:004": "режим",
"service:002:property:004:valuelist:000": "ручной режим",
"service:002:property:004:valuelist:001": "домашний режим",
"service:002:property:004:valuelist:002": "режим выхода из дома",
"service:002:property:004:valuelist:003": "автоматический режим",
"service:002:property:004:valuelist:004": "Режим сна",
"service:002:property:005": "температура цели",
"service:002:property:007": "текущая температура",
"service:004": "Пользовательские услуги",
"service:004:property:001": "детский замок",
"service:004:property:002": "тип датчика",
"service:004:property:002:valuelist:000": "внутренний датчик",
"service:004:property:002:valuelist:001": "выносной датчик",
"service:004:property:002:valuelist:002": "встроенный и внешний датчик",
"service:004:property:003": "пусковая разность температур",
"service:004:property:004": "компенсационная температура",
"service:004:property:005": "температура выносного датчика",
"service:004:property:006": "максимальная температура цели",
"service:004:property:007": "минимальная температура цели "
},
"tr": {
"service:002": "Termostat",
"service:002:property:001": "Anahtar",
"service:002:property:002": "Yük Modu",
"service:002:property:002:valuelist:000": "Isıtma",
"service:002:property:002:valuelist:001": "Isıtmasız",
"service:002:property:003": "Arıza",
"service:002:property:003:valuelist:000": "Hata Yok",
"service:002:property:003:valuelist:001": "Sensör Hatası",
"service:002:property:003:valuelist:002": "Yüksek Sıcaklık Koruması",
"service:002:property:003:valuelist:003": "Düşük Sıcaklık Koruması",
"service:002:property:004": "Mod",
"service:002:property:004:valuelist:000": "Manuel Mod",
"service:002:property:004:valuelist:001": "Ev Modu",
"service:002:property:004:valuelist:002": "Dışarıda Modu",
"service:002:property:004:valuelist:003": "Otomatik Mod",
"service:002:property:004:valuelist:004": "Uyku Modu",
"service:002:property:005": "Hedef Sıcaklık",
"service:002:property:007": "Geçerli Sıcaklık",
"service:004": "Özel Hizmetler",
"service:004:property:001": "Çocuk Kilidi",
"service:004:property:002": "Sensör Tipi",
"service:004:property:002:valuelist:000": "Dahili Sensör",
"service:004:property:002:valuelist:001": "Harici Sensör",
"service:004:property:002:valuelist:002": "Dahili ve Harici Sensör",
"service:004:property:003": "Başlangıç Sıcaklık Farkı",
"service:004:property:004": "Telafi Sıcaklığı",
"service:004:property:005": "Harici Sensör Sıcaklığı",
"service:004:property:006": "Maksimum Hedef Sıcaklık",
"service:004:property:007": "Minimum Hedef Sıcaklık"
}
},
"urn:miot-spec-v2:device:thermostat:0000A031:tofan-wk01": {
"en": {
"service:002": "Thermostat",
"service:002:property:002": "Air Conditioner Mode",
"service:004": "Air Conditioner"
},
"tr": {
"service:002": "Yerden Isıtma",
"service:002:property:002": "Klima Modu",
"service:004": "Klima"
},
"zh-Hans": {
"service:002": "地暖",
"service:004": "空调"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:ijai-v1": {
"tr": {
"service:007:property:005:valuelist:000": "Sessiz",
"service:007:property:005:valuelist:001": "Standart",
"service:007:property:005:valuelist:002": "Orta",
"service:007:property:005:valuelist:003": "Güçlü"
},
"zh-Hans": {
"service:007:property:005:valuelist:000": "安静",
"service:007:property:005:valuelist:001": "标准",
"service:007:property:005:valuelist:002": "中档",
"service:007:property:005:valuelist:003": "强力"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:narwa-001": {
"tr": {
"service:001": "Cihaz Bilgileri",
"service:002": "Pil",
"service:002:property:001": "Pil Seviyesi",
"service:003": "Robot Süpürge",
"service:003:property:001": "Çalışma Durumu",
"service:004": "Temizleme",
"service:004:property:001": "Temizlik Modu",
"service:004:property:002": "Emme Gücü",
"service:005": "Harita Yönetimi",
"service:005:property:001": "Harita Listesi",
"service:005:property:002": "Aktif Harita",
"service:005:property:003": "Harita Adı",
"service:006": "Tüketim Malzemeleri",
"service:006:property:001": "Ana Fırça Ömrü",
"service:006:property:002": "Yan Fırça Ömrü",
"service:006:property:003": "Filtre Ömrü"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:narwa-ax11": {
"tr": {
"service:001": "Cihaz Bilgileri",
"service:002": "Pil",
"service:002:property:001": "Pil Seviyesi",
"service:003": "Robot Süpürge",
"service:003:property:001": "Çalışma Durumu",
"service:004": "Temizleme",
"service:004:property:001": "Temizlik Modu",
"service:004:property:002": "Emme Gücü",
"service:005": "Harita Yönetimi",
"service:005:property:001": "Harita Listesi",
"service:005:property:002": "Aktif Harita",
"service:005:property:003": "Harita Adı",
"service:006": "Tüketim Malzemeleri",
"service:006:property:001": "Ana Fırça Ömrü",
"service:006:property:002": "Yan Fırça Ömrü",
"service:006:property:003": "Filtre Ömrü"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:roidmi-v60": {
"tr": {
"service:001": "Cihaz Bilgileri",
"service:002": "Pil",
"service:002:property:001": "Pil Seviyesi",
"service:003": "Robot Süpürge",
"service:003:property:001": "Çalışma Durumu",
"service:004": "Temizleme",
"service:004:property:001": "Temizlik Modu",
"service:004:property:002": "Emme Gücü",
"service:004:property:003": "Temizlik Süresi",
"service:004:property:004": "Temizlenen Alan",
"service:005": "Harita Yönetimi",
"service:005:property:001": "Harita Listesi",
"service:005:property:002": "Aktif Harita",
"service:005:property:003": "Harita Adı",
"service:006": "Tüketim Malzemeleri",
"service:006:property:001": "Ana Fırça Ömrü",
"service:006:property:002": "Yan Fırça Ömrü",
"service:006:property:003": "Filtre Ömrü",
"service:007": "Emme Gücü",
"service:007:property:001": "Güç Seviyesi",
"service:007:property:001:valuelist:000": "Sessiz",
"service:007:property:001:valuelist:001": "Standart",
"service:007:property:001:valuelist:002": "Orta",
"service:007:property:001:valuelist:003": "Güçlü"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:viomi-v38": {
"tr": {
"service:001": "Cihaz Bilgileri",
"service:002": "Pil",
"service:002:property:001": "Pil Seviyesi",
"service:002:property:002": "Şarj Durumu",
"service:003": "Robot Süpürge",
"service:003:property:001": "Çalışma Durumu",
"service:003:property:002": "Hata Kodu",
"service:004": "Temizleme",
"service:004:property:001": "Temizlik Modu",
"service:004:property:002": "Emme Gücü",
"service:004:property:003": "Su Seviyesi",
"service:004:property:004": "Temizlik Süresi",
"service:004:property:005": "Temizlenen Alan",
"service:005": "Tüketim Malzemeleri",
"service:005:property:001": "Ana Fırça Ömrü",
"service:005:property:002": "Yan Fırça Ömrü",
"service:005:property:003": "Filtre Ömrü",
"service:005:property:004": "Sensör Ömrü",
"service:005:property:005": "Paspas Bezi Ömrü",
"service:006": "Harita Yönetimi",
"service:006:property:001": "Harita Listesi",
"service:006:property:002": "Aktif Harita",
"service:006:property:003": "Harita Adı",
"service:006:property:004": "Harita ID",
"service:007": "Emme Gücü",
"service:007:property:001": "Güç Seviyesi",
"service:007:property:001:valuelist:000": "Sessiz",
"service:007:property:001:valuelist:001": "Standart",
"service:007:property:001:valuelist:002": "Orta",
"service:007:property:001:valuelist:003": "Güçlü",
"service:007:property:001:valuelist:004": "Maksimum",
"service:008": "Su Tankı",
"service:008:property:001": "Su Seviyesi",
"service:008:property:001:valuelist:000": "Düşük",
"service:008:property:001:valuelist:001": "Orta",
"service:008:property:001:valuelist:002": "Yüksek",
"service:009": "Bölge Temizliği",
"service:009:property:001": "Oda Seçimi",
"service:009:property:002": "Bölge Temizliği",
"service:010": "Zamanlama",
"service:010:property:001": "Zamanlayıcı",
"service:010:property:002": "Temizlik Zamanı",
"service:011": "Ses ve Bildirim",
"service:011:property:001": "Ses Seviyesi",
"service:011:property:002": "Sesli Bildirimler",
"service:012": "Gelişmiş Ayarlar",
"service:012:property:001": "Halı Modu",
"service:012:property:002": "Tekrar Geçiş",
"service:012:property:003": "Kenar Temizliği",
"service:012:property:004": "Engel Algılama"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:viomi-v5": {
"tr": {
"service:001": "Cihaz Bilgileri",
"service:002": "Pil",
"service:002:property:001": "Pil Seviyesi",
"service:002:property:002": "Şarj Durumu",
"service:003": "Robot Süpürge",
"service:003:property:001": "Çalışma Durumu",
"service:003:property:002": "Hata Kodu",
"service:004": "Temizleme",
"service:004:property:001": "Temizlik Modu",
"service:004:property:002": "Emme Gücü",
"service:004:property:003": "Su Seviyesi",
"service:004:property:004": "Temizlik Süresi",
"service:004:property:005": "Temizlenen Alan",
"service:005": "Tüketim Malzemeleri",
"service:005:property:001": "Ana Fırça Ömrü",
"service:005:property:002": "Yan Fırça Ömrü",
"service:005:property:003": "Filtre Ömrü",
"service:005:property:004": "Sensör Ömrü",
"service:005:property:005": "Paspas Bezi Ömrü",
"service:006": "Harita Yönetimi",
"service:006:property:001": "Harita Listesi",
"service:006:property:002": "Aktif Harita",
"service:006:property:003": "Harita Adı",
"service:006:property:004": "Harita ID",
"service:007": "Emme Gücü",
"service:007:property:001": "Güç Seviyesi",
"service:007:property:001:valuelist:000": "Sessiz",
"service:007:property:001:valuelist:001": "Standart",
"service:007:property:001:valuelist:002": "Orta",
"service:007:property:001:valuelist:003": "Güçlü",
"service:007:property:001:valuelist:004": "Maksimum",
"service:008": "Su Tankı",
"service:008:property:001": "Su Seviyesi",
"service:008:property:001:valuelist:000": "Düşük",
"service:008:property:001:valuelist:001": "Orta",
"service:008:property:001:valuelist:002": "Yüksek",
"service:009": "Bölge Temizliği",
"service:009:property:001": "Oda Seçimi",
"service:009:property:002": "Bölge Temizliği",
"service:010": "Zamanlama",
"service:010:property:001": "Zamanlayıcı",
"service:010:property:002": "Temizlik Zamanı",
"service:011": "Ses ve Bildirim",
"service:011:property:001": "Ses Seviyesi",
"service:011:property:002": "Sesli Bildirimler",
"service:012": "Gelişmiş Ayarlar",
"service:012:property:001": "Halı Modu",
"service:012:property:002": "Tekrar Geçiş",
"service:012:property:003": "Kenar Temizliği",
"service:012:property:004": "Engel Algılama"
}
},
"urn:miot-spec-v2:device:vacuum:0000A006:xiaomi-ov31cn": {
"ru": {
"service:002": "РП",
"service:002:action:001": "Начать подметание перед влажной уборкой",
"service:002:action:002": "Остановить уборку",
"service:002:action:003": "Остановить уборку и Домой",
"service:002:action:004": "Начать подметание",
"service:002:action:005": "Начать влажную уборку",
"service:002:action:006": "Начать подметание и влажную уборку",
"service:002:action:018": "Станция Очистка мешка от пыли",
"service:002:action:019": "Станция Очистить губку",
"service:002:action:020": "Станция Сушка воздухом",
"service:002:property:001": "ПО",
"service:002:property:002": "Статус",
"service:002:property:003": "Ошибки",
"service:002:property:004": "Режим уборки",
"service:002:property:004:valuelist:000": "Подметание",
"service:002:property:004:valuelist:001": "Влажная уборка",
"service:002:property:004:valuelist:002": "Подметание и влажная уборка",
"service:002:property:004:valuelist:003": "Подметание перед влажной уборкой",
"service:002:property:005": "Выбор зоны уборки",
"service:002:property:006": "Зона уборки",
"service:002:property:007": "Время уборки",
"service:002:property:008": "Количество уборок",
"service:002:property:008:valuelist:000": "Один раз",
"service:002:property:008:valuelist:001": "Два раза",
"service:002:property:008:valuelist:002": "Три раза",
"service:002:property:009": "Мощность уборки",
"service:002:property:009:valuelist:000": "Бесшумно",
"service:002:property:009:valuelist:001": "Стандарт",
"service:002:property:009:valuelist:002": "Интенсивно",
"service:002:property:009:valuelist:003": "Турбо",
"service:002:property:010": "Уровень смачивания губок",
"service:002:property:010:valuelist:000": "Выключено",
"service:002:property:010:valuelist:001": "Уровень 1",
"service:002:property:010:valuelist:002": "Уровень 2",
"service:002:property:010:valuelist:003": "Уровень 3",
"service:002:property:020": "Ковёр Повышение мощности на коврах",
"service:002:property:021": "Ковёр Избегать ковров",
"service:002:property:023": "Возобновления уборки после зарядки",
"service:002:property:028": "Автоматическая очистка губки",
"service:002:property:029": "Тип возвращения для очистки губки",
"service:002:property:029:valuelist:000": "По комнатам",
"service:002:property:029:valuelist:001": "По зонам",
"service:002:property:029:valuelist:002": "По времени",
"service:002:property:030": "Подача воды для очистки губок",
"service:002:property:030:valuelist:000": "Глубокая очистка губок",
"service:002:property:030:valuelist:001": "Ежедневная очистка губок",
"service:002:property:030:valuelist:002": "Экономия воды",
"service:002:property:031": "Время сушки",
"service:002:property:031:valuelist:000": "2 часа",
"service:002:property:031:valuelist:001": "3 часа",
"service:002:property:031:valuelist:002": "4 часа",
"service:002:property:032": "Автоматическая очистка от пыли",
"service:002:property:033": "Частота очистки от пыли",
"service:002:property:033:valuelist:000": "Каждый раз",
"service:002:property:033:valuelist:001": "Через раз",
"service:002:property:033:valuelist:002": "Каждый третий раз",
"service:002:property:034": "Автоматическая сушка губок",
"service:002:property:036": "Использование моющего средства",
"service:002:property:041": "Мытье губок горячей водой",
"service:002:property:049": "Запуск самоочистки",
"service:002:property:059": "Подача моющего средства",
"service:002:property:060": "Уровень смачивания губок вначале уборки",
"service:002:property:060:valuelist:000": "Ежедневное",
"service:002:property:060:valuelist:001": "Глубокое",
"service:002:property:061": "Частота возвращения для очистки губки по зонам",
"service:002:property:061:valuelist:000": "5 м²",
"service:002:property:061:valuelist:002": "8 м²",
"service:002:property:061:valuelist:001": "10 м²",
"service:002:property:061:valuelist:003": "15 м²",
"service:002:property:061:valuelist:004": "20 м²",
"service:002:property:061:valuelist:005": "25 м²",
"service:002:property:071": "Напоминание об окончании моющего средства",
"service:002:property:073": "Ковёр Параметры очистки",
"service:002:property:073:valuelist:000": "Только уборка пыли на коврах",
"service:002:property:073:valuelist:001": "Обход ковра",
"service:002:property:073:valuelist:002": "Игнорировать",
"service:002:property:073:valuelist:003": "Пересечение ковра",
"service:002:property:074": "Маршрут убоки",
"service:002:property:074:valuelist:000": "Быстрая уборка",
"service:002:property:074:valuelist:001": "Стандартная уборка",
"service:002:property:074:valuelist:002": "Тщательная уборка",
"service:002:property:075": "Стратегия обхода препятствий",
"service:002:property:075:valuelist:000": "Режим `Минимум столкновений`",
"service:002:property:075:valuelist:001": "Режим большого охвата",
"service:002:property:076": "Ковёр Глубокая очистка",
"service:002:property:077": "Ковёр Распознавание ковров",
"service:002:property:078": "Ковёр Сначала очистить ковёр",
"service:002:property:079": "Акцент на краях и углах Вращение губок",
"service:002:property:080": "Акцент на краях и углах",
"service:002:property:080:valuelist:000": "Один раз в 7 дней",
"service:002:property:080:valuelist:001": "Каждую уборку",
"service:002:property:081": "Частота возвращения для очистки губки по времени",
"service:002:property:082": "Мощность опустошения мешка от пыли",
"service:002:property:082:valuelist:000": "Бесшумно",
"service:002:property:082:valuelist:001": "Стандарт",
"service:002:property:082:valuelist:002": "Интенсивно",
"service:002:property:083": "Быстрый доступ",
"service:002:property:083:valuelist:000": "Тихая уборка",
"service:002:property:083:valuelist:001": "Глубокая очистка",
"service:002:property:083:valuelist:002": "Общие настройки",
"service:002:property:083:valuelist:003": "ИИ Режим убощика",
"service:002:property:083:valuelist:004": "Режим домашних животных",
"service:002:property:084": "Температура воды для очистки губок",
"service:002:property:084:valuelist:000": "Комнатная",
"service:002:property:084:valuelist:001": "Теплая",
"service:002:property:084:valuelist:002": "Горячая",
"service:002:property:084:valuelist:003": "Интелектуальная",
"service:002:property:091": "Акцент на краях и углах Вращение боковой щетки",
"service:002:property:092": "Повторное мытье губок",
"service:003": "Батарея",
"service:003:property:001": "Уровень заряда",
"service:003:property:002": "Состояние зарядки",
"service:003:property:002:valuelist:000": "Зарядка",
"service:003:property:002:valuelist:001": "Не заряжается",
"service:003:property:003": "Напряжение",
"service:003:action:001": "Начать зарядку",
"service:004": "Звук",
"service:004:property:001": "Тревога",
"service:004:property:002": "Громкость",
"service:005": "Блокировка кнопок",
"service:005:property:001": "Блокировка от детей",
"service:005:property:002": "Статус блокировки",
"service:006": "Идентификация",
"service:006:action:001": "Найти Робот-Пылесос",
"service:009": "Губка",
"service:009:property:002": "Оставшийся срок службы",
"service:009:action:001": "Сбросить срок службы",
"service:010": "Карта",
"service:010:property:010": "Автопереключение карты",
"service:010:property:010:valuelist:000": "Вручную",
"service:010:property:010:valuelist:001": "Автоматически",
"service:011": "Не беспокоить",
"service:012": "Щетка",
"service:012:action:001": "Сбросить срок службы",
"service:013": "Боковая щетка",
"service:013:action:001": "Сбросить срок службы",
"service:014": "Фильтр",
"service:014:action:001": "Сбросить срок службы",
"service:015": "Озвучка",
"service:017": "ИИ",
"service:018": "Моющее",
"service:018:property:001": "Количество моющего средства",
"service:018:property:002": "Подача моющего средства",
"service:018:property:003": "Уровень подачи моющего средства",
"service:018:property:003:valuelist:000": "Экономия",
"service:018:property:003:valuelist:001": "Нормально",
"service:018:property:003:valuelist:002": "Много",
"service:018:property:003:valuelist:003": "Без ограничений",
"service:019": "Одноразовый мешок",
"service:019:action:001": "Сбросить срок службы",
"service:020:action:007": "Лидар Контроль",
"service:020:property:011": "Лидар Статус"
}
}
}
File diff suppressed because it is too large Load Diff
+69
View File
@@ -0,0 +1,69 @@
urn:miot-spec-v2:device:air-conditioner:0000A004:090615-ktf:
services:
- '4'
urn:miot-spec-v2:device:air-conditioner:0000A004:759413-iez:
properties:
- '2.3'
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ma4:
properties:
- 9.*
- 13.*
- 15.*
services:
- '10'
urn:miot-spec-v2:device:airer:0000A00D:hyd-lyjpro:
properties:
- '3.2'
urn:miot-spec-v2:device:curtain:0000A00C:lumi-hmcn01:
properties:
- '5.1'
services:
- '4'
- '7'
- '8'
urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:
events:
- '2.1'
urn:miot-spec-v2:device:health-pot:0000A051:chunmi-a1:
services:
- '5'
urn:miot-spec-v2:device:light:0000A001:philips-strip3:
properties:
- '2.2'
services:
- '1'
- '3'
urn:miot-spec-v2:device:light:0000A001:yeelink-color2:
properties:
- 3.*
- '2.5'
urn:miot-spec-v2:device:light:0000A001:yeelink-dnlight2:
services:
- '3'
urn:miot-spec-v2:device:light:0000A001:yeelink-mbulb3:
services:
- '3'
urn:miot-spec-v2:device:motion-sensor:0000A014:xiaomi-pir1:
services:
- '1'
- '5'
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-l15a:
properties:
- '3.3'
- '6.1'
- '6.2'
- '6.3'
- '6.4'
urn:miot-spec-v2:device:thermostat:0000A031:tofan-wk01:
services:
- '2'
- '4'
urn:miot-spec-v2:device:vacuum:0000A006:narwa-001:
services:
- '*'
urn:miot-spec-v2:device:vacuum:0000A006:narwa-ax11:
services:
- '*'
urn:miot-spec-v2:device:vacuum:0000A006:roidmi-v60:
actions:
- '2.3'
+634
View File
@@ -0,0 +1,634 @@
urn:miot-spec-v2:device:air-condition-outlet:0000A045:lumi-mcn04:1:
prop.3.4:
format: uint8
urn:miot-spec-v2:device:air-conditioner:0000A004:daikin-k2:1:
prop.2.1:
name: ac-on
format: string
access:
- read
- notify
prop.2.2:
name: ac-mode
format: string
access:
- read
- notify
prop.3.1:
name: ac-fan-level
format: string
access:
- read
- notify
urn:miot-spec-v2:device:air-conditioner:0000A004:qdhkl-a42:1:
prop.2.2:
value-list:
- value: 1
description: Cool
- value: 2
description: Dry
- value: 4
description: Fan
- value: 8
description: Heat
- value: 9
description: Auto
- value: 10
description: Heat_cool
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c17:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c20:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c24:1:
prop.8.6:
name: power-consumption
unit: kWh
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c24:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c24:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-c35:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h09h00:4:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h40h00:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-h43h00:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m16:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m28:5:
prop.9.5:
unit: days
prop.10.6:
unit: none
prop.12.3:
unit: rpm
prop.12.11:
unit: Hz
prop.12.13:
unit: A
prop.12.14:
unit: V
prop.12.15:
unit: pascal
prop.12.17:
unit: rpm
prop.12.21:
unit: celsius
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:1: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:5: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:7: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-m9:6
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:1:
prop.10.6:
unit: none
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-mt0:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1:
prop.10.6:
unit: none
prop.3.12:
name: vertical-swing-left-up
prop.3.13:
name: vertical-swing-left-down
prop.3.14:
name: vertical-swing-right-up
prop.3.15:
name: vertical-swing-right-down
prop.3.20:
name: horizontal-swing-left
prop.3.22:
name: horizontal-swing-right
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:2: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:3: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:4: urn:miot-spec-v2:device:air-conditioner:0000A004:xiaomi-rr0r00:1
urn:miot-spec-v2:device:air-fresh:0000A012:daikin-k33:1:
prop.2.1:
name: ac-on
format: string
access:
- read
- notify
prop.2.3:
name: ac-mode
format: string
access:
- read
- notify
prop.2.5:
name: ac-fan-level
format: string
access:
- read
- notify
urn:miot-spec-v2:device:air-monitor:0000A008:cgllc-cgd1st:1:
prop.3.7:
value-range:
- -30
- 100
- 0.1
urn:miot-spec-v2:device:air-monitor:0000A008:cgllc-s1:1:
prop.2.5:
name: voc-density
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ua1a:1: urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ua1a:3
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ua1a:2: urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ua1a:3
urn:miot-spec-v2:device:air-purifier:0000A007:zhimi-ua1a:3:
prop.3.5:
expr: (src_value*6)
urn:miot-spec-v2:device:airer:0000A00D:hyd-lyjpro:1:
prop.2.3:
name: current-position-a
prop.2.8:
name: target-position-a
prop.2.9:
name: target-position-b
prop.2.11:
expr: (100-src_value)
urn:miot-spec-v2:device:airer:0000A00D:hyd-znlyj5:1:
prop.2.3:
value-range:
- 0
- 1
- 1
urn:miot-spec-v2:device:airer:0000A00D:hyd-znlyj5:2: urn:miot-spec-v2:device:airer:0000A00D:hyd-znlyj5:1
urn:miot-spec-v2:device:airer:0000A00D:mrbond-m1t:1:
prop.2.3:
name: current-position-a
urn:miot-spec-v2:device:airer:0000A00D:mrbond-m33a:1:
prop.2.3:
name: current-position-a
prop.2.11:
name: current-position-b
urn:miot-spec-v2:device:bath-heater:0000A028:mike-2:1:
prop.3.1:
name: mode-a
prop.3.11:
name: mode-b
prop.3.12:
name: mode-c
urn:miot-spec-v2:device:bath-heater:0000A028:opple-acmoto:1:
prop.5.2:
value-list:
- value: 1
description: low
- value: 128
description: medium
- value: 255
description: high
urn:miot-spec-v2:device:bath-heater:0000A028:xiaomi-s1:1:
prop.4.4:
name: fan-level-ventilation
urn:miot-spec-v2:device:curtain:0000A00C:bjkcz-kczble:1:0000D031:
prop.2.2:
name: status-a
urn:miot-spec-v2:device:dehumidifier:0000A02D:xiaomi-lite:1:
prop.3.2:
value-range:
- -30
- 100
- 0.1
urn:miot-spec-v2:device:electronic-valve:0000A0A7:lxzn-02:1:0000C833:
prop.3.1:
format: float
value-range:
- 0
- 999999
- 0.01
expr: (src_value/100)
prop.3.2:
unit: mA
prop.3.3:
format: float
value-range:
- 0
- 65535
- 0.1
expr: (src_value/10)
prop.4.1:
unit: kW
urn:miot-spec-v2:device:electronic-valve:0000A0A7:sanmei-s1:1:
prop.3.1:
format: float
value-range:
- 0
- 99999999
- 0.01
expr: round(src_value/100, 2)
prop.3.2:
format: float
value-range:
- 0
- 16777216
- 0.01
expr: round(src_value/100, 2)
prop.3.3:
format: float
value-range:
- 0
- 65535
- 0.1
expr: round(src_value/10, 1)
urn:miot-spec-v2:device:electronic-valve:0000A0A7:ykcn-cbcs:1:0000C833:
prop.3.1:
format: float
value-range:
- 0
- 99999999
- 0.01
expr: round(src_value/100, 2)
prop.3.2:
unit: mA
prop.3.3:
format: float
value-range:
- 0
- 65535
- 0.1
expr: round(src_value/10, 1)
prop.4.1:
unit: kW
urn:miot-spec-v2:device:fan:0000A005:dmaker-p33:1:
prop.2.2:
name: fan-level-a
prop.2.6:
name: fan-level
access:
- read
- write
- notify
urn:miot-spec-v2:device:fan:0000A005:dmaker-p5:1:
prop.2.4:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p43:1:
prop.2.2:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p45:1:0000D062:
prop.2.4:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p51:1:
prop.2.2:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p69:1:0000D062:
prop.2.4:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p70:1:0000D062:
prop.2.4:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:xiaomi-p76:1:0000D062:
prop.2.4:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:zhimi-sa1:3:
prop.2.2:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:zhimi-v3:3:
prop.2.2:
name: fan-level-a
urn:miot-spec-v2:device:fan:0000A005:zhimi-za4:3:
prop.2.2:
name: fan-level-a
urn:miot-spec-v2:device:gateway:0000A019:lumi-mcn001:1:
prop.2.1:
access:
- read
- notify
prop.2.2:
icon: mdi:ip
prop.2.3:
access:
- read
- notify
prop.2.5:
access:
- read
- notify
urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:1:
prop.2.1:
name: access-mode
access:
- read
- notify
prop.2.2:
name: ip-address
icon: mdi:ip
prop.2.3:
name: wifi-ssid
access:
- read
- notify
urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:2: urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:1
urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:3: urn:miot-spec-v2:device:gateway:0000A019:xiaomi-hub1:1
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:1: urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:2: urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3:
prop.3.1:
name: on-ventilation
urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:4: urn:miot-spec-v2:device:hood:0000A01B:cykj-jyj22:3
urn:miot-spec-v2:device:humidifier:0000A00E:zhimi-ca4:2:
prop.2.7:
unit: percentage
expr: round(src_value*0.83)
urn:miot-spec-v2:device:kettle:0000A009:yunmi-r3:1:
prop.3.1:
unit: ppm
urn:miot-spec-v2:device:light:0000A001:shhf-sfla10:1:
prop.8.9:
name: wind-reverse
urn:miot-spec-v2:device:light:0000A001:shhf-sfla12:1:
prop.8.11:
name: on-a
urn:miot-spec-v2:device:light:0000A001:shhf-sflt11:1:0000C802:
prop.11.14:
name: on-power
urn:miot-spec-v2:device:magnet-sensor:0000A016:linp-m1:1:
prop.2.1004:
name: contact-state
value-list:
- value: 0
description: open
- value: 1
description: closed
expr: (src_value!=1)
urn:miot-spec-v2:device:motion-sensor:0000A014:lumi-acn001:1:
prop.3.2:
access:
- read
- notify
unit: mV
urn:miot-spec-v2:device:motion-sensor:0000A014:lumi-bmgl01:1:
prop.2.2:
value-list:
- value: 0
description: 0 Seconds
- value: 2
description: 2 Minutes
- value: 5
description: 5 Minutes
urn:miot-spec-v2:device:motor-controller:0000A01D:adp-adswb4:1:0000C837:
prop.2.1:
name: motor-switch
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:1: urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:ainice-3b:2:
prop.2.5:
name: people-number
prop.2.8:
name: people-number
prop.2.11:
name: people-number
prop.2.14:
name: people-number
prop.2.17:
name: people-number
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:izq-24:2:0000C824:
prop.2.6:
unit: cm
urn:miot-spec-v2:device:occupancy-sensor:0000A0BF:linp-hb01:2:0000C824:
prop.3.3:
unit: m
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:1: urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:2: urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3
urn:miot-spec-v2:device:outlet:0000A002:chuangmi-212a01:3:
prop.5.1:
format: float
value-range:
- 0
- 65535
- 0.01
expr: round(src_value*6/1000000, 2)
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp1md:1:
prop.2.2:
format: float
value-range:
- 0
- 65535
- 0.01
expr: round(src_value/1000, 2)
prop.2.3:
format: float
value-range:
- 0
- 3000
- 0.1
expr: round(src_value/10, 1)
prop.2.4:
unit: mA
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:1: urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2:2:
prop.2.3:
format: float
value-range:
- 0
- 3000
- 0.1
expr: round(src_value/10, 1)
prop.2.4:
unit: mA
prop.3.2:
format: float
value-range:
- 0
- 65535
- 0.1
expr: round(src_value/10, 1)
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp2d:1:
prop.3.2:
unit: mA
urn:miot-spec-v2:device:outlet:0000A002:cuco-cp7pd:1:
prop.11.1:
unit: Wh
value-range:
- 0
- 65535
- 0.001
expr: (src_value*1000)
prop.11.4:
value-range:
- 0
- 10000
- 0.01
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1:
prop.11.1:
format: float
value-range:
- 0
- 65535
- 0.01
expr: round(src_value/100, 2)
urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:2: urn:miot-spec-v2:device:outlet:0000A002:cuco-v3:1
urn:miot-spec-v2:device:outlet:0000A002:giot-v8icm:1:0000C816:
prop.4.1:
unit: mWh
urn:miot-spec-v2:device:outlet:0000A002:qmi-psv3:1:0000C816:
prop.3.3:
unit: mV
prop.3.4:
unit: mA
urn:miot-spec-v2:device:outlet:0000A002:yutai-fsov8m:1:0000C816:
prop.4.1:
format: float
value-range:
- 0
- 429497
- 0.01
expr: round(src_value/10000, 2)
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:1:0000C816: urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816
urn:miot-spec-v2:device:outlet:0000A002:zimi-zncz01:2:0000C816:
prop.3.1:
format: float
value-range:
- 0
- 350000
- 0.01
expr: round(src_value/100, 2)
urn:miot-spec-v2:device:plant-monitor:0000A030:hhcc-v1:1:
prop.2.1:
name: soil-moisture
icon: mdi:watering-can
prop.2.2:
name: soil-ec
icon: mdi:sprout-outline
unit: μS/cm
urn:miot-spec-v2:device:relay:0000A03D:lumi-c2acn01:1:
prop.4.1:
unit: kWh
urn:miot-spec-v2:device:router:0000A036:xiaomi-rd08:1:
prop.2.1:
name: download-speed
icon: mdi:download
unit: B/s
prop.2.2:
name: upload-speed
icon: mdi:upload
unit: B/s
urn:miot-spec-v2:device:safe-box:0000A042:loock-v1:1:
prop.5.1:
name: contact-state
expr: (src_value!=1)
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-l04m:2:
prop.3.1:
access:
- read
- notify
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-lx04:2:
prop.3.1:
access:
- read
- notify
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-lx06:2:
prop.3.1:
access:
- read
- notify
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-x08c:2:
prop.2.1:
access:
- read
- notify
urn:miot-spec-v2:device:speaker:0000A015:xiaomi-x08e:1:
prop.3.1:
name: playing-state-a
urn:miot-spec-v2:device:switch:0000A003:090615-x1tpm:1:0000D042:
prop.27.3:
name: light-on
prop.27.4:
name: light-fan-on
urn:miot-spec-v2:device:switch:0000A003:lxzn-cbcsmj:1:0000D00D:
prop.3.1:
format: float
value-range:
- 0
- 99999999
- 0.01
expr: round(src_value/100, 2)
prop.3.2:
unit: mA
prop.3.3:
format: float
value-range:
- 0
- 65535
- 0.1
expr: round(src_value/10, 1)
urn:miot-spec-v2:device:thermostat:0000A031:suittc-wk168:1:
prop.2.3:
value-list:
- value: 1
description: '1'
- value: 2
description: '2'
- value: 3
description: '3'
- value: 4
description: '4'
- value: 5
description: '5'
- value: 6
description: '6'
- value: 7
description: '7'
- value: 8
description: '8'
- value: 9
description: '9'
- value: 10
description: '10'
- value: 11
description: '11'
- value: 12
description: '12'
- value: 13
description: '13'
- value: 14
description: '14'
- value: 15
description: '15'
- value: 16
description: '16'
urn:miot-spec-v2:device:toothbrush:0000A07E:xiaomi-p001:1:
prop.4.1041:
unit: days
urn:miot-spec-v2:device:water-purifier:0000A013:roswan-lte01:1:0000D05A:
prop.4.1:
unit: ppm
prop.4.2:
unit: ppm
urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:1:0000D05A:
prop.3.2:
unit: days
prop.3.3:
unit: days
prop.3.4:
unit: L
prop.3.5:
unit: L
prop.5.2:
unit: days
prop.5.3:
unit: days
prop.5.4:
unit: L
prop.5.5:
unit: L
urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:2:0000D05A: urn:miot-spec-v2:device:water-purifier:0000A013:xiaomi-s1200g:1:0000D05A
urn:miot-spec-v2:device:water-purifier:0000A013:yunmi-s20:1:
prop.4.1:
unit: ppm
prop.4.2:
unit: ppm
+716
View File
@@ -0,0 +1,716 @@
# -*- coding: utf-8 -*-
"""
Copyright (C) 2024 Xiaomi Corporation.
The ownership and intellectual property rights of Xiaomi Home Assistant
Integration and related Xiaomi cloud service API interface provided under this
license, including source code and object code (collectively, "Licensed Work"),
are owned by Xiaomi. Subject to the terms and conditions of this License, Xiaomi
hereby grants you a personal, limited, non-exclusive, non-transferable,
non-sublicensable, and royalty-free license to reproduce, use, modify, and
distribute the Licensed Work only for your use of Home Assistant for
non-commercial purposes. For the avoidance of doubt, Xiaomi does not authorize
you to use the Licensed Work for any other purpose, including but not limited
to use Licensed Work to develop applications (APP), Web services, and other
forms of software.
You may reproduce and distribute copies of the Licensed Work, with or without
modifications, whether in source or object form, provided that you must give
any other recipients of the Licensed Work a copy of this License and retain all
copyright and disclaimers.
Xiaomi provides the Licensed Work on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied, including, without
limitation, any warranties, undertakes, or conditions of TITLE, NO ERROR OR
OMISSION, CONTINUITY, RELIABILITY, NON-INFRINGEMENT, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE. In any event, you are solely responsible
for any direct, indirect, special, incidental, or consequential damages or
losses arising from the use or inability to use the Licensed Work.
Xiaomi reserves all rights not expressly granted to you in this License.
Except for the rights expressly granted by Xiaomi under this License, Xiaomi
does not authorize you in any form to use the trademarks, copyrights, or other
forms of intellectual property rights of Xiaomi and its affiliates, including,
without limitation, without obtaining other written permission from Xiaomi, you
shall not use "Xiaomi", "Mijia" and other words related to Xiaomi or words that
may make the public associate with Xiaomi in any form to publicize or promote
the software or hardware devices that use the Licensed Work.
Xiaomi has the right to immediately terminate all your authorization under this
License in the event:
1. You assert patent invalidation, litigation, or other claims against patents
or other intellectual property rights of Xiaomi or its affiliates; or,
2. You make, have made, manufacture, sell, or offer to sell products that knock
off Xiaomi or its affiliates' products.
Conversion rules of MIoT-Spec-V2 instance to Home Assistant entity.
"""
from homeassistant.components.sensor import SensorDeviceClass
from homeassistant.components.sensor import SensorStateClass
from homeassistant.components.event import EventDeviceClass
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
from homeassistant.const import (CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
EntityCategory, LIGHT_LUX, UnitOfEnergy,
UnitOfPower, UnitOfElectricCurrent,
UnitOfElectricPotential, UnitOfTemperature,
UnitOfPressure, PERCENTAGE)
# pylint: disable=pointless-string-statement
"""SPEC_DEVICE_TRANS_MAP
{
'<device instance name>':{
'required':{
'<service instance name>':{
'required':{
'properties': {
'<property instance name>': set<property access: str>
},
'events': set<event instance name: str>,
'actions': set<action instance name: str>
},
'optional':{
'properties': set<property instance name: str>,
'events': set<event instance name: str>,
'actions': set<action instance name: str>
}
}
},
'optional':{
'<service instance name>':{
'required':{
'properties': {
'<property instance name>': set<property access: str>
},
'events': set<event instance name: str>,
'actions': set<action instance name: str>
},
'optional':{
'properties': set<property instance name: str>,
'events': set<event instance name: str>,
'actions': set<action instance name: str>
}
}
},
'entity': str
}
}
"""
SPEC_DEVICE_TRANS_MAP: dict = {
'humidifier': {
'required': {
'humidifier': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {'mode', 'target-humidity'}
}
}
},
'optional': {
'environment': {
'required': {
'properties': {
'relative-humidity': {'read'}
}
}
}
},
'entity': 'humidifier'
},
'dehumidifier': {
'required': {
'dehumidifier': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {'mode', 'target-humidity'}
}
}
},
'optional': {
'environment': {
'required': {
'properties': {
'relative-humidity': {'read'}
}
}
}
},
'entity': 'dehumidifier'
},
'vacuum': {
'required': {
'vacuum': {
'required': {
'actions': {'start-sweep', 'stop-sweeping'},
},
'optional': {
'properties': {'status', 'fan-level'},
'actions': {
'pause-sweeping', 'continue-sweep', 'stop-and-gocharge'
}
}
}
},
'optional': {
'identify': {
'required': {
'actions': {'identify'}
}
},
'battery': {
'required': {
'actions': {
'start-charge'
}
}
}
},
'entity': 'vacuum'
},
'air-conditioner': {
'required': {
'air-conditioner': {
'required': {
'properties': {
'on': {'read', 'write'},
'mode': {'read', 'write'},
'target-temperature': {'read', 'write'}
}
},
'optional': {
'properties': {'target-humidity'}
}
}
},
'optional': {
'fan-control': {
'required': {},
'optional': {
'properties': {
'on', 'fan-level', 'horizontal-swing', 'vertical-swing'
}
}
},
'environment': {
'required': {},
'optional': {
'properties': {'temperature', 'relative-humidity'}
}
},
'air-condition-outlet-matching': {
'required': {},
'optional': {
'properties': {'ac-state'}
}
}
},
'entity': 'air-conditioner'
},
'air-condition-outlet': 'air-conditioner',
'thermostat': {
'required': {
'thermostat': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {
'target-temperature', 'mode', 'fan-level', 'temperature'
}
}
}
},
'optional': {
'environment': {
'required': {},
'optional': {
'properties': {'temperature', 'relative-humidity'}
}
}
},
'entity': 'thermostat'
},
'heater': {
'required': {
'heater': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {'target-temperature', 'heat-level'}
}
}
},
'optional': {
'environment': {
'required': {},
'optional': {
'properties': {'temperature', 'relative-humidity'}
}
}
},
'entity': 'heater'
},
'bath-heater': {
'required': {
'ptc-bath-heater': {
'required': {
'properties': {
'mode': {'read', 'write'}
}
},
'optional': {
'properties': {'target-temperature', 'temperature'}
}
}
},
'optional': {
'fan-control': {
'required': {},
'optional': {
'properties': {
'on', 'fan-level', 'horizontal-swing', 'vertical-swing'
}
}
},
'environment': {
'required': {},
'optional': {
'properties': {'temperature'}
}
}
},
'entity': 'bath-heater',
},
'electric-blanket': {
'required': {
'electric-blanket': {
'required': {
'properties': {
'on': {'read', 'write'},
'target-temperature': {'read', 'write'}
}
},
'optional': {
'properties': {'mode', 'temperature'}
}
}
},
'optional': {},
'entity': 'electric-blanket'
},
'speaker': {
'required': {
'speaker': {
'required': {
'properties': {
'volume': {'read', 'write'}
}
},
'optional': {
'properties': {'mute'}
}
},
'play-control': {
'required': {
'properties': {
'playing-state': {'read'}
},
'actions': {'play'}
},
'optional': {
'properties': {'play-loop-mode'},
'actions': {'pause', 'stop', 'next', 'previous'}
}
}
},
'optional': {},
'entity': 'wifi-speaker'
},
'television': {
'required': {
'speaker': {
'required': {
'properties': {
'volume': {'read', 'write'}
}
},
'optional': {
'properties': {'mute'}
}
},
'television': {
'required': {
'actions': {'turn-off'}
},
'optional': {
'properties': {'input-control'},
'actions': {'turn-on'}
}
}
},
'optional': {
'play-control': {
'required': {
'properties': {
'playing-state': {'read'}
}
},
'optional': {
'properties': {'play-loop-mode'},
'actions': {'play', 'pause', 'stop', 'next', 'previous'}
}
}
},
'entity': 'television'
},
'tv-box':{
'required': {
'speaker': {
'required': {
'properties': {
'volume': {'read', 'write'}
}
},
'optional': {
'properties': {'mute'}
}
},
'tv-box': {
'required': {
'actions': {'turn-off'}
},
'optional': {
'actions': {'turn-on'}
}
}
},
'optional': {
'play-control': {
'required': {
'properties': {
'playing-state': {'read'}
}
},
'optional': {
'properties': {'play-loop-mode'},
'actions': {'play', 'pause', 'stop', 'next', 'previous'}
}
}
},
'entity': 'television'
},
'watch': {
'required': {
'watch': {
'required': {
'properties': {
'longitude': {'read'},
'latitude': {'read'}
}
},
'optional': {
'properties': {'area-id'}
}
}
},
'optional': {
'battery': {
'required': {
'properties': {
'battery-level': {'read'}
}
}
}
},
'entity': 'device_tracker'
}
}
"""SPEC_SERVICE_TRANS_MAP
{
'<service instance name>':{
'required':{
'properties': {
'<property instance name>': set<property access: str>
},
'events': set<event instance name: str>,
'actions': set<action instance name: str>
},
'optional':{
'properties': set<property instance name: str>,
'events': set<event instance name: str>,
'actions': set<action instance name: str>
},
'entity': str,
'entity_category'?: str
}
}
"""
SPEC_SERVICE_TRANS_MAP: dict = {
'light': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {'mode', 'brightness', 'color', 'color-temperature'}
},
'entity': 'light'
},
'ambient-light': 'light',
'night-light': 'light',
'white-light': 'light',
'indicator-light': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {
'mode',
'brightness',
}
},
'entity': 'light',
'entity_category': EntityCategory.CONFIG
},
'fan': {
'required': {
'properties': {
'on': {'read', 'write'},
'fan-level': {'read', 'write'}
}
},
'optional': {
'properties': {'mode', 'horizontal-swing', 'wind-reverse'}
},
'entity': 'fan'
},
'fan-control': 'fan',
'ceiling-fan': 'fan',
'air-fresh': 'fan',
'air-purifier': 'fan',
'water-heater': {
'required': {
'properties': {
'on': {'read', 'write'}
}
},
'optional': {
'properties': {'temperature', 'target-temperature', 'mode'}
},
'entity': 'water_heater'
},
'curtain': {
'required': {
'properties': {
'motor-control': {'write'}
}
},
'optional': {
'properties': {'status', 'current-position', 'target-position'}
},
'entity': 'cover'
},
'window-opener': 'curtain',
'motor-controller': 'curtain',
'airer': 'curtain',
'air-conditioner': {
'required': {
'properties': {
'on': {'read', 'write'},
'mode': {'read', 'write'},
'target-temperature': {'read', 'write'}
}
},
'optional': {
'properties': {'target-humidity'}
},
'entity': 'air-conditioner'
}
}
"""SPEC_PROP_TRANS_MAP
{
'entities':{
'<entity name>':{
'format': set<str>,
'access': set<str>
}
},
'properties': {
'<property instance name>':{
'device_class': str,
'entity': str,
'state_class'?: str,
'unit_of_measurement'?: str
}
}
}
"""
SPEC_PROP_TRANS_MAP: dict = {
'entities': {
'sensor': {
'format': {'int', 'float'},
'access': {'read'}
},
'binary_sensor': {
'format': {'bool', 'int'},
'access': {'read'}
},
'switch': {
'format': {'bool'},
'access': {'read', 'write'}
}
},
'properties': {
'submersion-state': {
'device_class': BinarySensorDeviceClass.MOISTURE,
'entity': 'binary_sensor'
},
'contact-state': {
'device_class': BinarySensorDeviceClass.DOOR,
'entity': 'binary_sensor'
},
'occupancy-status': {
'device_class': BinarySensorDeviceClass.OCCUPANCY,
'entity': 'binary_sensor',
},
'temperature': {
'device_class': SensorDeviceClass.TEMPERATURE,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfTemperature.CELSIUS
},
'relative-humidity': {
'device_class': SensorDeviceClass.HUMIDITY,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': PERCENTAGE
},
'air-quality-index': {
'device_class': SensorDeviceClass.AQI,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
},
'pm2.5-density': {
'device_class': SensorDeviceClass.PM25,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
},
'pm10-density': {
'device_class': SensorDeviceClass.PM10,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
},
'pm1': {
'device_class': SensorDeviceClass.PM1,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': CONCENTRATION_MICROGRAMS_PER_CUBIC_METER
},
'atmospheric-pressure': {
'device_class': SensorDeviceClass.ATMOSPHERIC_PRESSURE,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfPressure.PA
},
'tvoc-density': {
'device_class': SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT
},
'voc-density': {
'device_class': SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT
},
'battery-level': {
'device_class': SensorDeviceClass.BATTERY,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': PERCENTAGE
},
'voltage': {
'device_class': SensorDeviceClass.VOLTAGE,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfElectricPotential.VOLT
},
'electric-current': {
'device_class': SensorDeviceClass.CURRENT,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfElectricCurrent.AMPERE
},
'illumination': {
'device_class': SensorDeviceClass.ILLUMINANCE,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': LIGHT_LUX
},
'no-one-determine-time': {
'device_class': SensorDeviceClass.DURATION,
'entity': 'sensor'
},
'has-someone-duration': 'no-one-determine-time',
'no-one-duration': 'no-one-determine-time',
'electric-power': {
'device_class': SensorDeviceClass.POWER,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfPower.WATT
},
'surge-power': {
'device_class': SensorDeviceClass.POWER,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfPower.WATT
},
'power-consumption': {
'device_class': SensorDeviceClass.ENERGY,
'entity': 'sensor',
'state_class': SensorStateClass.TOTAL_INCREASING,
'unit_of_measurement': UnitOfEnergy.KILO_WATT_HOUR
},
'power': {
'device_class': SensorDeviceClass.POWER,
'entity': 'sensor',
'state_class': SensorStateClass.MEASUREMENT,
'unit_of_measurement': UnitOfPower.WATT
}
}
}
"""SPEC_EVENT_TRANS_MAP
{
'<event instance name>': str
}
"""
SPEC_EVENT_TRANS_MAP: dict[str, str] = {
'click': EventDeviceClass.BUTTON,
'double-click': EventDeviceClass.BUTTON,
'long-press': EventDeviceClass.BUTTON,
'motion-detected': EventDeviceClass.MOTION,
'no-motion': EventDeviceClass.MOTION,
'doorbell-ring': EventDeviceClass.DOORBELL
}
SPEC_ACTION_TRANS_MAP = {}