| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """Find matching devices for the supplied dp list"""
- import json
- import sys
- from custom_components.tuya_local.helpers.device_config import (
- TuyaDeviceConfig,
- _typematch,
- )
- class FakeDevice:
- def __init__(self, dps):
- self._dps = dps
- def get_property(self, id):
- return self._dps.get(id)
- @property
- def name(self):
- return "cmdline"
- def main() -> int:
- dps = json.loads(" ".join(sys.argv[2:]))
- device = FakeDevice(dps)
- config = TuyaDeviceConfig(sys.argv[1])
- print(f"{config.primary_entity.config_id}:")
- for dp in config.primary_entity.dps():
- if dp.id not in dps.keys():
- print(f" {dp.name} missing from data")
- if not dp.optional:
- print(f">> dp {dp.id} is REQUIRED!!!!")
- elif not _typematch(dp.type, dps.get(dp.id)):
- print(
- f">> {dp.name} type MISMATCH, expected {dp.type.__name__}, got {dps.get(dp.id)}!!!"
- )
- else:
- values = dp.values(device)
- if values:
- values = f" from {values}"
- else:
- values = ""
- print(f" {dp.name}: {dp.get_value(device)}{values}")
- for entity in config.secondary_entities():
- print(f"{entity.config_id}:")
- for dp in entity.dps():
- if dp.id not in dps.keys():
- print(f" {dp.name} missing from data")
- if not dp.optional:
- print(f">> dp {dp.id} is REQUIRED!!!!")
- elif not _typematch(dp.type, dps.get(dp.id)):
- print(
- f">> {dp.name} type MISMATCH, expected {dp.type.__name__}, got {dps.get(dp.id)}!!!"
- )
- else:
- values = dp.values(device)
- if values:
- values = f" from {values}"
- else:
- values = ""
- print(f" {dp.name}: {dp.get_value(device)}{values}")
- if __name__ == "__main__":
- sys.exit(main())
|