Zgłoszenia nowych urządzeń [bramka Zigbee]

Moderator: vajera

User avatar
Lector
Posts: 2471
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań
Has thanked: 13 times
Been thanked: 25 times

Post

vajera wrote: Sat Oct 11, 2025 1:59 pm
sasik wrote: Sat Oct 11, 2025 9:30 am Unknown model _TZE284_aaeai fez::TS0601, no binding is possible

Proszę o dodanie
Mam nadzieję, że kolega @sasik nie obrazi się, że wymieniam Go tutaj z nick-a, ale muszę powiedzieć, że jestem pod wrażeniem.
Dodałem ten Jego termostat ścienny do bazy, tak żeby można było ściągnąć logi z parowania a później zaczęliśmy testy konkretnych datapoints.

Dzięki zaangażowaniu kolegi i naprawdę fachowemu zebraniu logów wiemy już, że to jest pdoobny model działania, jak głowice TRV - można ustawić nastawę, child lock, włączyć/wyłączyć urządzenie, włączyć tryb automatyczy itd. Oczywiście musimy jeszcze znaleźć datapoints odpowiedzialne za kalibrację temperatury, histerezę itp., ale szlak przetarty.

Pytanie, jak widzicie pożenienie tego z Supla - tak, jak w przypadku głowicTRV - czyli, że kontrolę przejmuje Supla a to urządzenie dostaje odpowiednie polecenia?
No i super :)
Może i moje ogrzewanie w końcu będzie oSuplowane :)
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
https://pool.lector.top/
lukasz06
Posts: 2543
Joined: Sun Jul 17, 2022 6:53 pm
Has thanked: 45 times
Been thanked: 21 times

Post

Obserwuję z ciekawością temat regulatorów/termostatów pokojowych, chciałem nawet jeden zamówić jakieś 1-2 m-ce temu, ale stwierdziłem, że poczekam. Teraz widzę, że testy są obiecujące. Pozostaje znaleźć ten , który będzie dobrze współpracował z bramką Z2S.
Niestety większość tego typu urządzeń jest oparte o Tuya, a ona jest uparta i nie zawsze chce współpracować ;)
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

sasik wrote: Sat Oct 11, 2025 2:01 pm Ja jestem za ,oczywiscie jestem do dyspozycji, mozemy działac.
Agencie @sasik, mamy to - namierzyłem model tego termostatu ;)

Code: Select all

{
        fingerprint: tuya.fingerprint("TS0601", [
            "_TZE200_viy9ihs7",
            "_TZE204_lzriup1j",
            "_TZE204_xnbkhhdr",
            "_TZE284_xnbkhhdr",
            "_TZE204_oh8y8pv8",
            "_TZE204_gops3slb",
            "_TZE284_gops3slb",
            "_TZE284_zjhoqbrd",
            "_TZE204_zjhoqbrd",
        ]),
        model: "ZWT198/ZWT100-BH",
        vendor: "Tuya",
        description: "Wall thermostat",
        extend: [tuya.modernExtend.tuyaBase({dp: true, respondToMcuVersionResponse: true})],
        whiteLabel: [tuya.whitelabel("AVATTO", "WT-100-BH", "Wall thermostat", ["_TZE204_gops3slb", "_TZE284_gops3slb"])],
        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
            ],
        },
    },
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

lukasz06 wrote: Sat Oct 11, 2025 3:38 pm Obserwuję z ciekawością temat regulatorów/termostatów pokojowych, chciałem nawet jeden zamówić jakieś 1-2 m-ce temu, ale stwierdziłem, że poczekam. Teraz widzę, że testy są obiecujące. Pozostaje znaleźć ten , który będzie dobrze współpracował z bramką Z2S.
Niestety większość tego typu urządzeń jest oparte o Tuya, a ona jest uparta i nie zawsze chce współpracować ;)
Wychodzi na to, że ten termostat działa identycznie, jak głowice TRV Tuya i można go używać na dwa sposoby:
  • Jako samodzielny termostat ścienny - analogicznie do komercyjnego produktu firmy Z... (G...;) ) - można nim wtedy sterować z poziomu Supla, tak jak teraz głowicami TRV.
  • W połączeniu z termostatami wykonawczymi (głowice TRV) i czujnikami temperatury Zigbee za pośrednictwem bramki Z2S - tutaj potrzebne będą pomysły, jak to ma funkcjonować.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
PijanySmerf
Posts: 183
Joined: Sun Apr 18, 2021 7:45 pm
Location: Dąbrowa Tarnowska

Post

Preferuje jako samodzielny termostat scienny.
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

sasik wrote: Sat Oct 11, 2025 4:11 pm Preferuje jako samodzielny termostat scienny.
Jedno nie wyklucza drugiego, ale od tego zacznę - może jeszcze późnym wieczorem wrzucę wersję testową.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
PijanySmerf
Posts: 183
Joined: Sun Apr 18, 2021 7:45 pm
Location: Dąbrowa Tarnowska

Post

No to piwko, chipsy i czekamy 😀.
lukasz06
Posts: 2543
Joined: Sun Jul 17, 2022 6:53 pm
Has thanked: 45 times
Been thanked: 21 times

Post

Coco Jambo i do przodu :D
Ps. Ostatnio kolega przyniósł mi taki termostat , ale po wifi.
Ogólnie spoko tylko jego wadą było to, że nie pamiętał ustawień po zaniku zasilania.
User avatar
PijanySmerf
Posts: 183
Joined: Sun Apr 18, 2021 7:45 pm
Location: Dąbrowa Tarnowska

Post

Ten akurat pamieta , sprawdziłem.
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

sasik wrote: Sat Oct 11, 2025 5:14 pm Ten akurat pamieta , sprawdziłem.
Za 15 minut będzie dostępna wersja 0.9.83-11/10/2025 - musisz sparować termostat z bramką po aktualizacji i powinien pojawić Ci się w Supla termostat, którym będziesz mógł sterować tym ściennym w obie strony. Nie ma tam jeszcze wszystkich funkcji, np. histerezy, ale to się doda.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277

Return to “Bramka ZigBee”