Skip to content

Instantly share code, notes, and snippets.

@Koenkk
Last active June 20, 2026 06:29
Show Gist options
  • Select an option

  • Save Koenkk/bfd4c3d1725a2cccacc11d6ba51008ba to your computer and use it in GitHub Desktop.

Select an option

Save Koenkk/bfd4c3d1725a2cccacc11d6ba51008ba to your computer and use it in GitHub Desktop.
Zigbee2MQTT latest-dev changelog

Improvements

  • #12465 Shelly gen4: add button mode scene actions (single/double/triple/hold) (@SebiGo)
  • #12463 SONOFF SNZB-02DR2: expose temperature_sensor_select and external_temperature (@shaggyone)
  • #12448 Tuya TS130F_xbexmf8h: expose switch type (@andrei-lazarov)
  • #12434 Heiman S1RM-E: add alarm muted state at low level of alarm and pre-heating state (@Leo2442926161)
  • #12441 Tuya TS130F cover controllers: expose switch type (@andrei-lazarov)
  • #12412 Heiman: add reading temperature, humidity and co attributes during paring (@Leo2442926161)
  • #12385 Add support for Namron Zigbee Edge Thermostat (4566702/4566703/4512783/4512784) (@xses79)
  • #12411 OWON: support more variants (AC201P_019E, AC221_019E, DWS332-E) (@jacky202509)
  • #12420 Schneider Electric CCT5010-0003: add switchActions and remove support for power on behaviour (@svhelge)

Fixes

  • #32311 Docker: bump alpine from 3.23 to 3.24 (@dependabot[bot])
  • #32255 Improve zigbee2mqtt maintenance path (@quyentonndbs)
  • #32258 Republish bridge/state online when HA comes online (@kryoz-ddp)
  • #12478 Lonsonho ZB-RGBCW: fix configure failing (@andrei-lazarov)
  • #12477 NodOn FPS-4-1-00 and SIN-4-FP-20: add missing endpoint (@nthiers)
  • #12471 Tongou TO-Q-SYS-JZT: allow changing control_mode (@andrei-lazarov)
  • #32348 Tuya _TZ3000_excgg5kb: expose switch_type (@Koenkk)
  • #12470 Tuya TS0601_3gang_rkbxtclc: fix individual channel control (@andrei-lazarov)
  • #12472 Tuya: fix localTempCalibration1 decode for offsets above 5.5 °C (@stackdiver)
  • #12464 Namron 4512791: Write min/max brightness and dimming speed to device (@xses79)
  • #12466 Tongou TO-Q-SYS-JZT: expose control_mode (@Romulas-12)
  • #12460 Tuya _TZ3000_9ni6xxld: poll electrical measurements (@lebdim)
  • #12462 Wyze: fix hourly false locked state (@dkneeland)
  • #12452 Inovelli: immediately clear notificationComplete events (@wingrunr21)
  • #12433 Acova Alcantara 3: add back local_temperature (@DeadlockState)
  • #12436 BTicino K4027C/L4027C/N4027C/NT4027C: add new hardware version (@matitalatina)
  • #32306 Tuya TYBAC-006: fix current_heating_setpoint step size (@Koenkk)
  • #12438 Wyze WLCKG1: fix lock state reporting (@dkneeland)
  • #12430 Eurotronic COZB0001: add custom attributes to HVAC thermostat cluster (@svhelge)
  • #12421 Legrand ZLGP14/ZLGP15/ZLGP16: disable OTA support (@alexhk)
  • #12429 Plugwise: enable write access for custom attributes (@svhelge)
  • #31958 Tuya TS0505B_2: color not controllable (@Koenkk)
  • #12431 Tuya TS0601_dimmer_1_gang_1: suppress stale periodic state report (@EdeMeijer)
  • #12424 Tuya water level sensors: expose features and fix units (@andrei-lazarov)
  • #32059 Aqara DS-K02D/DS-K02E: fix ghost events (@Koenkk)
  • #12415 AVATTO TS0601_thermostat_14: fix battery low state (@andrei-lazarov)
  • #12414 Legrand 067755: fix description (@alexhk)
  • #12413 Schneider Electric S320522W: fix configure failing (@svhelge)
  • #12266 Shelly S4SN-0071A: fix configure failing (@Koenkk)
  • #1779 Zboss: emit disconnected on unexpected port close (@tostmann)
  • #1780 Zoh: prioritize 16-bit address for ZCL to match waitress logic (@tostmann)

Windfront

Frontend

New supported devices

This release adds support for 18 devices:

  • #12475 HT-SLM-3 Heimgard Technologies Entry (PIN/RFID) door lock (@oddeirik)
  • #12451 _TZ3210_qlmnxmac Melery 2 gang power point with power monitoring (@phyzical)
  • #12197 1241754 SOMFY Sonesse 28 WF roller shades (external battery) (@alex-oswald)
  • #12457 CK-TLSR8656-SS5-02(7014) eWeLink Temperature & humidity sensor (@wildrun0)
  • #12453 EKVZ-T1016 EKAZA Vibration sensor (@luyzfernando08)
  • #12458 MG3-5RZ eWeLink Zigbee human presence radar (5.8 GHz) (@MajiamiQ)
  • #12456 T20S3Z ORVIBO MixSwitch 3 gangs (@Nerivec)
  • #12437 929003812701 Philips Hue Xamento White and Color Ambiance GU10 (Black) (@pieterb26)
  • #12445 929004308301 Philips Hue Turaco outdoor wall light (@mrtncode)
  • #12442 KS-604S Mifra 2 gang wall outlet, with USB (@edestecd)
  • #12427 msh.ina226 MySmartHouse MSH 9-26V, 5A DC Power Meter (@Fiery-Fenix)
  • #12427 msh.ina226m MySmartHouse MSH 9-26V, 5A DC Power Meter, with CPU temperature support (@Fiery-Fenix)
  • #12427 msh.pzem MySmartHouse MSH 100A AC DIN Power Meter (@Fiery-Fenix)
  • #12427 msh.pzem.dc MySmartHouse MSH 9-30V, 50-300A DC Power Meter (@Fiery-Fenix)
  • #12435 S4DM-0010WW Shelly Dimmer 0/1-10V PM Gen4 (@dwtaylornz)
  • #12423 929004611301 Philips Hue Xamento White and Color Ambiance GU10 (white) (@Sjrd83)
  • #12406 SSWQD22LM Aqara Spotlight T2 Pro (@yhbyhb)
  • #12408 929004308401 Philips Hue White and Color Ambiance Lucca Outdoor wall light (@ArtjomE)

Fixed device detections

  • #12473 Detect _TZ3008_1a8m8wd6 as Nous A7Z (@andrei-lazarov)
  • #12474 Detect `_TZE284_kv1nvirl as Tongou TOQCB2-80 (@CelerPi)
  • #12476 Detect _TZE28C1000000_jtbgusdc as AVATTO ZDMS16-2 (@andrei-lazarov)
  • #12468 Detect _TZ3000_ky0fq4ho as Tuya TS011F_din_smart_relay_polling (@pss34)
  • #12467 Detect _TZE284_xpq2rzhq as Moes ZSS-QY-HP (@chindrisadrian)
  • #12447 Detect _TZ3210_wts1g2oh as Tuya TS0004_switch_module_2 (@andrei-lazarov)
  • #12455 Detect _TZE2841000000_nhgdf6qr as Tuya TS0601_soil_3 (@Sedreco)
  • #12461 Detect _TZE2841000000_tgrzpqf4 as Tuya TS0601_soil_3 (@mainmind83)
  • #32327 Detect LCX024 as Phililps 929004581901 (@Koenkk)
  • #12443 Detect _TZ3000_pftj0i7z as Tuya TS004F (@gwurb)
  • #32313 Detect _TZE28C1000000_z5jz7wpo as Tuya TS0601_fan_switch (@Koenkk)
  • #12426 Detect _TZ3000_9tg32trw as Tuya TS011F_3_gang (@edestecd)
  • #12422 Detect _TZ3000_gsat0axs as Tuya TS0001_power (@andrei-lazarov)
  • #12405 Detect _TZ3000_ovbvmhiq as Tuya TS0726_1_gang (@chou0706)
  • #27819 Detect _TZE284_qtnjuoae as RTX ZVG1 (@Koenkk)

Changelog generator error

@BelkinDzmitry

Copy link
Copy Markdown

Hello! I have 4 gang+2 scene (6 buttons) switch.
Not supported yet. Can you add it?

zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE200_mk3mlurj',
description: 'CombZSwitch4A2',

@bugac

bugac commented Sep 24, 2025

Copy link
Copy Markdown

Please add to supported list:

https://www.aliexpress.com/item/1005009024318979.html

`const {iasZoneAlarm, temperature, humidity, battery, illuminance} = require('zigbee-herdsman-converters/lib/modernExtend');

const definition = {
zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE200_rhgsbacq',
description: 'Automatically generated definition',
extend: [iasZoneAlarm({"zoneType":"generic","zoneAttributes":["alarm_1","alarm_2","tamper","battery_low"]}), temperature(), humidity(), battery(), illuminance()],
meta: {},
};

module.exports = definition;`

image

@MattiaMarchiorato

Copy link
Copy Markdown

Hi purchased this Zigbee Room Thermostat recently and unfortunately it's not currently supported https://www.aliexpress.com/item/1005007126805419.html?spm=a2g0o.order_list.order_list_main.28.6b2c18024rzB2W Zigbee Model: TS0601 Zigbee Manufacturer: _TZE284_zjhoqbrd Hope it can be added and I'm struggling to sort out a work around Regards Graham

i have the same problem

@xion2000

Copy link
Copy Markdown

Hi purchased this Zigbee Room Thermostat recently and unfortunately it's not currently supported https://www.aliexpress.com/item/1005007126805419.html?spm=a2g0o.order_list.order_list_main.28.6b2c18024rzB2W Zigbee Model: TS0601 Zigbee Manufacturer: _TZE284_zjhoqbrd Hope it can be added and I'm struggling to sort out a work around Regards Graham

i have the same problem

I've managed to get it working with zigbee2mqtt using an external converter

I named to file "_TZE284_zjhoqbrd.js"
then put it in /homeassistant/zigbee2mqtt/external_converters/

Below is the contents of the .js file

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const modernExtend = require('zigbee-herdsman-converters/lib/modernExtend');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
// Since a lot of Tuya devices use the same modelID, but use different datapoints
// it's necessary to provide a fingerprint instead of a zigbeeModel
fingerprint: [
{
// The model ID from: Device with modelID 'TS0601' is not supported
// You may need to add \u0000 at the end of the name in some cases
modelID: 'TS0601',
// The manufacturer name from: Device with modelID 'TS0601' is not supported.
manufacturerName: '_TZE284_zjhoqbrd',
},
],
model: 'TS0601_ZWT198',
vendor: 'Tuya',
icon: '/icons/ts0601_zwt198.jpg',
description: 'Central Heating Thermostat',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
onEvent: tuya.onEventSetTime, // Add this if you are getting no converter for 'commandMcuSyncTime'
configure: tuya.configureMagicPacket,
exposes: [
e.binary("factory_reset", ea.STATE_SET, "ON", "OFF").withDescription("Full factory reset, use with caution!"),
e.child_lock(),
e.temperature_sensor_select(["internal", "external", "both"]),
e
.climate()
.withSystemMode(["off", "heat"], ea.STATE_SET)
.withPreset(["manual", "auto", "temporary_manual"])
.withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
.withRunningState(["idle", "heat"], ea.STATE)
.withLocalTemperature(ea.STATE)
.withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET),
e.binary("frost_protection", ea.STATE_SET, "ON", "OFF").withDescription("Antifreeze function"),
e
.max_temperature_limit()
.withUnit("°C")
.withValueMin(15)
.withValueMax(90)
.withValueStep(0.5)
.withPreset("default", 60, "Default value")
.withDescription("Maximum upper temperature"),
e
.numeric("deadzone_temperature", ea.STATE_SET)
.withUnit("°C")
.withValueMax(10)
.withValueMin(0.1)
.withValueStep(0.1)
.withPreset("default", 1, "Default value")
.withDescription("The delta between local_temperature (5<t<35)and current_heating_setpoint to trigger Heat"),
e.enum("backlight_mode", ea.STATE_SET, ["off", "low", "medium", "high"]).withDescription("Intensity of the backlight"),
e.enum("working_day", ea.STATE_SET, ["disabled", "6-1", "5-2", "7"]).withDescription("Workday setting"),
e.text("schedule_weekday", ea.STATE_SET).withDescription("Workdays (6 times hh:mm/cc.c°C)"),
e
.text("schedule_holiday", ea.STATE_SET)
.withDescription("Holidays (2 times hh:mm/cc.c°C)"),
// ============== exposes for found, but not functional datapoints:
/*
e.min_temperature_limit() // dp 16
.withValueMin(5)
.withValueMax(15)
.withValueStep(0.5)
.withPreset('default', 10, 'Default value')
.withDescription('dp16 is listed in Tuya, but no communication from device'),

    e.binary('dp105', ea.STATE_SET, 'ON', 'OFF')
        .withDescription('dp105 is not listed in Tuya, but device sends datapoint, binary: true/false'),

    e.binary('dp111', ea.STATE_SET, 'ON', 'OFF')
        .withDescription('dp111 is not listed in Tuya, but device sends datapoint, binary: true/false'),
    */
],
meta: {
    tuyaDatapoints: [
        [1, "system_mode", tuya.valueConverterBasic.lookup({heat: true, off: false})],
        [2, "current_heating_setpoint", tuya.valueConverter.divideBy10],
        [3, "local_temperature", tuya.valueConverter.divideBy10],
        [
            4,
            "preset",
            tuya.valueConverterBasic.lookup((_, device) => {
                // https://github.com/Koenkk/zigbee2mqtt/issues/21353#issuecomment-1938328429
                // https://github.com/Koenkk/zigbee2mqtt/issues/28035
                if (device.manufacturerName === "_TZE204_lzriup1j" || device.manufacturerName === "_TZE204_gops3slb") {
                    return {
                        auto: tuya.enum(1),
                        manual: tuya.enum(0),
                        temporary_manual: tuya.enum(2),
                    };
                }
                return {
                    auto: tuya.enum(0),
                    manual: tuya.enum(1),
                    temporary_manual: tuya.enum(2),
                };
            }),
        ],
        [9, "child_lock", tuya.valueConverter.lockUnlock],
        [11, "faultalarm", tuya.valueConverter.raw],
        [15, "max_temperature_limit", tuya.valueConverter.divideBy10],
        [19, "local_temperature_calibration", tuya.valueConverter.localTempCalibration3],
        [
            101,
            "running_state",
            tuya.valueConverterBasic.lookup({
                heat: tuya.enum(1),
                idle: tuya.enum(0),
            }),
        ],
        [102, "frost_protection", tuya.valueConverter.onOff],
        [103, "factory_reset", tuya.valueConverter.onOff],
        [
            104,
            "working_day",
            tuya.valueConverterBasic.lookup((_, device) => {
                // https://github.com/Koenkk/zigbee2mqtt/issues/23979
                if (device.manufacturerName === "_TZE200_viy9ihs7") {
                    return {
                        disabled: tuya.enum(0),
                        "6-1": tuya.enum(1),
                        "5-2": tuya.enum(2),
                        "7": tuya.enum(3),
                    };
                }
                return {
                    disabled: tuya.enum(0),
                    "6-1": tuya.enum(2),
                    "5-2": tuya.enum(1),
                    "7": tuya.enum(3),
                };
            }),
        ],
        [
            106,
            "sensor",
            tuya.valueConverterBasic.lookup({
                internal: tuya.enum(0),
                external: tuya.enum(1),
                both: tuya.enum(2),
            }),
        ],
        [107, "deadzone_temperature", tuya.valueConverter.divideBy10],
        [109, null, tuya.valueConverter.ZWT198_schedule],
        [109, "schedule_weekday", tuya.valueConverter.ZWT198_schedule],
        [109, "schedule_holiday", tuya.valueConverter.ZWT198_schedule],
        [110, "backlight_mode", tuya.valueConverter.backlightModeOffLowMediumHigh],
        // ============== found but not functional datapoints:

        // [16, 'min_temperature_limit', tuya.valueConverter.divideBy10],  // datapoint listed in Tuya, but no communication from device
        // [105, 'dp105', tuya.valueConverter.onOff],                      // not listed in Tuya, but device sends datapoint
        // [111, 'dp111', tuya.valueConverter.onOff],                      // not listed in Tuya, but device sends datapoint

        // These are the schedule values in bytes, 8 periods in total (4 bytes per period).
        // For each period:
        // 1st byte: hour
        // 2nd byte: minute
        // 3rd, 4th bytes: temperature multiplied by 10
        // On the device last 2 periods are ignored if schedule_mode is 7day. When schedule_mode is disabled,
        // scheduling can't be configured at all on the device.
        // For example, if schedule_mode is weekday/sat+sun and this byte array is received:
        // [6,10,1,144,8,10,0,170,11,40,0,170,12,40,0,170,17,10,0,230,22,10,0,170,8,5,0,200,23,0,0,160]
        // Then the schedule is:
        // Mon-Fri: 6:10 --> 40C, 8:10 --> 17C, 11:40 --> 17C, 12:40 --> 17C, 17:10 --> 23C, 22:10 --> 17C
        // Sat-Sun: 8:05 --> 20C, 23:00 --> 16C
    ],
},

};

module.exports = definition;

@MattiaMarchiorato

Copy link
Copy Markdown

@xion2000 many thanks, is working!

@rytecbe

rytecbe commented Sep 26, 2025

Copy link
Copy Markdown

@xion2000 thank you very much to made this and info where to place this in the system. It worked for me too. The only thing which is not showing is the battery, I don't have it connected with an USB-C cable but working with 3x AAA batteries.
Is there a possibility to have this info working in your file?

@douternitou

douternitou commented Oct 7, 2025

Copy link
Copy Markdown

Hi,

I just purchased the EcoDim DIM.06 dimmer but found that is not supported yet.
Would it be possible to add this one?
Thanks in advance.

https://www.123led.nl/EcoDim-Zigbee-stekkerdimmer-0-100W-Fase-afsnijding-RC-EcoDim-DIM-06-i7926-t4329.html

image image

{
"description": "Automatically generated definition",
"exposes": [
{
"features": [
{
"access": 7,
"description": "On/off state of this light",
"label": "State",
"name": "state",
"property": "state",
"type": "binary",
"value_off": "OFF",
"value_on": "ON",
"value_toggle": "TOGGLE"
},
{
"access": 7,
"description": "Brightness of this light",
"label": "Brightness",
"name": "brightness",
"property": "brightness",
"type": "numeric",
"value_max": 254,
"value_min": 0
}
],
"type": "light"
},
{
"access": 2,
"description": "Triggers an effect on the light (e.g. make light blink for a few seconds)",
"label": "Effect",
"name": "effect",
"property": "effect",
"type": "enum",
"values": [
"blink",
"breathe",
"okay",
"channel_change",
"finish_effect",
"stop_effect"
]
},
{
"access": 7,
"category": "config",
"description": "Controls the behavior when the device is powered on after power loss",
"label": "Power-on behavior",
"name": "power_on_behavior",
"property": "power_on_behavior",
"type": "enum",
"values": [
"off",
"on",
"toggle",
"previous"
]
},
{
"access": 1,
"category": "diagnostic",
"description": "Link quality (signal strength)",
"label": "Linkquality",
"name": "linkquality",
"property": "linkquality",
"type": "numeric",
"unit": "lqi",
"value_max": 255,
"value_min": 0
}
],
"model": "eco-dim06-zigbee",
"options": [
{
"access": 2,
"description": "Controls the transition time (in seconds) of on/off, brightness, color temperature (if applicable) and color (if applicable) changes. Defaults to 0 (no transition).",
"label": "Transition",
"name": "transition",
"property": "transition",
"type": "numeric",
"value_min": 0
},
{
"access": 2,
"description": "State actions will also be published as 'action' when true (default false).",
"label": "State action",
"name": "state_action",
"property": "state_action",
"type": "binary",
"value_off": false,
"value_on": true
}
],
"source": "generated",
"supports_ota": false,
"vendor": "EcoDim BV"
}

@xion2000

Copy link
Copy Markdown

@xion2000 thank you very much to made this and info where to place this in the system. It worked for me too. The only thing which is not showing is the battery, I don't have it connected with an USB-C cable but working with 3x AAA batteries. Is there a possibility to have this info working in your file?

I have mine working of batteries only also and have the same problem with batteries NOT showing in Zigbee2MQTT unfortunately

@mattia9508

Copy link
Copy Markdown

Buonasera a tutti, chiedo gentilmente se è possibile aggiungere il seguente dispositivo:

image

https://italian.alibaba.com/product-detail/subject-1600753083531.html?from=share&ckvia=share_80DFED87F71A45E98E35F2B59887F5D0&needReward=true

export default {
zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE204_o9d1hdma',
description: 'Automatically generated definition',
extend: [],
meta: {},
};

il dispositivo in questione è praticamente identico ad un dispositivo presente nella lista dispositivi supportati, ne ho 6 in casa mi piacerebbe tantissimo vederli funzionare
https://www.zigbee2mqtt.io/devices/AE-669K.html

Grazie per il vostro prezioso aiuto

Mattia

@MattiaMarchiorato

Copy link
Copy Markdown

@mattia9508 ciao,

puoi usare un external converter

guarda qui

@mattia9508

mattia9508 commented Oct 13, 2025 via email

Copy link
Copy Markdown

@Norbertcb

Copy link
Copy Markdown

Bonjour
Pouvez vous ajouter cet appareil SMT10020 de schneider svp, c'est un capteur d'echauffement des cables

@lalik77

lalik77 commented Oct 23, 2025

Copy link
Copy Markdown

Hi can you add motion and light sensor.
This is the generated external converter :

const {identify, iasZoneAlarm, battery, illuminance} = require('zigbee-herdsman-converters/lib/modernExtend');


const definition = {
    zigbeeModel: ['TS0601'],
    model: 'TS0601',
    vendor: '_TZE200_na5qlzow',
    description: 'Automatically generated definition',
    extend: [identify(), iasZoneAlarm({"zoneType":"generic","zoneAttributes":["alarm_1","alarm_2","tamper","battery_low"]}), battery(), illuminance()],
    meta: {},
};

module.exports = definition;
2025-10-20_19-06-18 2025-10-20_19-24-36

@raduten

raduten commented Oct 26, 2025

Copy link
Copy Markdown

Another tuya temp/humidity with clock device

export default {
zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE284_cwyqwqbf',
description: 'Automatically generated definition',
extend: [],
};
image

@jeanlouisbiset

Copy link
Copy Markdown

Hello can you add the necessary definition for an AVATTO ZDMS16-2
It is a Zigbee Module 2 channels Dimmer.
This is the generated external converter :

{
"last_seen": "2025-11-04T18:34:39.089Z",
"linkquality": 160,
"device": {
"applicationVersion": 78,
"dateCode": "",
"friendlyName": "0xa4c1385b98ce2ed7",
"hardwareVersion": 1,
"ieeeAddr": "0xa4c1385b98ce2ed7",
"manufacturerID": 4417,
"manufacturerName": "_TZE284_jtbgusdc",
"networkAddress": 12724,
"powerSource": "Mains (single phase)",
"stackVersion": 0,
"type": "Router",
"zclVersion": 3
}
}

const definition = {
zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE284_jtbgusdc',
description: 'Automatically generated definition',
extend: [],
meta: {},
};

module.exports = definition;

Thanks for your efforts.
Kind regards.

@bernardesarthur

Copy link
Copy Markdown

Hello can you add the necessary definition for an AVATTO ZDMS16-2 It is a Zigbee Module 2 channels Dimmer. This is the generated external converter :

{ "last_seen": "2025-11-04T18:34:39.089Z", "linkquality": 160, "device": { "applicationVersion": 78, "dateCode": "", "friendlyName": "0xa4c1385b98ce2ed7", "hardwareVersion": 1, "ieeeAddr": "0xa4c1385b98ce2ed7", "manufacturerID": 4417, "manufacturerName": "_TZE284_jtbgusdc", "networkAddress": 12724, "powerSource": "Mains (single phase)", "stackVersion": 0, "type": "Router", "zclVersion": 3 } }

const definition = { zigbeeModel: ['TS0601'], model: 'TS0601', vendor: '_TZE284_jtbgusdc', description: 'Automatically generated definition', extend: [], meta: {}, };

module.exports = definition;

Thanks for your efforts. Kind regards.

That manufacturerID is already supported. Are you using the last version of Zigbee2MQTT?

@jeanlouisbiset

Copy link
Copy Markdown

Reading your answer I went back to my Jeedom and saw that my Zigbee2MQTT version was 1.42.0.
I upgraded to 2.6.3 and then miracle, the module is correctly working.
Many thanks for your quick reaction. I will now buy several modules to go further.
Have a nice day!
Zigbee2MQTT WindFront

@Frikk

Frikk commented Nov 23, 2025

Copy link
Copy Markdown

Could anyone more skilled than me in Z2M add the new Namron Zigbee Thermostat?
Article No: 4512776
Name: Namron Zigbee termostat for panelovn PRO hvit
Product page link: https://www.elektroimportoren.no/namron-zigbee-termostat-for-panelovn-pro-hvit/4512776/Product.html

I have a Namron Zigbee panel heater released before the new thermostats + oven line were released. I suspect this new thermostat would act much the same way as the existing Namron 540139X would (https://www.zigbee2mqtt.io/devices/540139X.html)

If i could help in any way, please let me know.

Generated external definition (from Z2M Dev Console)

import * as m from 'zigbee-herdsman-converters/lib/modernExtend';

export default {
    zigbeeModel: ['Panel Heater'],
    model: 'Panel Heater',
    vendor: 'NAMRON AS',
    description: 'Automatically generated definition',
    extend: [m.electricityMeter()],
};
{
    "description": "Automatically generated definition",
    "exposes": [
        {
            "access": 5,
            "description": "Instantaneous measured power",
            "label": "Power",
            "name": "power",
            "property": "power",
            "type": "numeric",
            "unit": "W"
        },
        {
            "access": 5,
            "description": "Measured electrical potential value",
            "label": "Voltage",
            "name": "voltage",
            "property": "voltage",
            "type": "numeric",
            "unit": "V"
        },
        {
            "access": 5,
            "description": "Instantaneous measured electrical current",
            "label": "Current",
            "name": "current",
            "property": "current",
            "type": "numeric",
            "unit": "A"
        },
        {
            "access": 5,
            "description": "Sum of consumed energy",
            "label": "Energy",
            "name": "energy",
            "property": "energy",
            "type": "numeric",
            "unit": "kWh"
        },
        {
            "access": 1,
            "category": "diagnostic",
            "description": "Link quality (signal strength)",
            "label": "Linkquality",
            "name": "linkquality",
            "property": "linkquality",
            "type": "numeric",
            "unit": "lqi",
            "value_max": 255,
            "value_min": 0
        }
    ],
    "model": "Panel Heater",
    "options": [
        {
            "access": 2,
            "description": "Calibrates the power value (percentual offset), takes into effect on next report of device.",
            "label": "Power calibration",
            "name": "power_calibration",
            "property": "power_calibration",
            "type": "numeric",
            "value_step": 0.1
        },
        {
            "access": 2,
            "description": "Number of digits after decimal point for power, takes into effect on next report of device. This option can only decrease the precision, not increase it.",
            "label": "Power precision",
            "name": "power_precision",
            "property": "power_precision",
            "type": "numeric",
            "value_max": 3,
            "value_min": 0
        },
        {
            "access": 2,
            "description": "Calibrates the voltage value (percentual offset), takes into effect on next report of device.",
            "label": "Voltage calibration",
            "name": "voltage_calibration",
            "property": "voltage_calibration",
            "type": "numeric",
            "value_step": 0.1
        },
        {
            "access": 2,
            "description": "Number of digits after decimal point for voltage, takes into effect on next report of device. This option can only decrease the precision, not increase it.",
            "label": "Voltage precision",
            "name": "voltage_precision",
            "property": "voltage_precision",
            "type": "numeric",
            "value_max": 3,
            "value_min": 0
        },
        {
            "access": 2,
            "description": "Calibrates the current value (percentual offset), takes into effect on next report of device.",
            "label": "Current calibration",
            "name": "current_calibration",
            "property": "current_calibration",
            "type": "numeric",
            "value_step": 0.1
        },
        {
            "access": 2,
            "description": "Number of digits after decimal point for current, takes into effect on next report of device. This option can only decrease the precision, not increase it.",
            "label": "Current precision",
            "name": "current_precision",
            "property": "current_precision",
            "type": "numeric",
            "value_max": 3,
            "value_min": 0
        },
        {
            "access": 2,
            "description": "Calibrates the energy value (percentual offset), takes into effect on next report of device.",
            "label": "Energy calibration",
            "name": "energy_calibration",
            "property": "energy_calibration",
            "type": "numeric",
            "value_step": 0.1
        },
        {
            "access": 2,
            "description": "Number of digits after decimal point for energy, takes into effect on next report of device. This option can only decrease the precision, not increase it.",
            "label": "Energy precision",
            "name": "energy_precision",
            "property": "energy_precision",
            "type": "numeric",
            "value_max": 3,
            "value_min": 0
        }
    ],
    "source": "generated",
    "supports_ota": false,
    "vendor": "NAMRON AS"
}

@OM17-haos

Copy link
Copy Markdown

Any progress, this i working with ZHA??

@richardsg307

Copy link
Copy Markdown

First time I've bought something and it's not been 'Supported'. Is this something I can do myself as a complete numpty? I'll have a look at the Instructions! It's connected as a TS0601, but it looks like every unsupported thing does!

Bi-Directional Power Meter and DIN Circuit Breaker from Ali Express

DINPowerMeter

@m-shafiq

m-shafiq commented Feb 4, 2026 via email

Copy link
Copy Markdown

@richardsg307

Copy link
Copy Markdown

I have 4 of those already and they have been working flawlessly for a couple of years now. But I wanted a bi-directional one.

I'm making progress with a bit of searching and a lot of AI. Got it working for Power, voltage, energy etc but trying to get more of the features like setting trip current. It's slow going as have no idea what i'm doing! Nor the language in the External Definition. I get the feeling AI is guessing most of the time.

@m-shafiq

m-shafiq commented Feb 5, 2026 via email

Copy link
Copy Markdown

@mmarts

mmarts commented Mar 22, 2026

Copy link
Copy Markdown

can you add:

https://www.aliexpress.us/item/3256807805376890.html?spm=a2g0o.order_list.order_list_main.312.30631802RTpkGs&gatewayAdapt=glo2usa4itemAdapt

{
"description": "Automatically generated definition",
"exposes": [
{
"access": 1,
"category": "diagnostic",
"description": "Link quality (signal strength)",
"label": "Linkquality",
"name": "linkquality",
"property": "linkquality",
"type": "numeric",
"unit": "lqi",
"value_max": 255,
"value_min": 0
}
],
"model": "TS0601",
"options": [],
"source": "generated",
"supports_ota": false,
"vendor": "_TZE284_ue6veoat"
}

{"id":107,"type":"Router","ieeeAddr":"0xa4c138e80518b7c7","nwkAddr":14388,"manufId":4417,"manufName":"_TZE284_ue6veoat","powerSource":"Mains (single phase)","modelId":"TS0601","epList":[1,242],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[4,5,61184,0,60672],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"65503":"\u0007\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f\b\u0000\u0000\u0000f","65506":56,"65508":0,"modelId":"TS0601","manufacturerName":"_TZE284_ue6veoat","powerSource":1,"zclVersion":3,"appVersion":68,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}},"242":{"profId":41440,"epId":242,"devId":97,"inClusterList":[],"outClusterList":[33],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":68,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"interviewState":"SUCCESSFUL","meta":{},"lastSeen":1774199206384}

thanks

@m-shafiq

m-shafiq commented Mar 24, 2026 via email

Copy link
Copy Markdown

@THFNya

THFNya commented May 17, 2026

Copy link
Copy Markdown

Add motor support for curtains: https://www.aliexpress.com/item/1005010579905083.html
It is not supported, such a definition is created automatically:

export default {
zigbeeModel: ['TS0601'],
model: 'TS0601',
vendor: '_TZE204_ztsvgtxf',
description: 'Automatically generated definition',
extend: [],
};

I don't know what to do...

@m-shafiq

m-shafiq commented May 18, 2026 via email

Copy link
Copy Markdown

@m-shafiq

m-shafiq commented May 30, 2026 via email

Copy link
Copy Markdown

@Gfred70

Gfred70 commented Jun 1, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment