Koenkk / zigbee2mqtt

Zigbee 🐝 to MQTT bridge 🌉, get rid of your proprietary Zigbee bridges 🔨
https://www.zigbee2mqtt.io
GNU General Public License v3.0
11.2k stars 1.6k forks source link

[New device support]: Immax NEO 07523L Soil temperature & humidity sensor #22364

Closed slush0 closed 2 weeks ago

slush0 commented 2 weeks ago

Link

https://www.immax.eu/immax-neo-smart-soil-moisture-and-temperature-sensor-zigbee-p18721/

Database entry

{"id":15,"type":"EndDevice","ieeeAddr":"0xa4c138146dc0c51f","nwkAddr":4539,"manufId":4417,"manufName":"_TZE200_2se8efxh","powerSource":"Battery","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[4,5,61184,0],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"65503":"G\u0011�-iM\u0011�-i\u0000\u0000\u0000\u0000\u0011\u0000\u0000\u0000\u0000\u0011","65506":56,"65508":1,"65534":0,"stackVersion":0,"dateCode":"","appVersion":72,"manufacturerName":"_TZE200_2se8efxh","zclVersion":3,"modelId":"TS0601","powerSource":3}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{"configured":1324213189},"lastSeen":1714502975079}

Comments

I'm attaching working definition, it exports battery level, temperature and humidity.

External definition

const {} = require('zigbee-herdsman-converters/lib/modernExtend');
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 ota = require('zigbee-herdsman-converters/lib/ota');
const utils = require('zigbee-herdsman-converters/lib/utils');
const globalStore = require('zigbee-herdsman-converters/lib/store');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    fingerprint: [
        {
            modelID: 'TS0601',
            manufacturerName: '_TZE200_2se8efxh',
        },
    ],
    model: '07523L',
    vendor: 'Immax',
    description: 'NEO Soil temperature & humidity sensor',
    fromZigbee: [tuya.fz.datapoints],
    toZigbee: [tuya.tz.datapoints],
    configure: tuya.configureMagicPacket,
    exposes: [e.battery(), e.temperature(), e.humidity()],
    meta: {
        tuyaDatapoints: [
            [3, 'humidity', tuya.valueConverter.raw],
            [5, 'temperature', tuya.valueConverter.raw],
            [15, 'battery', tuya.valueConverter.raw],
        ],
    },
};

module.exports = definition;
Koenkk commented 2 weeks ago

humidity is the soil_moisture right? Does the following work?

        exposes: [e.temperature(), e.soil_moisture(), tuya.exposes.temperatureUnit(), e.battery(), tuya.exposes.batteryState()],
        meta: {
            tuyaDatapoints: [
                [3, 'soil_moisture', tuya.valueConverter.raw],
                [5, 'temperature', tuya.valueConverter.raw],
                [9, 'temperature_unit', tuya.valueConverter.temperatureUnit],
                [14, 'battery_state', tuya.valueConverter.batteryState],
                [15, 'battery', tuya.valueConverter.raw],
            ],
        },
supaeasy commented 2 weeks ago

From the looks I have the exact device (bought from Aliexpress). Z2M recognizes this as https://www.zigbee2mqtt.io/devices/TS0601_soil.html

It is absolute garbage though. Soil moisture is utterly wrong and there is no way to calibrate it.

Koenkk commented 2 weeks ago

Added it!

Changes will be available in the dev branch in a few hours from now.

slush0 commented 1 week ago

humidity is the soil_moisture right? Does the following work?

        exposes: [e.temperature(), e.soil_moisture(), tuya.exposes.temperatureUnit(), e.battery(), tuya.exposes.batteryState()],
        meta: {
            tuyaDatapoints: [
                [3, 'soil_moisture', tuya.valueConverter.raw],
                [5, 'temperature', tuya.valueConverter.raw],
                [9, 'temperature_unit', tuya.valueConverter.temperatureUnit],
                [14, 'battery_state', tuya.valueConverter.batteryState],
                [15, 'battery', tuya.valueConverter.raw],
            ],
        },

Yes, this definition works for my device, thanks!