https://github.com/wirenboard/wb-zwave-msw
Firmware for ZWAVE-MSW module
https://github.com/wirenboard/wb-zwave-msw
zwave
Last synced: 2 months ago
JSON representation
Firmware for ZWAVE-MSW module
- Host: GitHub
- URL: https://github.com/wirenboard/wb-zwave-msw
- Owner: wirenboard
- License: mit
- Created: 2022-10-20T09:00:48.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-11-06T19:30:58.000Z (7 months ago)
- Last Synced: 2025-11-06T21:18:10.727Z (7 months ago)
- Topics: zwave
- Language: C++
- Homepage:
- Size: 395 KB
- Stars: 0
- Watchers: 13
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Сборка и прошивка проекта для модуля ZWAVE-MSW
## Инструментарий
Основным инструментом для сборки и настройки является утилита **zme_make**, доступная в [архиве с инструментами](https://github.com/Z-Wave-Me/Z-Uno-G2-Core/tree/master/toolchain/linux64), а также в каталоге `/Z-Uno2 (Beta)/tools/zme_make` в папке с ZUNO-компонентами при установке расширения ZUNO в VSCode.
Для автоматической сборки проекта необходимо скачать: ZUNO-ядро (файлы SDK), утилиту **zme-make**, компилятор **arm-none-eabi-gcc** и библиотеку **libClang**, причем версии этих инстументов должны соответствовать той версии SDK, для которой производится сборка. Для поиска файлов нужно воспользоваться этим [индексом](http://z-uno.z-wave.me/files/z-uno2/package_z-wave2.me_index.json) в случае сборки для стабильных версий SDK, а для Beta-версий SDK [этим](https://z-uno.z-wave.me/files/z-uno2/package_z-wave2.me_beta_index.json).
Для начала, нужно найти в каждом файле индекса список **platforms**, в котором приводятся доступные версии SDK, и в нем раздел, интересующий нас. Например:
```json
{
"architecture": "zw_cm4f",
"archiveFileName": "z-uno2_core_03_00_12_beta05.zip",
"boards": [
{
"name": "Z-Uno2"
}
],
"category": "ZWave>Me",
"checksum": "SHA-256:880868e243199de4d17ddf414804c238b962f04adcf70930daf3eb26e986c9c8",
"help": {
"online": "http://z-uno.z-wave.me/Reference/"
},
"name": "Z-Uno2 (Beta)",
"size": "13836634",
"toolsDependencies": [
{
"name": "libClang",
"packager": "Z-Uno2 (Beta)",
"version": "11.0.1"
},
{
"name": "zme_make",
"packager": "Z-Uno2 (Beta)",
"version": "0.4.2"
},
{
"name": "arm-none-eabi-gcc",
"packager": "Z-Uno2 (Beta)",
"version": "10.3.1"
}
],
"url": "http://z-uno.z-wave.me/files/z-uno2/cores/z-uno2_core_03_00_12_beta05.zip",
"version": "3.0.12"
}
```
В разделе **toolsDependencies** находится список инструменов, необходимый для сборки, и версии. Ниже, после раздела **platforms**, находится раздел **tools**, в котором нам нужно найти подразделы с соответствующими инструментами и версиями. Например:
```json
{
"name": "zme_make",
"systems": [
{
"archiveFileName": "zme_make_00_04_02_beta03-linux64.tar.gz",
"checksum": "SHA-256:b140b4497d4959ce7e3c1421380b037610db518405732435922ff602f288f77c",
"host": "x86_64-pc-linux-gnu",
"size": 15033895,
"url": "http://z-uno.z-wave.me/files/z-uno2/tc//zme_make_00_04_02_beta03-linux64.tar.gz"
},
{
"archiveFileName": "zme_make_00_04_02_beta03-osx.tar.gz",
"checksum": "SHA-256:203c46170d7a327d0267d27d74d4a5ba7f9bf57e45436dc23eb68628f5046e8b",
"host": "x86_64-apple-darwin",
"size": 17086876,
"url": "http://z-uno.z-wave.me/files/z-uno2/tc//zme_make_00_04_02_beta03-osx.tar.gz"
},
{
"archiveFileName": "zme_make_00_04_02_beta03-win32.zip",
"checksum": "SHA-256:68affef73cc89dd791786158a2509d7f725473da2910094c023f0bdc2dd51a40",
"host": "i686-mingw32",
"size": 18692991,
"url": "http://z-uno.z-wave.me/files/z-uno2/tc//zme_make_00_04_02_beta03-win32.zip"
}
],
"version": "0.4.2"
}
```
Для каждого из инструментов сборки приведена ссылка для доступа.
## Инструкция по сборке
### Настройка сборки в VSCode
Проект для модуля ZUNO выполнен на базе фреймворка Arduino и собственных библиотек Z-Wave. Для ознакомления на сайте ZUNO доступен набор [инструкций](https://z-uno.z-wave.me/getting-started/), в том числе инструкция по [настройке сборки в VS Code](https://z-uno.z-wave.me/vs-code-install/). Текущая версия проекта рассчитана на ZUNO-компоненты версии **Z-Uno2(Beta)(3.0.12)**.
:warning: **Версия SDK**:иногда при обновлении SDK из его старых версий могут уехать нужные библиотеки. Поэтому, если вы вдруг установили 3.0.12, но нужных библиотек нет, проверьте, не была ли выпущена новая версия.
После установки расширения ZUNO, в статус-баре VSCode появится доступ к дополнительным настройкам и функциям, в которых нужно установить следующие параметры:
1. режим шифрования **S2**
2. частота **RU**
3. мощность радиосигнала **+2.0dBm**
4. опции комплятора: **-Wall;-Werror**
Также в статус-баре можно выбрать тип платы (должен быть Z-Uno2(Beta)) и последовательный порт. Для того, чтобы собрать и прошить проект, нужно открыть основной файл ***.ino** и в верхней панели нажать кнопку **"Загрузить"**.

### Автоматическая сборка
Автоматическая сборка выполняется командой утилиты zme_make
```sh
zme_make build ${file} \
-S ${core_path}/Z-Uno-G2-Core/hardware/arduino/zunoG2/cores/ \
-S ${core_path}/Z-Uno-G2-Core/hardware/arduino/zunoG2/libraries \
-S ${arm_gcc_path}/lib/gcc/arm-none-eabi/7.2.1/include/ \
-B ${tmp_path} -T ${arm_gcc_path}/bin/ -lc ${clang_path} \
-O make_listing -O BO:-DARDUINO=152 \
-O BO:-DARDUINO_ARCH_ZUNOG2
```
* `${file}` - .ino файл проекта (скетч, должен быть в проекте один)
* `${core_path}` - путь к папке с core-файлами
* `${arm_gcc_path}` - путь к arm-gcc
* `${tmp_path}` - временная директория для файлов сборки
* `${clang_path}` - путь к библиотеке clang
Во временной директории будет создана директория сборки проекта, в которой будет находиться собранный файл .bin.
Также можно собрать используя docker:
```sh
docker build -t zwave-tools .
docker run -v $PWD:/wb-zwave-msw -w /wb-zwave-msw --rm zwave-tools make
```
## Инструкция по прошивке
### Интерфейс
Прошивка осуществляется через интерфейс UART.

Левый нижний вывод, обозначенный на схеме как N$4, является входом сигнала RST. Если используемый переходник USB-UART имеет выход DTS, необходимо подключить его на вход RST. Если такой выход отсутствует, то необходимо при каждой операции (в том числе прошивке) коммутировать сигнал RST вручную на GND.
### Предварительная настройка модуля
Перед первой прошивкой модуля необходимо в первую очередь обновить [бутлодер](https://github.com/Z-Wave-Me/Z-Uno-G2-Core/tree/master/hardware/arduino/zunoG2/bootloaders). Рекомендуется выполнять загрузку бутлодера командой:
```sh
./zme_make boot -c ${bootloader_catalogue_path} -d /dev/ttyUSB0
```
Также возможно загрузить бутлодер, указав конкретный файл:
```sh
./zme_make boot -f zuno_bootloader_HW0704.bin -d /dev/ttyUSB0
```
Файл **zuno_bootloader_HW0704.bin** соответствует плате модуля (малая ZUNO), остальные файлы соответствуют другим аппаратным платформам.
Для просмотра информации об устройстве (PIN-кода, настроек мощности, частоты) воспользуйтесь командой
```sh
./zme_make boardInfo -d /dev/ttyUSB0
```
Пример вывода:
```sh
BOARD INFO
Openning port .............................. OK
Syncing with Z-Uno .............................. OK
------------------------------------------------------------------------------------
Z-Uno board information
------------------------------------------------------------------------------------
FIRMWARE
VERSION: 03.09
BUILD_SEQUENCE: 00001839
BUILD_DATETIME: 2022-11-09T14:22:15(MSK)
SUPPORTED_HWREV: 0704
LIMITS
CODE: 178176 Bytes
RAM: 16384 Bytes
HARDWARE
CHIP_UID: 84 2E 14 FF FE 6A 2C C8
PROD_TIME: 2022-02-14T20:12:15(MSK)
PROD_SN: 115
LOCK: DBG_LOCKED
LICENSE
SUB_VENDOR: 0115
BITMASK: 000000000000003B
FEATURES: [PTI KEY_DUMP MODEM MAX_POWER LONG_RANGE]
CRC16: 5ffd
NETWORK
HOMEID: d695231e
NODEID: 17
SECURITY
S2 DSK: 12029-56086-27556-19986-50975-01644-05326-04495
_____
S2 PIN: 12029
QR-Code: 900160175131120295608627556199865097501644053260449500100844903328022000277005280000100777
------------------------------------------------------------------------------------
SKETCH
NAME: WbMsw
BUILD_DATETIME: 2022-12-05T17:39:29(MSK)
VERSION: 00.00
SIZE: 27844 Bytes
CRC16: 0cb9
FLAGS: 00000100
CORE_VERSION: 03.09
OTA_FW_ID: 0101
OTA_CUSTOM_FW_COUNT: 00
OTA_PINCODE: 2000c020
OTA_OFFSET: 00000000
DBG_CONSOLE_PIN: DEFAULT (TX0)
------------------------------------------------------------------------------------
DEVICE CFG
Z-Wave Region:RU
Security mode:02 Freqi:07 maxTxDb:14 adjTxDb:00 LRTxDb:00 extra_flags:00
DONE
```
Для дальнейшей работы с модулем потребуется запомнить **S2 PIN**, так как он нужен для добавления устройства на сервер. В разделе **DEVICE CFG** можно увидеть текущий режим защиты, частоту, мощность радиосигнала (выводится в hex).
Если модуль прошивается через расширение VSCode, то дополнительно настраивать модуль не требуется.
Если прошивка осуществляется в автоматическом режиме, то необходимо задать режим шифрования (включено), частоту (7 - RU, 0 - EU) и мощность радиосигнала в dBm *10(последний разряд - десяые доли):
```sh
./zme_make boardInfo -d /dev/ttyUSB0 -p freq=7 -p main_pow=20 -p sec=2
```
Установка данной мощности радиосигнала рекомендована производителем модуля.
### Загрузка прошивки
Для прошивки из VSCode нужно открыть основной файл ***.ino** и в верхней панели нажать кнопку **"Загрузить"**.
Для прошивки модуля в автоматическом режиме нужно вызвать команду
```sh
./zme_make bin_upload ./WbMsw.bin -d /dev/ttyUSB0
```
## Инструкция по отладке
Плата модуля имеет отладочный UART интерфейс, по выходу TX которого отправляется вся отладочная информация. Настройки порта: 230400, 8, 1, parity none, flow control none.

Для контроля обмена Modbus-пакетами между MSW и модулем ZUNO есть возможность подпаяться к UART-выходу трансивера шины RS485.

## Проверка версии
При выпуске каждой новой версии необходимо вносить запись в файл changelog, а также вносить версию скетча в файле **WbMsw.ino** в макрос **SKETCH_VERSION**, который находится в глобальном макросе **ZUNO_ENABLE**. Версия скетча задается 16-битным числом, старший байт которого задает мажорную версию, а младший - минорную. Подробная информация о доступных определениях доступна в документации [ZUNO](https://z-uno.z-wave.me/Reference/ZUNO_ENABLE/).
Узнать текущую версию скетча можно командой получения информации об устройстве утилиты **zme_make** ( в разделе **SKETCH** ).
Также версию скетча и версию прошивки контроллера MSW можно в экспертном интерфейсе. Для этого необходимо перейти на вкладку **Настройки**. выбрать устройство, открыть класс команд **Version**.

В разделе **firmware1** приведены мажорная и минорная версия скетча, а в разделе **firmware2** версии прошивки контроллера MSW.
## Обновление прошивки
Для обновления скетча и прошивки контроллера MSW через интерфейс ZWAVE необходимо перейти в экспертный интерфейс, в разделе **Настройки** выбрать нужное устройство, перейти на вкладку **Обновление прошивки**.
Для обновления скетча в выпадающем списке выбрать **1: Дополнительный чип 1**, для обновления контроллера MSW - **1: Дополнительный чип 2**. Далее необходимо выбрать файл прошивки (для прошивки MSW нужно изменить расширение файла на ***.bin***), затем нажать кнопку **Обновить**. Дождаться завершения операции