• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Дистанционное снятие показаний с электросчетчика КАСКАД-1-МТ с дальнейшей передачей показаний в Home Assistant с помощью BLE

Slacky

Member
Спасибо форуму и его участникам. Без вас было бы все намного труднее :)

Готового устроства пока нет. Но на макетке все работает. Присылает в двух рекламных пакетах 3 тарифа (можно и четыре, но я больше 3 не встречал) в kWh, напряжение сети и мощность.

Подробности тут
 

mega2000

Member
Спасибо форуму и его участникам. Без вас было бы все намного труднее :)

Готового устроства пока нет. Но на макетке все работает. Присылает в двух рекламных пакетах 3 тарифа (можно и четыре, но я больше 3 не встречал) в kWh, напряжение сети и мощность.

Подробности тут
а на esp планируете реализовать? было-бы очень интересно, особенно когда есть такой: https://aliexpress.ru/item/1005003198358721.html
 

Slacky

Member
а на esp планируете реализовать? было-бы очень интересно, особенно когда есть такой: https://aliexpress.ru/item/1005003198358721.html
А я не уверен, что это корректно заработает. Вот такое я испытывал

Отсюда. Так вот он сам себя ловит на отраженку и ничего не работает.
 

mega2000

Member
можно попробовать tfdu4100
у меня работает на есп проект от Vad-07 для меркурия 231
 

mega2000

Member
каюсь, не прочитал.
буду ждать заказанную ТВ-04 или портирование на есп
 

Slacky

Member
каюсь, не прочитал.
буду ждать заказанную ТВ-04 или портирование на есп
А чего там ждать? Основной код обмена прописан в файле kaskad_1_mt.c. Нужно только свой uart.c написать. Кстати, сам оптопорт я как раз проверял на esp32 :)

Лови :))

C:
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_log.h"
#include "driver/uart.h"
#include "string.h"
#include "driver/gpio.h"

#include "uart.h"

static const int RX_BUF_SIZE = 1024;


void uart_init() {
    const uart_config_t uart_config = {
        .baud_rate = 9600,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
        .source_clk = UART_SCLK_APB,
    };
    // We won't use a buffer for sending data.
    uart_driver_install(UART_NUM_1, RX_BUF_SIZE * 2, 0, 0, NULL, 0);
    uart_param_config(UART_NUM_1, &uart_config);
    uart_set_pin(UART_NUM_1, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
}

int send_to_uart(const uint8_t *data, size_t len) {
    const int bytes = uart_write_bytes(UART_NUM_1, data, len);
    printf("send_to_uart: %u\r\n", bytes);
    return bytes;
}

int resp_from_uart(uint8_t *data, uint32_t len) {
    const int bytes = uart_read_bytes(UART_NUM_1, data, len, 100 / portTICK_RATE_MS);
    printf("resp_from_uart: %u\r\n", bytes);
    return bytes;
}

size_t get_data_len_from_uart() {
    size_t len = 0;
    if (uart_get_buffered_data_len(UART_NUM_1, &len) == ESP_OK) return len;
    return 0;
}
 

mega2000

Member
Ещё вопрос, можно использовать модуль TB-2 ?
С программированием дружу посредственно, так что прошу сильно не пинать.
В схеме указан блок питания hkl01 на 5в, на 3,3 будет hkl03.
 

Slacky

Member
Ещё вопрос, можно использовать модуль TB-2 ?
С программированием дружу посредственно, так что прошу сильно не пинать.
В схеме указан блок питания hkl01 на 5в, на 3,3 будет hkl03.
Про TB-02 ничего не знаю, даже не смотрел.
Про питание. Отказался от hk (но что 5 вольт, что 3, посадочные места одинаковые) - большой больно, не лезет в вилку, которую я выбрал для корпуса. Схема по питанию чисто номинальная. Плату развел, заказал. Придет, поверю, выложу ...

Но сразу скажу, питание будет внешнее, типа, как зарядка у телефона ...
 

Slacky

Member
Посмотрел спецификацию на TB-02. Там чип TLSR8250 (что это я не знаю, на оф. сайте телинка про этот чип упоминаний нет). Такого модуля у меня нет, проверить не могу.

Схему по питанию изменил. Запитываться будет от microUSB.
 

pvvx

Активный участник сообщества

Slacky

Member
Не могу прошить с помощью python, видимо 3.8 старая версия.
Подключил к usb-ttl и попробовал прошить спомощью https://pvvx.github.io/ATC_MiThermometer/USBCOMFlashTx.html Подключается конфигуратор секунд на 20 и отключается. Так и задумано?
Нет. Только что скачал с github'а архив. Собрал, залил, соединился. Все работает. Попробуйте очистить flash полностью и потом залить по-новой.

Да, виндоус должен выкинуть запрос на разрешение подключения ...
 

pvvx

Активный участник сообщества
Не могу прошить с помощью python, видимо 3.8 старая версия.
Подключил к usb-ttl и попробовал прошить спомощью https://pvvx.github.io/ATC_MiThermometer/USBCOMFlashTx.html Подключается конфигуратор секунд на 20 и отключается. Так и задумано?
Не использовать FTDI чипы. На них не выйдет эмулировать Telink S-Wire протокол.

Если используете программу программатора с обратной связью TX-RX через 750Ом..1.2кОм, то на адаптере надо убрать светодиод на входе RX...
К USBCOMFlashTx.html это не относится. Он тупо передает в чип последовательность близкую к Telink S-Wire протоколу, без каких-либо проверок.
Устанавливаемые скорости COM порта автоматически (по умолчанию) в программах программаторов менять не желательно.
 

mega2000

Member
Не использовать FTDI чипы. На них не выйдет эмулировать Telink S-Wire протокол.

Если используете программу программатора с обратной связью TX-RX через 750Ом..1.2кОм, то на адаптере надо убрать светодиод на входе RX...
К USBCOMFlashTx.html это не относится. Он тупо передает в чип последовательность близкую к Telink S-Wire протоколу, без каких-либо проверок.
Устанавливаемые скорости COM порта автоматически (по умолчанию) в программах программаторов менять не желательно.
Адаптер на ch340g, s-wire подпал ко 2 ноге
 

mega2000

Member
Ещё вопрос:
в HA у вас блютус напрямую, а если через Esphome?
esp32_ble_tracker:
sensor: ?
 
Сверху Снизу