Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor lightToMap() and sensorToMap() #7979

Open
wants to merge 70 commits into
base: master
Choose a base branch
from

Conversation

ebaauw
Copy link
Collaborator

@ebaauw ebaauw commented Oct 18, 2024

This PR refactors the construction of the API responses to GET /lights and GET /sensorsand of web socket notifications for/lightsand/sensors`. It builds on #7961, which should be merged first.

Changes

This PR makes the following changes:

  • Set the following items as non-public, since they shouldn't be shown in the API:
    • attr/id;
    • attr/otaversion;
    • cap/bri/move_with_onoff;
    • cap/on/off_with_effect;
    • config/bri/options.
  • Change the data type to Double for the following items: Canceled for now, as this breaks the evaluation of gt and lt rule conditions on these items.
    • state/consumption and variants;
    • state/current and variants;
    • state/power;
    • state/pressure and bis;
    • state/voltage.
  • Add non-public item state/power_divisor for the IKEA INSPELNING (see IKEA INSPELNING Smart Plug with kWh meter #7948). Note that this needs to be defined in C++ for it to be used in expressions in the DDF.
  • Add ResourceItemDescriptor::toApi(), which returns a pointer to the (sub-)map and the key where the value of the corresponding item should be inserted in the API response map. Any intermediate sub-maps are created where needed. It returns a small helper class ApiAttribute containing a QVariantMap pointer (to the sub-map) and two QString (for the key and top-level key).
  • Refactor lightsToMap() and sensorsToMap():
    • Remove the need to whitelist resource items with a value that can be obtained by toVariant(). The entire multi-level map structure is now built dynamically. This leaves only two types of whitelisted resource items:
      • Those with a complex value (like config/on/startup, that's either a boolean or "default");
      • Those that are reported in a combined value (like state/xy, built from state/x and state/y).
    • Insert the public resource items from the parent device into the response. This is done before the lights or sensors resource items are processed, so these might override the parent values. In practice, this causes the following additional keys in the API response: attr/ddf_hash, attr/ddf_policy, attr/extaddress, attr/nwkaddress, cap/sleeper, and (for /sensors) state/reachable. Note that non-Zigbee sensors don't have a parent device.
    • Remove (what I believe to be) dead code:
      • Special exception for Hue App (ApiModeHue). Afaik the Hue app hasn't been working with deCONZ for a long time anyway, and there are alternatives, like Hue Essentials.
      • A hook to exclude certain items when the functions are invoked for GET /devices. Currently they aren't, and the hook would be obsolete once we move those items from the sub-devices to the device.
    • Handle needPushChange logic to support web socket notifications.
  • Refactor handleLightEvent() to leverage lightToMap().
  • Refactor handleSensorEvent() to leverage sensorToMap().
  • Change all string constants in the refactored functions to QLatin1String instances.

Discussion

  • While removing the device items from the sub devices will work brilliantly for GET, I'm not sure what the logic for the web socket notifications on those items should be. I don't think we currently do notifications on /devices? Would we want a single notification on the device level, or a separate notifications on each sub device? In the latter case, I think we would need "slave" resource items on the sub-devices to keep track of what's already been notified.
  • We might want to mark some of the device resource items as non-public?
  • Do we want to deprecate config/reachable (for /sensors) in favour of state/reachable? Same for config/alert?

Next Steps

  • Figure out how to deal with web socket notifications for device-level attributes.
  • Move following items to the device:
    • attr/lastannouced, attr/lastseen;
    • cap/otau/...;
    • cap/alerts, state/alert, config/alert: in theory these could be per endpoint (with Identify cluster);
    • state/reachable and config/reachable.

Copy link
Contributor

github-actions bot commented Oct 18, 2024

Hey @ebaauw, thanks for your pull request!

Tip

Modified bundles can be downloaded here.
Relative expire date

DDB changes

Modified

  • aeotec/WG001-Z01_range_extender.json : Range extender zi (ZAG001-C15) ✔️

  • gledopto/gl-sd-002_switch.json : Switch module (GL-SD-002) ✔️

  • lidl/hg06338.json : SilverCrest power strip 3 AC (16A) with 4 USB (HG06338) ✔️

  • philips/bridge.json : Hue bridge ✔️

  • 3A-Nue/lxn59-1s7lx1.0.json : 1 gang inline switch (ZW-EU-01) ✔️

  • sonoff/zbmini-l_relay.json : Mini Relay No Neutral (ZBMINI-L/ZBMINIL2) ✔️

  • tuya/_TYZB01_TS0011_1gang_wired_no_neutral.json : Light switch (TS0011) ✔️

  • 3A-Nue/Lxn59-2s7lX1.0.json : 2 gang inline switch (ZW-EU-02) ✔️

  • tuya/_TZ3000__TS0207_range_extender.json : Range Extender (TS0207) ✔️

  • tuya/_TZE200_amp6tsvy_wired_switch_1gang.json : Tuya 1 gang wired switch (TS0601) ✔️

  • home2link/H2L-ZBPH-RS.json : Hue Curtain Motor controller (H2L-ZBPH-RS) ✔️

  • ledvance/ledvance_plug_compact_eu_t.json : PLUG COMPACT EU T ✔️

  • neo/TS0012_Immax_smart_controller.json : Immax Smart controller (TS0012) ✔️

  • orvibo/CM10ZW.json : Dry contact (CM10ZW) ✔️

  • osram/plug_01.json : Smart+ Plug (AB3257001NJ) ✔️

  • robb_smarrt/rob_200-029-0_covering.json : Roller Shutter Switch (ROB_200-029-0) ✔️

  • sunricher/SR-ZG9080A.json : Curtain motor controller (SR-ZG9080A) ✔️

  • tuya/_TZ3000_TS0011_1gang_switch_module.json : 1 gang switch module (TS0011) ✔️

  • tuya/_TS0012_2gangs_wired_no_neutral_not_locked.json : Tuya 2 gangs wired without neutral (TS0012) ✔️

  • tuya/_TZ3000_jl7qyupf_2gangs_switch_locked.json : Wired switch 2 gangs (TS0012) ✔️

  • tuya/_TZ3000_gzvniqjb_din_rail_switch.json : DIN rail circuit breaker 63A (TO-Q-SY1-ZT) ✔️

  • tuya/_TZ3000_qewo8dlz_wired_switch_3gangs.json : Wired Switch 3 gangs (TS0013) ✔️

  • xiaomi/lumi_curtain.json : Smart Curtain Controller (ZNCLDJ11LM) ✔️

  • ikea/askvader_on_off_switch.json : Askvader On/off switch (E1836) ✔️

  • ikea/tradfri_bulb_e27_ww_clear_250lm.json : Tradfri LED bulb E27 250lm, dimmable warm white/globe clear (LED1934G3) ✔️

  • ikea/tradfri_bulb_e14_ww_clear_250lm.json : Tradfri LED bulb E14 250 lumen WW clear, dimmable (LED1935C3) ✔️

  • ikea/tradfri_control_outlet.json : Tradfri Control Outlet (E1603) ✔️

  • ikea/tradfri_bulb_gu10_ww_400lm.json : Tradfri LED bulb GU10 400 lumen, dimmable/warm white (LED1837R5) ✔️

  • ikea/tretakt_smart_plug.json : TRETAKT Smart plug (E2204) ✔️

  • ikea/tradfri_signal_repeater.json : Tradfri signal repeater (E1746) ✔️

  • moes/Moes_MS-104BZ_wired_switch_2_gangs.json : Wired Switch 2 gangs (MS-104BZ) ✔️

  • tuya/_TZ3000_2channel_module.json : 2 output module (TS0002) ✔️

  • moes/Moes_ZM-105-M_1_gang_dimmer.json : Switch (TS0601) ✔️

  • tuya/_TS130F_standard_covering_reversed.json : Standard covering (TS130F) ✔️

  • tuya/_TZ3000_hkkkuk7k_mini_switch.json : 2 output module (TS0012) ✔️

  • tuya/_TZ3000_wkr3jqmr_4channel_module.json : 4 output module (TS0004) ✔️

  • tuya/_TZE200_2wg5qrjy_valve.json : Water valve (ZX-7155-675) ✔️

  • tuya/_TZ3000_pfc7i3kt_smart_switch_3gangs_locked.json : Switch module 3 channel (TS0003) ✔️

  • wiser/dimmer_module.json : Wiser 40/300-series module dimmer (41EPBDWCLMZ/354PBDMBTZ) ✔️

  • easyaccess/easyfingertouch_doorlock.json : Keypad doorlock (Various models) ✔️

  • ikea/somrig_shortcut_button.json : Somrig shortcut button (E2213) ✔️

  • konke/3AFE280100510001_battery_switch.json : Kit pro multi function button (KPKEY) ✔️

  • legrand/Remote_switch_home_away.json : Home and Away wireless master switch celiane (064873) ✔️

  • lds/ZBT-DIMSwitch-D0000_remote.json : Wireless dimmer knob (LA-AAN-UIT-7A) ✔️

  • innr/rc_250.json : 5-key wireless remote control (RC 250) ✔️

  • legrand/wireless_scenes_command.json : Wireless 4 scenes control switch celiane (0 677 55/56/57) ✔️

  • mhcozy/ts0004.json : 4-channel dry contact smart wireless zigbee switch relay module (TS0004) ✔️

  • moes/Moes_MS-105-M_1_gang_dimmer_module.json : 1-gang dimmer module (ZM-105-M) ✔️

  • paulmann/501_34_battery_switch.json : Wall switch on/off/dimm (501.34) ✔️

  • moes/Moes_TZ3000_TS0012_2_gang_switches.json : 2 gang switches (TS0012) ✔️

  • sonoff/snzb-01p_switch_wireless.json : Wireless Switch (SNZB-01P) ✔️

  • sonoff/snzb-05p.json : SNZB-05P ✔️

  • sonoff/snzb-03.json : Water sensor ✔️

  • legrand/Remote_switch_Wakeup_sleep.json : Valena life scene switch wakeup and sleep (752x89/064884) ✔️

  • third_reality/3RSB22BZ_smart_button.json : Smart Button 3RSB22BZ ✔️

  • sunricher/zg2855-rgb_button.json : 3 in 1 zigbee push button remote (ZG2855-RGB) ✔️

  • wattle/hc-slm-1_doorlock.json : Door lock SPL smart (HC-SLM-1) ✔️

  • tuya/_TZ3000_TS011F_PowerStrip.json : Powerstrip with USB (TS011F) ✔️

  • tuya/_TZE200_9cxuhakf_wired_dimmer.json : Switch Mechanism (SSWM-DIMZ) ✔️

  • tuya/_TZE200_e3oitdyu_smart_dimmer_module.json : Smart Dimmer Module (TS0601) ✔️

  • wiser/fuga_4button_battery_switch.json : LK Fuga Wiser wireless battery 2 or 4 button switch (550D6001/WDE002906) ✔️

  • wiser/meg5113-0300_cover_controller.json : Merten Wiser cover controller (MEG5113-0300) ✔️

  • xiaomi/xiaomi_wxkg01lm_mini_switch.json : Wireless mini switch (WXKG01LM) ✔️

  • eva/powermeter.json : Meter Reader ✔️

  • ikea/tradfri_bulb_e27_ww_806lm.json : Tradfri LED bulb E27 806 lumen, smart wireless dimmable/white spectrum globe (LED1836G9) ✔️

  • ikea/tradfri_bulb_gu10_w_400lm.json : Tradfri LED bulb GU10 400 lumen, dimmable white (LED1650R5) ✔️

  • ledvance/b40_dim_z3.json : B40 DIM Z3 ✔️

  • innr/xx_110.json : Puck Light White Extension Pack and Under Cabinet Light (PL 110/UC 110) ✔️

  • osram/classic_a60_w_clear.json : Lightify LED classic A60 clear ✔️

  • osram/classic_a60_fil_dim_t.json : Smart+ filament classic dimmable A52D 6W E27 (4058075729209) ✔️

  • owon/THS317-ET_temperature_sensor.json : Temperature sensor with probe (THS317-ET) ✔️

  • sonoff/snzb-06p.json : Human presence sensor (SNZB-06P) ✔️

  • sunricher/4button_switch.json : 4 button wall switch ✔️

  • sunricher/2button_switch.json : 2 button wall switch ✔️

  • terncy/terncy_dc01_contact_sensor.json : Door sensor (TERNCY-DC01) ✔️

  • sunricher/8button_switch.json : 8 button wall switch ✔️

  • sunricher/vivares_pbc4_01.json : Push button coupler C4 (SR-ZG2833PAC-C4) ✔️

  • ubisys/c4_5504.json : Control unit (C4 (5504)) ✔️

  • tuya/_TZ3000_TS0043_3gang_remote.json : 3-gang remote (TS0043) ✔️

  • tuya/_TZ3000_TS0041_1gang_remote.json : 1-gang remote (TS0041) ✔️

  • tuya/_TZ3000_TS004F_switch.json : Scene switch (TS004F) ✔️

  • tuya/_TZ3000_TS0042_2gang_remote.json : 2-gang remote (TS0042) ✔️

  • tuya/_TZ3000_TS0044_4gang_remote.json : Tuya 4-gang remote (TS0044) ✔️

  • tuya/_TZE200_pay2byax_openclose_sensor.json : Open/close sensor (ZG-102Z/TM001-ZA/TM081) ✔️

  • xiaomi/xiaomi_dw-s03d_t1_openclose_sensor.json : T1 open/close sensor (DW-S03D) ✔️

  • xiaomi/xiaomi_sjcgq13lm_e1_wleak_sensor.json : E1 water leak sensor (SJCGQ13LM) ✔️

  • xiaomi/xiaomi_wxkg11lm_mini_switch.json : Wireless mini switch (WXKG11LM) ✔️

  • xiaomi/xiaomi_wb-r02d_t1_wireless_mini_switch.json : T1 wireless mini switch (WB-R02D) ✔️

  • adeo/ldsenk09_keyfob.json : Lexman smart compact keyfob (LDSENK09) ✔️

  • computime-salus/ss909zb_temp_sensor.json : Pipe temperature sensor (PS600) ✔️

  • develco/iomzb-110_switch_module.json : Dry contact IO-module (IOMZB-110) ✔️

  • ikea/styrbar_remote_control.json : Styrbar remote control (E2002) ✔️

  • ikea/symfonisk_sound_remote_gen2.json : Symfonisk sound remote gen2 (E2123) ✔️

  • ikea/tradfri_open_close_remote.json : Tradfri open/close remote (E1766) ✔️

  • ikea/tradfri_shortcut_button.json : Tradfri shortcut button (E1812) ✔️

  • immax/07046L_keyfob.json : Neo smart keyfob (07046L) ✔️

  • lidl/hg06668.json : Silvercrest doorbell (HG06668) ✔️

  • nodon/SIN-4-FP-21.json : Cable outlet ➰ (unvalidated)

  • tuya/_TZ3000_TS0044_4gang_remote_locked.json : 4-gang remote (TS0044) ✔️

  • sonoff/snzb-03p_motion_sensor.json : Motion sensor ✔️

  • tuya/_TZE200_dq1mfjug_smoke_sensor.json : Smoke sensor (TS0601) ✔️

  • xiaomi/lumi_sensor_wleak_aq1.json : Water leak sensor (SJCGQ11LM) ✔️

  • tuya/_TZ3000_ja5osu5g_smart_button.json : Wireless smart button (TS004) ✔️

  • xiaomi/xiaomi_lumi.curtain.agl001.json : Curtain Driver E1 (ZNCLBL01LM) ✔️

  • heiman/hs1sa_smoke_sensor.json : Smoke sensor (HS1SA) ✔️

  • danfoss/ally_temp_hum_sensor.json : Ally temperature and humidity sensor (014G2480) ✔️

  • woox/woox_r7054_remote.json : 4 gang switch (R7054) ✔️

  • heiman/hs1rc_keyfob.json : Remote controller (HS1RC) ✔️

  • hzc_electric/s900w-zg_water_leak_sensor.json : Water leak sensor (S900W-ZG) ✔️

  • iluminize/led_controller_multi_5.dim.json : LED Controller Multi 5 (DIM mode) ✔️

  • iluminize/roller_shutter_actuator_mini.json : Curtain controller (5128.10) ✔️

  • ikea/badring_water_leak_sensor.json : Badring Water leakage sensor (E2202) ✔️

  • ikea/tradfri_remote_control.json : Tradfri remote control (E1810) ✔️

  • ikea/tradfri_on_off_switch.json : Tradfri on/off switch (E1743) ✔️

  • ikea/tradfri_wireless_dimmer.json : Tradfri wireless dimmer (E1724) ✔️

  • linkind/001082_water_leak_sensor.json : Water leak sensor (LS21001) ✔️

  • legrand/Contactor.json : Contactor ✔️

  • moes/Moes_TZ3000_TS0201_temp_hum_with_LCD.json : Temperature and humidity sensor (TS0201) ✔️

  • namron/4512765_hum_temp.json : Temperature and humidity sensor (4512765/S903TH-ZG) ✔️

  • namron/4512762_open_close_sensor.json : Open/close sensor (4512762) ✔️

  • nedis/nedis_zbrc10wt.json : 4 button remote (ZBRC10WT) ✔️

  • nexentro/nexentro_blinds_actuator_mini.json : Blinds Actuator ✔️

  • orvibo/sf21_smoke_sensor.json : Smoke detector (SF21) ✔️

  • plaid_systems/ps-sprzms-slp3_soil_sensor.json : Spruce Soil sensor (PS-SPRZMS-SLP3) ✔️

  • schwaiger/zhs20_smoke_detector.json : Smoke detector (ZHS20) ✔️

  • smabit/AV201021C_door_sensor.json : Flat magnetic contact sensor (AV2010/21C) ✔️

  • tesla/TSL-SEN-TAH_multi_sensor.json : Temperature and humidity sensor (TSL-SEN-TAH) ✔️

  • sonoff/snzb-02-multisensor.json : Temperature And Humidity Sensor (SNZB-02) ✔️

  • tuya/_TYZB01_SM0201_temp_hum_sensor.json : Temperature and humidity sensor with LCD display (SM0201) ✔️

  • tuya/_TZE200_2ekuz3dz_trv.json : Under floor heating thermostat (TS0601) ✔️

  • wiser/fuga_double_relay_switch.json : LK Fuga Wiser wireless double relay (545D6514) ✔️

  • wiser/switch_1Gang.json : Merten PlusLink relay insert (MEG5161-0000) ✔️

  • woox/woox_r7052_ts0215a.json : Smart SOS button (R7052) ✔️

  • third_reality/3RTHS24BZ_multi_sensor.json : Temperature and humidity sensor with digital LCD display (3RTHS24BZ) ✔️

  • woox/woox_r7048_hum_temp_sensor.json : Temperature and Humidity Sensor (R7048) ✔️

  • woox/Woox_R7049_Smart_Smoke_Alarm.json : Smart smoke alarm (R7049) ✔️

  • woox/woox_r7060_ts0101.json : Smart garden irrigation control (R7060) ✔️

  • xiaomi/xiaomi_lywsd03mmc.json : Temperature and humidity sensor with LCD (LYWSD03MMC) ✔️

  • xiaomi/lumi_sensor_occupy.agl1.json : Presence Sensor FP1E (PS-SE03) ✔️

  • xiaomi/xiaomi_mccgq01lm_openclose_sensor.json : Open/close sensor (MCCGQ01LM) ✔️

  • xiaomi/xiaomi_mccgq14lm_e1_openclose_sensor.json : E1 open/close sensor (MCCGQ14LM) ✔️

  • xiaomi/xiaomi_mho-c401n_temp_hum_sensor.json : Temperature and humidity sensor with display (MHO-C401N) ✔️

  • Jasco-GE/GE45856_wall_switch.json : GE ZigBee in-wall smart switch (45856GE) ✔️

  • blitzwolf/bw_is4_multisensor.json : Temperature and humidity sensor with display (BW-IS4) ✔️

  • aubess/aubess_multi_sensor_TZ3000_bguser20.json : Temperature and humidity sensor (WSD500A) ✔️

  • bosch/bsd-2-smoke-alarm.json : Smoke alarm II (BSD-2) ✔️

  • bosch/plug_compact.json : Plug compact EU (BSP-FZ2) ✔️

  • bosch/bwa-1_water_sensor.json : Water alarm (BWA-1) ✔️

  • ikea/parasoll_open_close_sensor.json : Parasoll door/window sensor (E2013) ✔️

  • develco/zhemi101_external_meter_interface.json : Electricity meter interface (ZHEMI101) ✔️

  • ikea/rodret_dimmer.json : Rodret Wireless Dimmer (E2201) ✔️

  • ikea/tradfri_on_off_switch_old_fw.json : Tradfri on/off switch (E1743) ✔️

  • legrand/cable_outlet.json : Cable outlet 3000W (064879) ➰ (unvalidated)

  • linkind/ZBT-CCTLight-D0106.json : A60 LED Tunable White Bulb 800 lumen (D0106) ✔️

  • linkind/ZBT-CCTLight-M3500107.json : 4.8W GU10 Bulb Dimmable & Tunable (M3500107) ✔️

  • sengled/e1d-g73.json : Smart window and door sensor (E1D-G73) ✔️

  • mli/tint_gu10_spot_zbt-colortemperature.json : Tint GU10 spot ZBT-ColorTemperature ✔️

  • nedis/nedis_zbsm10wt_motion_sensor.json : Zigbee motion sensor (ZBSM10WT) ✔️

  • sonoff/snzb-04_open_close_sensor.json : Open/close sensor (DS01) ✔️

  • sonoff/trvzb-thermostat.json : Thermostat (TRVZB) ✔️

  • terncy/terncy_sd01.json : Smart dial (TERNCY-SD01) ✔️

  • tapestry/tapestry_presence_z1.json : Presence Z1 (THPZ1) ✔️

  • third_reality/3RMS16BZ_motion_sensor.json : Motion Sensor, Pet Friendly (3RMS16BZ) ✔️

  • third_reality/3RDS17BZ_contact_sensor.json : Contact Sensor (3RDS17BZ) ✔️

  • third_reality/3RWS18BZ_water_sensor.json : Water leak sensor (3RWS18BZ) ✔️

  • tuya/_TZ3000_i8jfiezr_temp_hum_sensor.json : Temperature and humidity sensor (TS0201) ✔️

  • tuya/_TZ3000_TS0201_temp_hum_sensor.json : Temperature and humidity sensor (TS0201) ✔️

  • tuya/_TZ3000_TS0210_vibration_sensor.json : Vibration sensor (TS0210) ✔️

  • tuya/_TZE200_TS0601_humidity_temp.json : Temperature humidity sensor (TS0601) ✔️

  • tuya/_TZB000_42ha4rsc_window_blinds.json : Window blinds (TS030F) ✔️

  • tuya/_TZE200_TS0601_mmWave_Radar.json : 2.4GHz mmWave radar with LED (TS0601) ✔️

  • tuya/_TZE200_TS0601_trv.json : Thermostat TRV (TS0601) ✔️

  • tuya/_TZE200_TS0601_humidity_temperature.json : Temperature humidity sensor (TS0601) ✔️

  • tuya/_TZE200_thbr5z34_awow__trv.json : Thermostat TRV (MS-C-4) ✔️

  • tuya/ih-k009_temp_hum_sensor.json : Temperature and Humidity Sensor (IH-K009) ✔️

  • tuya/_TZE200_bjawzodf_humidity_temp.json : Tuya multi sensor (TS0601) ✔️

  • wiser/dimmer_switch_1Gang.json : Merten Wiser 1 gang dimmer ✔️

  • wiser/contact_sensor_cct591011_as.json : LK Wiser door and windows sensor (550B1023) ✔️

  • wiser/dimmer_switch_2Gang.json : Merten Wiser 2 gang dimmer ✔️

  • wiser/fuga_dimmer_switch.json : LK Fuga Wiser Wireless Dimmer (545D6102) ✔️

  • wiser/room_thermostat_cctfr6400.json : Wiser room thermostat (CCTFR6400) ✔️

  • xiaomi/xiaomi_lumi.light.aqcn02_TunableWhite_Bulb.json : LED bulb tunable white (ZNLDP12LM) ✔️

  • xiaomi/xiaomi_mccgq11lm_openclose_sensor.json : Open/close sensor (MCCGQ11LM) ✔️

  • xiaomi/xiaomi_mfkzq01lm_cube.json : Cube (MFKZQ01LM) ✔️

  • xiaomi/xiaomi_qbkg03lm_switch.json : Double rocker switch (QBKG03LM) ✔️

  • xiaomi/xiaomi_rtcgq13lm_presence_sensor.json : High precision motion sensor (RTCGQ13LM) ✔️

  • xiaomi/xiaomi_wxkg17lm_e1_switch.json : E1 dual rocker wireless switch (WXKG17LM) ✔️

  • xiaomi/xiaomi_wxkg20lm_mini_switch.json : Wireless mini switch (WXKG20LM) ✔️

  • xiaomi/xiaomi_wrs-r02_h1_switch.json : H1 dual rocker wireless remote switch (WRS-R02) ✔️

  • develco/hmszb_temp_hum_sensor.json : Temperature and humidity sensor (HMSZB-110/HMSZB-120) ✔️

  • frient/hmszb_temp_hum_sensor.json : Temperature and humidity sensor (HMSZB-110/HMSZB-120) ✔️

  • heiman/HS3AQ_air_quality_sensor.json : Air quality monitor (HS3AQ) ✔️

  • ikea/tradfri_bulb_gu10_ws_400lm.json : Tradfri LED bulb GU10 400lm (LED1737R5) ✔️

  • lixee/zlinky_tic_historique_mono_base.json : ZLinky_TIC mode historique base ✔️

  • lixee/zlinky_tic_historique_mono_hphc.json : ZLinky_TIC mode historique HPHC ✔️

  • immax/07048L_smart_plug.json : Neo smart plug (07048L) ✔️

  • lixee/zlinky_tic_standard_mono_base.json : ZLinky_TIC mode standard base ✔️

  • namron/4512763_motion_sensor.json : Motion sensor (4512763) ✔️

  • nedis/nedis_zbds10wt.json : Smoke Sensor ✔️

  • sonoff/ck-bl702-swp-01(7020)_plug.json : Smart Plug (eWeLink) ✔️

  • sengled/e1c-nb7.json : Smart plug with power monitoring (E1C-NB7) ✔️

  • sonoff/swv_smart_water_valve.json : Smart water valve ✔️

  • third_reality/3RSP02028BZ_smart_plug.json : Smart plug (3RSP02028BZ) ✔️

  • tuya/_TZ3210_up3pngle_TS0205_smoke_sensor.json : Smoke sensor (TS0205) ✔️

  • tuya/_TZ3000_TS0203_door_sensor.json : Door window contact (TS0203) ✔️

  • tuya/_TZ3210_dse8ogfy_fingerbot.json : Adaprox fingerbot (TS0001) ✔️

  • tuya/_TZE200_TS0601_smoke_detector.json : Photoelectric smoke sensor (TS0601) ✔️

  • tuya/_TZE200_h4cgnbzg_trv.json : Saswell TRVs (TS0601) ✔️

  • tuya/_TZ3210_ncw88jfq_temp-hum-sensor.json : Temperature and humidity sensor ✔️

  • tuya/_TZE204_ac0fhfiq_energy_meter.json : BiDirectional zigbee energy meter (TS0601) ✔️

  • tuya/ih-f001_door_sensor.json : iH-F001 door window contact ✔️

  • tuya/rh3040_motion_sensor.json : Motion sensor (RH3040) ✔️

  • xiaomi/xiaomi_mfkzq11lm_t1_cube.json : T1 cube (MFKZQ11LM) ✔️

  • tuya/ts0202_presence_sensor.json : Presence sensor (TS0202) ✔️

  • xiaomi/xiaomi_qbkg04lm_switch.json : Single rocker switch (QBKG04LM) ✔️

  • xiaomi/xiaomi_wsdcgq01lm_temp_hum_sensor.json : Temperature and humidity sensor (WSDCGQ01LM) ✔️

  • develco/emizb-141_electricity_meter_interface_2.json : Electricity meter interface 2 EMIZB-141 ✔️

  • adeo/ldsenk02f_plug.json : Plug 16A ✔️

  • develco/moszb-141_motion_sensor.json : Motion sensor (MOSZB-141) ✔️

  • develco/wiszb-121_open_close_sensor.json : Entry sensor (WISZB-121) ✔️

  • dresden_elektronik/scene_switch.json : Multifunctional wireless switch (Scene switch) ✔️

  • frient/emizb-141_electricity_meter_interface_2.json : Electricity meter interface 2 EMIZB-141 ✔️

  • frient/wiszb-121_open_close_sensor.json : Entry sensor (WISZB-121) ✔️

  • heiman/hs2wd-e_smart_siren.json : Sound and flash siren (HS2WD) ✔️

  • ikea/tradfri_bulb_e14_ws_470lm.json : TRADFRI bulb E14 WS 470 lumen, dimmable white spectrum opal white (LED1835C6) ✔️

  • ikea/tradfri_bulb_e14_ws_opal_400lm.json : Tradfri LED bulb E14 400 lumen (LED1536G5) ✔️

  • ikea/tradfri_bulb_e14_ws_candle_opal_470lm.json : Tradfri LED bulb E14 470 lumen, wireless dimmable white spectrum/chandelier opal white (LED1949C5) ✔️

  • ikea/tradfri_bulb_e14_ws_opal_600lm.json : Tradfri LED bulb E14 600 lumen, dimmable white spectrum opal white (LED1733G7) ✔️

  • ikea/tradfri_bulb_e27_ws_opal_1000lm.json : Tradfri LED bulb E27 1000 lumen, dimmable white spectrum opal white (LED1732G11) ✔️

  • ikea/tradfri_motion_sensor.json : Tradfri motion sensor (E1525/E1745) ✔️

  • ikea/tradfri_bulb_e27_ws_candle_opal_1055lm.json : Tradfri LED bulb E27 1055 lumen, dimmable, white spectrum, opal white (LED2003G10) ✔️

  • lixee/zlinky_tic_histo_tri_hphc.json : ZLinky_TIC mode historique HPHC triphase ✔️

  • osram/cla60_tw.json : Smart+ classic E27 tunable white (4058075816534) ✔️

  • lixee/zlinky_tic_standard_tri_hphc.json : ZLinky_TIC mode standard HPHC triphase ✔️

  • osram/classic_b40_tw.json : Lightify Classic B40 TW ✔️

  • osram/classic_a60_tw.json : Lightify classic A 60 TW ✔️

  • osram/par16_50_tw.json : Lightify PAR16 50 TW ✔️

  • robb_smarrt/rob_200-017-0_plug.json : Smart plug 3680W (ROB_200-017-0) ✔️

  • tuya/_TZ3000_TS0207_water_leak_sensor.json : Wwater leak sensor (TS0207) ✔️

  • tuya/_TZE200_myd45weu_soil_sensor.json : Tuya Soil Sensor (TS0601) ✔️

  • tuya/_TZE284_aao3yzhs_soil_sensor.json : Tuya Soil Sensor (TS0601) ✔️

  • xiaomi/xiaomi_mfkzq12lm_t1_pro_cube.json : T1 pro cube (MFKZQ12LM) ✔️

  • xiaomi/xiaomi_ssm-u02_t1_switch.json : T1 single rocker switch no neutral wire (SSM-U02) ✔️

  • xiaomi/xiaomi_ws-euk02_h1_switch.json : H1 dual rocker switch no neutral wire (WS-EUK02) ✔️

  • centralite/motion_sensor-a.json : Motion Sensor-A ✔️

  • heiman/cosensor-em.json : COSensor-EM ✔️

  • ikea/blind.json : Blinds (FYRTUR/KADRILJ/PRAKTLYSING/TREDANSEN) ✔️

  • heiman/smartplug.json : Metering Plug (HS2SK) ✔️

  • ikea/symfonisk_sound_contoller.json : Symfonisk sound controller (E1744) ✔️

  • innr/sp_234.json : Smart plug (SP 234) ✔️

  • innr/sp_120.json : Smart plug (SP 120) ✔️

  • moes/Moes_TZE200_ztvwu4nk_thermostat.json : Thermostat for Water/Gas Boiler (BHT-002) ✔️

  • niko/170-33505_170-33605_smart_socket.json : Smart socket (170-33505/170-33605) ✔️

  • owon/ac201.json : Split A/C controller (AC201) ✔️

  • sinope/sp2610zb_smart_switch.json : Smart in-wall outlet US (SP2610ZB) ✔️

  • adeo/ldsenk08_door_vibration_sensor.json : Lexman door window sensor with vibration (LDSENK08) ✔️

  • third_reality/3RSPE01044BZ_smart_plug.json : Smart plug ✔️

  • tuya/_TZ3000_cehuw1lw_smartplug_EU.json : Standard plug (TS011F) ✔️

  • wiser/fuga_socket_outlet.json : LK Fuga Wiser wireless socket outlet 16A (545D6115) ✔️

  • wiser/smart-plug-single-16A.json : Wiser smart plug 16A (CCT711119) ✔️

  • wiser/socket-outlet-double-16A-connected.json : Elko smart socket double 16A plus PW (EKO09738) ✔️

  • wiser/wall_switch_shutter.json : Wiser Odace roller shutter switch (S520567W) ✔️

  • xiaomi/xiaomi_lumi.airrtc.agl001.json : Smart radiator thermostat E1 (SRTS-A01) ✔️

  • xiaomi/xiaomi_dcm-k01_t2_dual_relay.json : Aqara Dual Relay Module T2 (DCM-K01) ✔️

  • xiaomi/xiaomi_ws-euk01_h1_switch.json : H1 single rocker switch no neutral wire (WS-EUK01) ✔️

  • xiaomi/xiaomi_wp-p01d_h2_wall_outlet.json : Aqara wall outlet H2 EU (WP-P01D) ✔️

  • blitzwolf/bw_shp15_smart_plug.json : Power monitoring 16A 3680W EU plug (BW-SHP15) ✔️

  • develco/aqszb-110_voc_sensor.json : Air quality sensor (AQSZB-110) ✔️

  • develco/splzb-131_smart_plug.json : Smart plug mini type F - Schuko (SPLZB-131) ✔️

  • dresden_elektronik/kobold.json : Smart dimmer switch (Kobold) ✔️

  • elko/thermostat_16_a.json : Connected thermostat elko smart plus 16A (EKO07259) ✔️

  • frient/aqszb-110_voc_sensor.json : Air quality sensor (AQSZB-110) ✔️

  • frient/splzb-131_smart_plug.json : Smart plug mini (SPLZB-131/SPLZB-134/SPLZB-141) ✔️

  • ikea/tradfri_bulb_e14_w_opal_400lm.json : Tradfri LED bulb E12 400 lumen, wireless dimmable warm white, chandelier opal (LED1649C5) ✔️

  • ikea/tradfri_bulb_e27_w_opal_1000lm.json : Tradfri LED bulb E27 1000 lumen, dimmable warm white globe opal white (LED1623G12) ✔️

  • lidl/hg08673.json : SilverCrest smart plug (HG08673) ✔️

  • neo/NAS-WR01B_TS011F.json : Smart plug 16A with power monitoring EU (NAS-WR01B) ✔️

  • philips/lom007_smart_plug.json : Hue smart plug ✔️

  • stelpro/smt402ad.json : Thermostat (SMT402AD) ✔️

  • tuya/_TZ3000_TS011F_smart_plug.json : Smart plug power monitor (TS011F) ✔️

  • tuya/_TZ3000_typdpbpg_smart_plug_eu.json : Smart plug EU (TS011F) ✔️

  • tuya/_TZE200_byzdayie_din_enrgy_meter.json : Single phase 65A DIN rail smart energy meter (TS0601) ✔️

  • tuya/_TZE200_hhrtiq0x_nedis_trv.json : Nedis TRV (TS0601) ✔️

  • tuya/nous_a1z_smart_plug.json : Smart zigbee socket (A1Z) ✔️

  • wiser/itrv_thermostat.json : Wiser radiator thermostat (WV704R0A0902) ✔️

  • xiaomi/xiaomi_jtyj-gd-01lm_smoke_detector.json : Honeywell fire alarm smoke detector (JTYJ-GD-01LM/BW) ✔️

  • xiaomi/xiaomi_jtqj-bf-01lm_gas_leak_detector.json : Honeywell gas leak detector (JTQJ-BF-01LM/BW) ✔️

  • xiaomi/xiaomi_zncz12lm_smart_plug.json : Smart plug (ZNCZ12LM) ✔️

  • dresden_elektronik/lighting_switch.json : Multifunctional wireless switch (Lighting switch) ✔️

  • develco/wiszb-120_open_close_sensor.json : Entry sensor pro (WISZB-120) ✔️

  • frient/kepzb-110_keypad.json : Wireless keypad (KEPZB-110) ✔️

  • frient/wiszb-120_open_close_sensor.json : Entry sensor pro (WISZB-120) ✔️

  • namron/4512737_thermostat.json : Thermostat touch zigbee 16A (4512737/4512738) ✔️

  • xfinity/THK1_keypad.json : Security keypad ✔️

  • xiaomi/lumi_curtain_acn002.json : Roller shade driver E1 (ZNJLBL01LM) ✔️

  • xiaomi/lumi_motion_ac01.json : FP1 human presence sensor (RTCZCGQ11LM) ✔️

  • xiaomi/xiaomi_lumi.relay.c2acn01.json : 2 way control module wireless relay ✔️

  • xiaomi/xiaomi_sp-euc01_smart_plug.json : Smart plug (SP-EUC01) ✔️

  • xiaomi/xiaomi_th-s02d_t1_temp_hum_sensor.json : T1 Temperature and Humidity Sensor (TH-S02D) ✔️

  • xiaomi/xiaomi_wsdcgq11lm_temp_hum_sensor.json : Temperature and humidity sensor (WSDCGQ11LM) ✔️

  • bosch/room_thermostat2_230V.json : Room thermostat II 230V (BTH-RM230Z) ✔️

  • icasa/ICZB-IW11D.json : AC dimmer (ICZB-IW11D) ✔️

  • innr/sp_240.json : Smart plug (SP 240) ✔️

  • namron/5401395_heater.json : Panel heater ✔️

  • xiaomi/xiaomi_rtcgqq11lm_presence_sensor.json : Motion sensor (RTCGQ11LM) ✔️

  • xiaomi/lumi_vibration_aq1.json : Vibration sensor (DJT11LM) ✔️

  • xiaomi/xiaomi_ws-euk04_h1_switch.json : H1 dual rocker switch neutral wire (WS-EUK04) ✔️

  • xiaomi/xiaomi_zncz04lm_smart_plug_v24.json : Smart plug (ZNCZ04LM) ✔️

  • xiaomi/xiaomi_zncz04lm_smart_plug.json : Smart plug (ZNCZ04LM) ✔️

  • ikea/tradfri_driver_30w.json : Tradfri LED Driver for Wireless Control 30W (ICPSHC24-10EU-IL-1/ICPSHC24-10NA-IL-1) ✔️

  • ubisys/h1.json : Heating regulator (H1) ✔️

  • ubisys/s2_5502.json : Power switch (S2 (5502)) ✔️

  • ubisys/s1_5501_s1r_5601.json : Power switch (S1 (5501)/S1-R (5601)) ✔️

  • ubisys/s2r_5602.json : Power switch (S2-R (5602)) ✔️

  • tuya/_TZE200_dwcarsat_air_sensor.json : Smart Air House keeper (TS0601) ✔️

  • xiaomi/xiaomi_ws-euk03_h1_switch.json : H1 single rocker switch neutral wire (WS-EUK03) ✔️

  • develco/heszb-120_heat_detector.json : Intelligent heat alarm (HESZB-120) ✔️

  • develco/smszb-120_smoke_detector.json : Intelligent smoke alarm (SMSZB-120) ✔️

  • frient/heszb-120_heat_detector.json : Intelligent heat alarm (HESZB-120) ✔️

  • frient/smszb-120_smoke_detector.json : Intelligent smoke alarm (SMSZB-120) ✔️

  • xiaomi/xiaomi_ssm-u01_t1_switch.json : T1 single rocker switch with neutral wire (SSM-U01) ✔️

  • bosch/thermostat2.json : Thermostat II (BTH-RA) ✔️

  • ikea/vallhorn_wireless_motion_sensor.json : Vallhorn wireless motion sensor (E2134) ✔️

  • tuya/_TS0601_TZE204_qasjif9e_mmwave_radar.json : Human presence detector ceiling (TS0601) ✔️

  • tuya/_TS0601_TZE204_ijxvkhd0_mmwave_radar.json : Human presence detector wall (TS0601) ✔️

  • tuya/_TZE204_sxm7l9xa_mmwave_radar.json : Tuya human presence detector (TS0601) ✔️

  • xiaomi/lumi_airmonitor_acn01.json : TVOC Air Quality Monitor (VOCKQJK11LM) ✔️

  • xiaomi/xiaomi_rtcgq14lm_p1_presence_sensor.json : P1 presence sensor (RTCGQ14LM) ✔️

  • bosch/room_thermostat2.json : Room thermostat II (BTH-RM) ✔️

  • fireangel/co_alarm.json : Zigbee Radio Module (P-LINE) ✔️

  • fireangel/generic_alarm.json : Zigbee Radio Module (P-LINE) ✔️

  • fireangel/smoke_alarm.json : Zigbee Radio Module (P-LINE) ✔️

  • namron/4512770-4in1-MultiSensor.json : 4in1-MultiSensor ✔️

  • tuya/ZY-M100_human_breathing_presence.json : MmwRadar Human Presence Detector (TS0601) ✔️

  • tuya/_TZE200_kb5noeto_motion_sensor.json : Tuya PIR 24G Radar Sensor ✔️

  • tuya/_TZE204_laokfqwu_radar.json : MmwRadar Human Presence Detector (TS0601) ✔️

  • 3A-Nue/lxt56-ls27lx1.7.json : RGBW LED strip controller (3A12S-15) ✔️

  • bosch/bmct-slz_shutter_light_control2.json : Light and shutter control II (BMCT-SLZ) ✔️

  • greeble/jz-rgbw-z01.json : Extended color light (JZ-RGBW-Z01) ✔️

  • ikea/vindstyrka_air_quality_sensor.json : Vindstyrka air quality sensor (E2112) ✔️

  • sengled/E12-N1E.json : Soft white BR30 bulb (E12-N1E) ✔️

  • ubisys/j1r_5602.json : Cover controller (J1-R (5602)) ✔️

  • ubisys/j1_5502.json : Cover controller (J1 (5502)) ✔️

  • bosch/rfdl-zb-ms_motion_sensor.json : RADION TriTech ZB Wireless Motion Detector ✔️

  • gledopto/floodlight.json : Floodlight ✔️

  • ouellet/OTH4000-ZB.json : Smart thermostat (OTH4000-ZB) ✔️

  • philips/light_zb3_white.json : Hue white light ✔️

  • sinope/th1124zb.json : Smart thermostat for electric heating (TH1123ZB/TH1124ZB) ✔️

  • sunricher/SR-ZG9030A-MW.json : Ceiling mount microwave occupancy sensor (SR-ZG9030A-MW) ✔️

  • ubisys/ld6.json : Lighting driver (LD6) ✔️

  • tuya/_TZ3000_TS004F_smart_knob.json : Smart Knob (TS004F) ✔️

  • frient/moszb-154_motion_sensor.json : Motion sensor pro (MOSZB-154) ✔️

  • aubess/aubess_plug_TZ3000_hdopuwv6.json : Smart plug 16A EU (TS011F) ✔️

  • ikea/tradfri_bulb_e27_ws_opal_980lm.json : Tradfri LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white (LED1545G12) ✔️

  • develco/moszb-140_motion_sensor.json : Motion sensor (MOSZB-130/MOSZB-140) ✔️

  • dresden_elektronik/fls_pp3.json : Wireless electronic ballast power-PWM (FLS-PP) ✔️

  • frient/moszb-140_motion_sensor.json : Motion sensor pro (MOSZB-140) ✔️

  • osram/classic_a60_rgbw.json : Lightify classic A60 RGBW ✔️

  • blitzwolf/bw_shp13_smart_plug.json : Electricity metering 16A EU plug (BW-SHP13) ✔️

  • owon/PIR313-E_sensor_multi.json : Motion multi sensor (PIR313) ✔️

  • icasa/ICZB-IW21D.json : Zigbee Dimmer PRO ✔️

  • ikea/starkvind_air_purifier.json : Starkvind Air purifier (E2006/E2007) ✔️

  • siglis/zigfred_uno_wired_switch.json : Wall switch (zigfred uno) ✔️

  • philips/light_zll_white_ambiance.json : Hue white ambiance light ✔️

  • frient/moszb-153_motion_sensor.json : Motion sensor 2 - Pet (MOSZB-153) ✔️

  • ubisys/d1_5503_d1r_5603.json : Universal dimmer (D1 (5503)/D1-R (5603)) ✔️

  • fantem/zb003-x_multi_sensor.json : Multi sensor 4 in 1 (ZB003-X) ✔️

  • siglis/zigfred_plus_wired_switch.json : 4x dimmer switch (zigfred plus) ✔️

  • ikea/ormanas_led_strip.json : Ormanas LED lighting strip (L2112) ✔️

  • ikea/tradfri_bulb_e27_cws_opal_600lm.json : Tradfri LED bulb E27 600lm, dimmable colour and white spectrum opal white (LED1624G9) ✔️

  • mli/zbt-extendedcolor.json : Tint GU10 spot ✔️

  • xiaomi/lumi_light_acn032.json : Ceiling Light T1M (CL-L02D) ✔️

  • iluminize/led_controller_multi_5.cct.json : LED Controller Multi 5 (CCT mode) ✔️

  • danfoss/etrv0100_thermostat.json : Ally radiator thermostat (014G2461) ✔️

  • iluminize/led_controller_multi_5.rgbcct.json : LED Controller Multi 5 (RGBCCT mode) ✔️

  • iluminize/led_controller_multi_5.rgbw.json : LED Controller Multi 5 (RGBW mode) ✔️

  • philips/light_zb3_white_ambiance.json : Hue white ambiance light ✔️

  • philips/light_zll_A.json : Hue color ambiance light ✔️

  • xiaomi/lumi_light_acn132.json : LED strip T1 (LGYCDD01LM) ✔️

  • ikea/tradfri_bulb_cws_A.json : Tradfri LED bulb E27 806 lumen CWS and GU10 345 lumen CWS (LED2004G8/LED2110R3) ✔️

  • dresden_elektronik/hive.json : Portable ambient light (Phoscon Hive) ✔️

  • philips/light_zll_B.json : Hue white and color ambiance light ✔️

  • philips/light_zll_C.json : Hue white and color ambiance light ✔️

  • philips/light_zb3_C.json : Hue white and color ambiance light ✔️

  • philips/light_zb3_C_festavia.json : Hue festavia string lights ✔️

  • philips/light_zb3_C_gradient.json : Hue white and color ambiance gradient light ✔️

  • icasa/ICZB-IW21SW.json : Zigbee On/Off Switch PRO ✔️

  • lidl/hg06875.json : Parkside Smart Watering Timer (HG06875) ✔️

  • osram/lightify_indoor_flex_rgbw.json : LIGHTIFY Indoor Flex RGBW ✔️

  • ledvance/ledvance_cla60_rgbw_z3.json : CLA60 RGBW Z3 ✔️

Validation

Tip

Everything is fine !

🕥 Updated for commit 681473f

@ebaauw ebaauw requested review from SwoopX and manup October 18, 2024 14:54
@ebaauw ebaauw changed the title Refactor lightToMap() and semsorToMap() Refactor lightToMap() and sensorToMap() Oct 18, 2024
- Include top-level key in `ApiAttribute`;
- Optional `event` parameter to use separate `attr` submap.
- Optional `event` parameter to handle web socket notifications;
- `LightNode *` parameter is no longer `const`, since the `needPushChange` property of the underlying resource items will be cleared.
Leverage `lightToMap()` in `handleLightEvent()`.
ebaauw added 11 commits November 8, 2024 13:10
Fix range and description
For IKEA INSPELNING smart plug, that actually changes the divisor based on the measured power.
Change data type to Double.
Change data type to Double.
Change data type to Double.
Fix range and description
Change data type to Double.
Add RStatePowerDivisor
Add RStatePowerDivisor;
Change data type to Double for:
- RStateCurrent and variants;
- RStatePressure and bis;
- RStatePower;
- RStateVoltage.
Fix validation error.
@ebaauw
Copy link
Collaborator Author

ebaauw commented Nov 8, 2024

I resolved conflicts and validation errors after recent merges of other PRs. And I double-checked that this PR still compiles.

@manup
Copy link
Member

manup commented Feb 7, 2025

The PR now runs in my setup, fingers crossed. I have to admit it's rather hard to review. Overall I like that we get rid of ~600 lines of code.

const char *RConfigLastChangeAmount = "config/lastchange/amount";
const char *RConfigLastChangeSource = "config/lastchange/source";
const char *RConfigLastChangeTime = "config/lastchange/time";

These were changed to be nested via /, might be good to put them in above description.

For the toApi() function I'd like to propose a light weight alternative after sleeping over it, with less pointer and Qt string stuff (maybe as an PR on top of this).

@ebaauw
Copy link
Collaborator Author

ebaauw commented Feb 7, 2025

The PR now runs in my setup, fingers crossed.

I've been running it for months now.

I have to admit it's rather hard to review.

I'm open to suggestions to make it easier to review, but, I agree, this feels like open heart surgery.

Overall I like that we get rid of ~600 lines of code.

That, and it's future-proof, in that we won't need additional lines of codes for new (nested) resource items.

These were changed to be nested via /, might be good to put them in above description.

They were already nested in the API output, courtesy of the legacy code. I only changed the resource item suffix, so the nesting could be handled by sensorToMap() in the standard way, without the need to whitelist these resource items.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants