Появился новый модуль для взаимодействия с zigbee по mqtt, захотел переехать на него малой кровью, перетащив данные из старого.
Накидал запросы к базе, для переноса устройств и их привязок.
P.S. Кнопки перенесуться некорректно, свойства придется привязывать заново.
ВНИМАНИЕ! Делайте то, что ниже, только если отдаете отчет своим действиям. Пользоваться двумя модулями одновременно не надо, второй надо будет удалить после проведенных операций! Перед подобными операциями, обязательно сделайте бэкап базы данных!
Останавливаем циклы MajorDoMo.
В mysql выполняем следующие команды, они очистят таблички нового модуля и наполнят их содержимым из модуля zigbee2mqtt.
Все данные, введенные ранее в модуль zigbeedev будут потеряны.
delete from zigbeedevices;
insert into zigbeedevices (TITLE,IEEEADDR,DESCRIPTION,IS_HUB,IS_BATTERY,BATTERY_LEVEL,FULL_PATH,MANUFACTURER_ID,MODEL,MODEL_NAME,MODEL_DESCRIPTION,VENDOR)
(select TITLE,IEEEADDR,TITLE, CASE
WHEN TYPE = 'Coordinator' then 1
else 0 end as TYPE,
CASE
WHEN POWERSOURCE = 'Battery' then 1
else 0 end AS Battery,0,CONCAT(GW, '\/', IEEEADDR) AS FULL_PATH,MANUFID,MODELID,SELECTTYPE,SELECTTYPE,SELECTVENDOR from zigbee2mqtt_devices);
delete from zigbeeproperties;
insert into zigbeeproperties (TITLE,VALUE,DEVICE_ID,LINKED_OBJECT,LINKED_PROPERTY,LINKED_METHOD,UPDATED)
(select METRIKA,VALUE,(SELECT ID from zigbeedevices where IEEEADDR = SUBSTR(SUBSTRING_INDEX(zigbee2mqtt.PATH, "\/", 2), INSTR(SUBSTRING_INDEX(zigbee2mqtt.PATH, "\/", 2), "\/")+1)) as devid, LINKED_OBJECT,LINKED_PROPERTY,LINKED_METHOD,UPDATED from zigbee2mqtt where LINKED_OBJECT <> ''
);
update pvalues set LINKED_MODULES=REPLACE(LINKED_MODULES,'zigbee2mqtt','zigbeedev') where LINKED_MODULES LIKE '%zigbee2mqtt%';
Запускаем MajorDoMo, проверяем работоспособность модуля zigbeedev, и если всё хорошо, удаляем модуль zigbee2mqtt.
P.S.
Переезд на модуль zigbeedev - вкусовщина. Можете продолжать использовать модуль zigbee2mqtt. zigbeedev - не замена, а альтернатива.
Королёв, Россия
На форуме: London