Переделка вытяжки в умную — восстановление и подключение

Итак, в предыдущем посте — Переделка вытяжки в умную — вытяжка была переделана, путём установки внутрь 4х канального Zigbee реле. Но поработав пять минут в нештатном режиме взяла и сломалась. Модель вытяжки: Cata NEBLIA 600 IVORY.

Немножко приуныл с этого, но в итоге вытяжку взял и починил. Так же подключил к умному дому и к умной колонке Алиса заодно.

Суть проблемы

Из-за того, что мотор поработал с двумя обмотками сразу, они видимо работали друг против друга, и малая скорость получалась из-за того что излишки превращались в тепло. В итоге мотор сгорел, общий провод прозванивался на обрыв.

Ремонт

Сначала решил поискать мотор на замену, для этого снимаем снова двигатель и смотрим на него.

Смотрим маркировку на двигателе и пытаемся найти такой же в интернете. И тут облом — двигатель оказался крайне редкий, и там где он хотя бы был в каталоге, везде была плашка типа «нет в наличии». Маркировка двигателя: TA 220-240V, 50Hz 270W Class 130. Так по сути обычный асинхронный электромотор.

Но тут, наткнулся на пост на форуме. Спасибо тебе, добрый человек cublez! Без твоей наводки точно не полез бы в обмотки.

Тут мужик собственно написал, что в моторе имеется термопредохранитель, который сгорел. Так же, он заныкан глубоко в обмотки, его наличие, мягко говоря не очевидно при осмотре.

Ну штош, начинаем тогда вскрытие. Разобрать полностью довольно сложно, всё залипло, закисло и сидит туго внатяг.

Разбираем корпус и вытаскиваем якорь, видим обмотки. Обратите внимание — никакого предохранителя и в помине не видно. Но он на самом деле есть.

Вскрываем обмотки и выковыриваем предохранители из глубин меди. Их там два последовательно, и один оборван — выкидываем его и оставляем исправный.

Собираем обратно, насколько это возможно подручными средствами. Я закрепил стяжками и замотал провода на старое место.

Вытяжка снова работает! Ура 🙂

Подключение к умному дому

Умный дом у нас управляется системой OpenHAB, умные устройства подключены через Zigbee и брокер zigbee2mqtt, который выводит устройства на шину mqtt.

Теперь, надо сделать так, что бы этот «секретный» режим было бы невозможно включить. Ведь у 4х канального реле каналы управляются независимо, поэтому надо обеспечить защиту от одновременного тока на двух и более обмотках.

В конфигурации OpenHAB выведен канал света, а управление скоростью сделана через правило, где команда на оставшиеся три канала уходит одной командой. Для того, что бы исключить задержки, потери отдельных команд и прочее.

rule "Hood command"
when
    Item wz_fan_command received command
then
    var cmd = receivedCommand.toString().toLowerCase()

    // Define switch groups, to be called for modes
    var List<Boolean> itemState = newArrayList(false, false, false)

    switch(cmd) {
        case "on",
        case "low",
        case "1": {
            itemState = newArrayList(true, false, false)
            cmd = "1"
        }
        case "medium",
        case "2": {
            itemState = newArrayList(false, true, false)
            cmd = "2"
        }
        case "high",
        case "3": {
            itemState = newArrayList(false, false, true)
            cmd = "3"
        }
        // OFF / invalid
        default: {
            itemState = newArrayList(false, false, false)
            cmd = "OFF"
        }
    }

    if (cmd != receivedCommand.toString()) {
        wz_fan_command.postUpdate(cmd)
    }

    logInfo("kitchen", "Command hood: " + receivedCommand + ", switches " + itemState.toString())

    // Send group command to avoid cross-coli current
    val mq = getActions("mqtt","mqtt:broker:openhab")
    mq.publishMQTT("zigbee2mqtt/wz_fan/set","{\"state_l1\":\"" + (if (itemState.get(0)) "ON" else "OFF") + "\",\"state_l2\":\"" + (if (itemState.get(1)) "ON" else "OFF") + "\",\"state_l3\":\"" + (if (itemState.get(2)) "ON" else "OFF") + "\"}")
end

В данном правиле команда вытяжке — типа «medium» или «1» конвертируется в определенную скорость, потом формируется одна команда на три канала сразу, после чего отправляется как одна JSON строка в шину MQTT. Таким образом гарантируется, что все три канала переключаться синхронно.

Но, всё равно можно включить какую-то скорость из умного дома, а потом включить другую обмотку вручную через штатный пультик (который, конечно же подключён и работает). Для защиты от этого сделаем ещё одно небольшое правило:

rule "Hood cross-coli protection"
when
    Member of wz_fan_speeds changed from OFF to ON
then
    wz_fan_speeds.members.forEach [ speed_sw |
        if (speed_sw == triggeringItem) {
            // Switched item -> skip
        } else {
            if (speed_sw.state != OFF) {
                logInfo("kitchen", "Hood protection: item " + triggeringItem + " is ON, but " + speed_sw + " == " + speed_sw.state.toString())
                speed_sw.sendCommand(OFF)
            }
        }
    ]
end

При изменении любого итема в группе wz_fan_speeds, проверяем, что включена только одна обмотка. Если нет — выключаем нафиг. Таким образом при переключении с пультика лишняя обмотка выключится сама.

Подключение к Алисе

Умный дом у нас подключен к умной колонке Алиса, сделано это через прослойку yandex2mqtt, которую мне пришлось значительно переделать (много чего не работало, кривое и т.п.).

module.exports = {
    devices: [
    // ВЫТЯЖКА (ВНЕ ШАБЛОНА)
    {
        id: 'wz_fan_command',
        name: 'Вытяжка',
        room: ROOMS.KITCHEN,
        type: 'devices.types.purifier',
        mqtt: [
            {
                instance: 'on',
                set: 'eventbus/set/wz_fan_command/sw',
                state: 'eventbus/state/wz_fan_speeds',
            },
            {
                instance: 'fan_speed',
                set: 'eventbus/set/wz_fan_command/state',
                state: 'eventbus/state/wz_fan_command',
            },
        ],
        capabilities: [
            {
                type: 'devices.capabilities.on_off',
                retrievable: true,
                reportable: true,
            },
            {
                type: 'devices.capabilities.mode',
                retrievable: true,
                reportable: true,
                parameters: {
                    instance: "fan_speed",
                    modes: [
                        { "value": "low" },
                        { "value": "medium" },
                        { "value": "high" },
                    ]
                }
            },
        ],
        valueMapping: [
            {
                type: 'on_off',
                mapping: [[false, true, true, true, true], ["OFF", "ON", "1", "2", "3"]], // [yandex, mqtt]
            },
            {
                type: 'mode',
                mapping: [["low", "low", "medium", "high"], ["OFF", "1", "2", "3"]], // [yandex, mqtt]
            },
        ],
    },
    ],
};

Данный конфиг вытаскивает вытяжку в Алису. Тип устройства — devices.types.purifier, то есть «очиститель воздуха», лучшее что я нашёл похожее на вытяжку. Вытаскиваем наружу общий выключатель, так же управление скоростью.

Работают все команды, типа «Алиса, включи вытяжку», или «Алиса, включи малую скорость вытяжки». Свет вытяжки вывел отдельным устройством, так же добавил его в группу рабочего света на кухне — он включается вместе с рабочим светом.

Вот такая вот получилась переделка! Хозяйка осталась довольна 🙂

One thought on “Переделка вытяжки в умную — восстановление и подключение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *