Как дабавить кнопку в панель устройств к действующему устройству?

Доброго дня
Вопрос, есть устройство zigbee, данные выведены, можно ли добавить к этому устройству в эту же панель кнопку ?


Пишу такой код, но он пишет
Ошибка правила: Error: Device with given ID already exists
/sbuild-nonexistent/go/pkg/mod/github.com/wirenboard/go-duktape@v0.0.0-20210723134114-881337fff8cb/api.go:124
anon native strict preventsyield
anon /etc/wb-rules/9_button.js:9 preventsyield

Код

defineVirtualDevice("1-etag", {
    title: "1-etag",
    cells: {
	enabled: {
	    type: "switch",
	    value: false
	},
    }
});

Добрый день.
Да, конечно. Например:

//11_22_test_01.js

var dashName = "system";
var ctrlName = "cDate";

//Тут проверим есть ли уже контрол и если нет - создадим.
  if (!getDevice(dashName).isControlExists(ctrlName)) {
    getDevice(dashName).addControl(ctrlName, {
      type: "text",
      value: "",
      readonly: true
    });
  }

//Тут сделаем таймер, котрый будет обновлять контрл
setInterval(function(){
 dev[dashName][ctrlName] = (new Date()).toString();
 log.info("timer fired", (new Date()).toString());
}, 1000);

Ключевое: не пересоздавать устройство а добавить уже существующему. То есть если объект создан - надо с ним работать как с объектом.

Попробовал вот так

var dashName = "1-etag";
var ctrlName = "Button_l";

//Тут проверим есть ли уже контрол и если нет - создадим.
  if (!getDevice(dashName).isControlExists(ctrlName)) {
    getDevice(dashName).addControl(ctrlName, {
      cells: {
    enabled: {
	    type: "switch",
	    value: false
   		 }
      },
    });
  }

Кнопка не создается. Если вставить ваш пример то создается поле со временем
cDate 2023-01-10 21:38:08.557+05:00
Я понимаю, как раз отвечает за создание текста

 type: "text",
      value: "",
      readonly: true

И для чего делать таймер , который будет обновлять контрл, я про вот эту часть }, 1000);? Или это из вашего кода просто данные?

image

С каим выводом? Это совершенно неинформативно, вот совсем не диагностика… Что происходит в топиках на момент создания? Что выводится? Что выводят диагностические сообщения, вы же их добавили?

А что за элемет хотите тут описать? Ну прочитайте документцию, пожалуйста.

А где эта документация находится? Кроме как
Движок правил wb-rules — Wiren Board и примеры написания нескольких кодов я не нашел.
Скиньте ссылку где смотреть. А то методом тыка не очень интересно пытаться выяснить как работают внутренние функции.
Создать хочу кнопку, что управлять реле, данные которые выводятся выше конкретно переключать state_left.
отдельно у меня кнопка сделана в веб интерфейск(смотрите первое сообщение) и вкл и выключает, я хотел чтобы она находилась именно в одном поле(окне) с данными получаемыми от реле.
По ошибкам он пишет при создании кнопки Button_22, в журнале, что не тот type
ERROR: Error in creating control Button_22 on device button: button/Button_22: no control type
Какой тип должен быть у кнопки? Я считал что switch

Спасибо нашел мануал на гитхабе, по запросу getDevice wirenboard

Попробую разобраться как работает этот getDevice и как вывести кнопку в нужном мне окне

это лишнее при вызове addControl

По ошибкам он пишет при создании кнопки Button_22, в журнале, что не тот type
ERROR: Error in creating control Button_22 on device button: button/Button_22: no control type
Какой тип должен быть у кнопки? Я считал что switch

Спасибо. Убрал и заработало. ))

Вопрос.
Я тестово сделал эту кнопку. Но после того как переписал скрипт(изменил насзвание), то появилась новая кнопка, а старая не удалилась(старый скрипт удалил). Она получается сейчас прописана где то в системе и может работать? Если да то ее надо будет так же скриптом удалять?

Что не так делаю?
Написал if (getDevice(“1-etag”).isControlExists(“Button_L”)){
getDevice(“1-etag”).removeControl(“Button_L”)} ;``

На экране и mqtt он есть
image

В журнале пишет что нет такого элемента управления
ERROR: Error in removing control Button_L on device 1-etag: No such control

Удалилось послед удаления устройства нажав иконки корзины и перезагрузив wirenboard
image

Но хочется понять. После того как отработал скрипт и создал кнопку для устройства.
Она на совсем остается в системе и скрипт больше не нужен или до перезагрузки(хотя я перезагружал WB)?(кроме случаев когда WB будет сброшен в заводские настройки) И с ней можно работать как и с физическими устройствами?

Топик создан. Просто удалите его.

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

Да, конечно.