Modyfikacja harmonogramu w głowicy termostatycznej MQTT

Tak wygląda formatowanie jak się kodu nie umieści odpowiednio na forum.
Ale już się nauczyłem :slight_smile:

1 polubienie

Topic to publish

zigbee2mqtt/Termostat_P/set/schedule

Payload

{
    "holidays": [{
            "hour": 5,
            "minute": 15,
            "temperature": 21
        }, {
            "hour": 6,
            "minute": 30,
            "temperature": 22
        }, {
            "hour": 11,
            "minute": 45,
            "temperature": 20
        }, {
            "hour": 12,
            "minute": 0,
            "temperature": 20
        }, {
            "hour": 13,
            "minute": 3,
            "temperature": 20
        }, {
            "hour": 14,
            "minute": 4,
            "temperature": 20
        }
    ]
}

{
    "workdays": [{
            "hour": 5,
            "minute": 15,
            "temperature": 21
        }, {
            "hour": 6,
            "minute": 30,
            "temperature": 17
        }, {
            "hour": 11,
            "minute": 45,
            "temperature": 17
        }, {
            "hour": 12,
            "minute": 0,
            "temperature": 17
        }, {
            "hour": 13,
            "minute": 3,
            "temperature": 17
        }, {
            "hour": 14,
            "minute": 4,
            "temperature": 17
        }
    ]
}

Wsady Które napisałeś są do popularnej głowicy: moes
Moja (choć nazwa podobna) całkiem się różni zobacz: https://www.zigbee2mqtt.io/devices/TS0601_thermostat_1.html#tuya-ts0601_thermostat_1
Niby prosto bo na powyższej stronie jest opisane jak wsad powinien wyglądać:

{"undefined": {"monday_schedule": VALUE, "tuesday_schedule": VALUE, "wednesday_schedule": VALUE, "thursday_schedule": VALUE, "friday_schedule": VALUE, "saturday_schedule": VALUE, "sunday_schedule": VALUE}}

Tylko jak sfomułować to co się wpisuje zamiast VALUE, skoro na każdy dzień tygodnia osobno definiuje się po cztery punkty temperatury?

Taki format ?

"monday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",

Sypie errorami :frowning:

Jak wysyłam:

{"monday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "tuesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "wednesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "thursday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "friday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "saturday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C ", "sunday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C "}

Zwraca:

No converter available for ‘monday_schedule’ (" 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘tuesday_schedule’ (” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘wednesday_schedule’ (” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘thursday_schedule’ (” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘friday_schedule’ (” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘saturday_schedule’ (” 7h:45m 21°C, 11h:0m 19°C, 20h:0m 21°C, 22h:0m 19°C “)
Error 2022-11-23 23:08:03No converter available for ‘sunday_schedule’ (” 7h:45m 21°C, 11h:0m 19°C, 20h:0m 21°C, 22h:0m 19°C ")

jeszcze próbowałem:

{"undefined": "monday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "tuesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "wednesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "thursday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "friday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "saturday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C ", "sunday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C "}

to dostałem:

Invalid message ‘null’, skipping…

najbardziej pasuję mi ta wersja

{"undefined": {"monday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "tuesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "wednesday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "thursday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "friday_schedule": " 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C ", "saturday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C ", "sunday_schedule": " 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C "}}

ale też zwraca błąd:

No converter available for ‘undefined’ ({“friday_schedule”:" 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “,“monday_schedule”:” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “,“saturday_schedule”:” 7h:45m 21°C, 11h:0m 19°C, 20h:0m 21°C, 22h:0m 19°C “,“sunday_schedule”:” 7h:45m 21°C, 11h:0m 19°C, 20h:0m 21°C, 22h:0m 19°C “,“thursday_schedule”:” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “,“tuesday_schedule”:” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C “,“wednesday_schedule”:” 4h:0m 21°C, 8h:0m 19°C, 19h:0m 21°C, 22h:0m 19°C "})

Lub ta:

{"undefined": {"monday_schedule": 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C , "tuesday_schedule": 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C , "wednesday_schedule":  4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C , "thursday_schedule": 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C , "friday_schedule": 4h:0m 21°C,  8h:0m 19°C,  19h:0m 21°C,  22h:0m 19°C , "saturday_schedule": 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C , "sunday_schedule": 7h:45m 21°C,  11h:0m 19°C,  20h:0m 21°C,  22h:0m 19°C }}

Ale ta zwraca:

Invalid message ‘null’, skipping…

Heh pomysły mi się kończą :face_with_diagonal_mouth:

{
    "battery": 100,
    "child_lock": "UNLOCK",
    "current_heating_setpoint": "15.0",
    "friday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "heating": "OFF",
    "linkquality": 73,
    "local_temperature": "21.4",
    "max_temperature": "35.0",
    "min_temperature": "5.0",
    "monday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "position": 0,
    "preset": "auto",
    "saturday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "sunday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "thursday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "tuesday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "wednesday_schedule": " 6h:0m 20°C, 12h:0m 15°C, 18h:0m 22°C, 22h:0m 15°C ",
    "window": "CLOSED",
    "window_detection": "OFF"
}

Topic

zigbee2mqtt/Termostat_P/set/schedule

Nie rozumiem :frowning:
a zmienić topic na:

zigbee2mqtt/Termostat_P/set/schedule

po set daj schedule set/schedule

Wydaje mi się że to nie jest oprogramowane. Patrze właśnie na:

I nie ma w kluczu toZigbee metody do ustawiania tych danych. Ale IMHO patrząc na źródła da się to zhakować.

W mojej głowicy zmienia te parametry dla workdays i holidays

zigbee2mqtt/Termostat_P/set/schedule

{
    "workdays": [{
            "hour": 5,
            "minute": 15,
            "temperature": 21
        }, {
            "hour": 6,
            "minute": 30,
            "temperature": 17
        }, {
            "hour": 11,
            "minute": 45,
            "temperature": 17
        }, {
            "hour": 12,
            "minute": 0,
            "temperature": 17
        }, {
            "hour": 13,
            "minute": 3,
            "temperature": 17
        }, {
            "hour": 14,
            "minute": 4,
            "temperature": 17
        }
    ]
}

Też mam głowice MOES i jest tak jak mówisz. Ale to inna głowica, która wg. kodu źródłowego nie wspiera (jeszcze) ustawiania tego parametru.

Właśnie przez bramkę tuya i na aplikacji to działa, a tu jest nawet na zigbee2mqtt w urządzeniu nie ma opcji ażeby wypełnić i wysłać:

dla porównania widok z głowicy moesa którą ma @artpc :

Czyli @quaker co myślisz? pozostaje czekać na aktualizację kodu?

Właśnie próbuje dopisać kod. Programistą strikte JS nie jestem (w innych językach sobie radzę), ale tutaj mam prawdziwy “mind-blow”, jak zobaczyłem kod. Nie sądziłem ze jest tyle typów głowic i tyle sposobów ich oprogramowania. Jak coś osiągnę to się pochwalę.

Na razie mam tyle. Pisane czysto teoretycznie :slight_smile:

Jesteś wielki.

Co ja mam powiedzieć na ten kod, jak z programowania to tylko pralkę umiem. :smiley:

Ale czy o tych samych głowcach mówimy w kodzie który piszesz jest cos na temat

haozee_thermostat…

A moje to dokładnie te co wcześniej wskazałeś:

TS0601 thermostat_1
modelID: 'TS0601', manufacturerName: '_TZE200_a4bpgplm'
modelID: 'TS0601', manufacturerName: '_TZE200_dv8abrrz'
  

To jest ta sama głowica - popatrz na zmiany w pliku devices/tuya.js

Quaker, widzę, żę ten PR jeszcze nie jest zmergowany. Potrzebujesz z nim jakiejś pomocy? Testowałeś go? Jeśli tak daj znać, mogę spróbować w weekend do tego usiąść, bo też mam tę głowicę i boli mnie brak możliwości ustawiania schedula.

Łatkę napisałem “na hura” bazując na istniejącym kodzie. Nic nie testowałem. Szczerze zatrzymałem się na etapie jak pokomplikowane jest Hass.io (dockery) i braku vima, aby te zmiany w locie przetestować na moim serwerku na RPI.

Patrzyłem na kod tuya.js i szczerze, przeraża mnie mnogość sposobów ustawianiu schedulera dla różnych głowic. I ile tam jest duplikacji kodu.

Przetestowałem i poprawiłem lokalnie Twój kod.

payload[0] trzeba zainicjować na numer dnia np. 1 + dpId - tuya.dataPoints.haozeeScheduleMonday; - reszta działa!
Trzeci bajt z każdej czwórki to sekundy, więc warość 0 może zostać.

Przykładowy format: {“monday_schedule”: “06:10/19 12:0/15 18:0/22 22:00/15”}

Oświećcie mnie Panowie.

Czy mogę tą konfiguracje sobie lokalnie gdzieś zmodyfikować?
Żeby u mnie zadziałało?

Witam,
dopiero zaczynam “przygodę” z MQTT i próbuję ogarnąć jak to się obsługuje. I w związku z tym czy może ktoś podesłać link lub jakiś tutorial dla totalnego laika, jak i gdzie wpisywać komendy (po części znalazłem że można użyć opcji konfiguruje w brokerze MQTT) jak i czym czytać, oraz czy istnieje jakiś zapis popularnych komend ?