Majordomo MQTT

Добрый день!
Возник вопрос по MQTT.
На WB7 установил majordomo. В нем из макета дополнений установил дополнение для интеграции данных с контроллера Wirenboard.
В правилах WB написан скрипт, в нем создано виртуальное устройство кнопка(вкл\выключения)

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

Данные по состоянию кнопки(виртуального устройства) в MJ через mqtt получаю.
Создал кнопку в веб интерфейсе MJ.
Связал объект с данным значением, но данные из MJ в wirenboard не передаются

Не пойму почему не работает, может кто подскажет куда копать.
Если захожу по ssh и запускаю команду
mosquitto_pub -t “/devices/1alarmVkl/controls/enable d /on” -m “0”
То в интерфейсе wirenboard кнопка меняет значение.
Как из веб интерфейса MJ изменить значение в wirenboard
И что означает readonly в передаваемых значениях wirenboard?

Добрый день.

Точно имено так? с пробелом в “enable d”
Обратите внимание, тут вы публикуете “0” - в топик on

Тут он нормально отрабатывает.

А из majordomo не хочет.
Поэтому у меня 2 вопроса
1)И что означает readonly в передаваемых значениях wirenboard? И влияет он на передачу данных MQTT в обратном направлении?
2) Как понять в чем проблема при передачи данных из MJ в WB? Куда копать?

“enabled” без пробела.

С пробелом.

Где именно? Что и кому передается, какой топик?
Я совершенно не понимаю на что смотреть на картинке, мне бы для понятности просто текстом…
Что и куда публикуется из внешнего ПО, как оно должно (предположительно) работать и как работает.

Есть wirenboard 7 на нем установлен majordomo. В majordomo из маркета дополнений установлен модуль Wirenboard который по протоколу mqtt передает данные в majordomo.
Настройки модуля


Данные в mqtt-каналах

Получаемые данные из wirenboard в majordomo

привязал к объекту и при нажатии кнопки он по протоколу mqtt должен отправить данные обратно.

Но он их не передает
Может в magordomo тоже надо поднять mqtt ? Или он пользуется mosquitto_pub который установлен на wb7(так как magordomo установлен на одном сервере?)

Так, отлично. Что должно публиковаться и в какой топик? Я вижу верный путь тут: “/devices/1alarmVkl/controls/enabled/on”
При публикации в него - switch изменит состояние.

По какому пути вы публикуете из “Majordomo”?

Да switch меняет состояние.

По какому пути вы публикуете из “Majordomo”?
Вот тут я не могу точно сказать по какому пути.
Обычно я привязывал связанный объект к данным полученным через mqtt и они через метод switch меняли данные(но это прокатывало на raspberry и там запущен был модуль mqtt)
Сейчас в модуле mqtt нет данных, они собираются в модуле wirenboard.

То есть настраиваете интеграцию - но не знаете как работает настраиваемое? А в документации к “Majordomo” нет описания?
То есть у вас цель - записать в топик (известный) значение (известное) но не знаете как это сделать именно в этом ПО?
И вы не можете сказать куда будет писаться значение?

Не совсем так. Принцип работы mqtt я понимаю. Настраивал на raspberry.
Но есть не понимание определtнной части. На wb7 (одном устройстве) работают два сайта(WB и MJ) WB получает данные по mqtt протоколу и на нем все работает(так как данные я могу и получить и изменить, что из веб интерфейса, что из консоли)
В MJ я могу через дополнительный модуль подключаемый к сайту по этому же протоколу получить данные, но не могу их менять и меня смущает первое это написано значение(только для чтения readonly).Ввиду того, что как работает этот дополнительный модуль я не нашел, может он действительно только считывает значения а обратно не отдает и второе если я устанавливаю дополнительный модуль mqtt то он пишет, что он online и работаеn (и как я понимаю он обращается к тому же mosquitto, что и сайт WB). но при этом данные не собирает. Поэтому пока пытаюсь разобраться если начну изменять настройки mosquitto чтобы работал модуль MQTT в MJ, повлияет это на работу WB ? Так как в моем понимании они используют один и тот же сервис mosquitto.
Либо думаю как изменить подход.
Я хотел правила для устройств писать на js в wb-rules и потом управлять через web интерфейс MJ и телефонный модуль mjdroid.
А тут если не получится то придется пересматривать подход.
Либо разобраться как в php написать прямую команду mosquitto_pub -t “/devices/1alarmVkl/controls/enabled/on” -m “1”
для обращения через mqtt для изменения значения в виртуальном устройстве WB.
Или как в php изменить переменную в js скрипте, чтобы включить выключить виртуальную кнопку?
В общем пока экспериментирую и пытаюсь разобраться как лучше и на чем лучше сделать.

Это написано в самом интерфейсе Majordomo?
Если значение удачно меняется с помощью mosquitto_pub и изменение отрабатывает - нет разницы откуда его записывать.

Ну, тогда имеют смысл эксперименты - например публиковать что-то в несуществующий топик /temp/temp1 и посмотреть - публикуется ли.

Тут Интеграция с MajorDoMo - #10 от пользователя Andy видел такое же - скорее всего тоже публикует новое значение не в “/on”.

Не надо менять настройки брокера. Он уже работает.

А в чем преимущества такого подхода? Именно “с телефона” удобнее Яндекс УД.
Посмотрел-поискал на форумах, проблем не увдел. Может что-то очевидное не замечаем? А на самом Majordomo - подсказывают?

Посмотрел-поискал на форумах, проблем не увдел. Может что-то очевидное не замечаем? А на самом Majordomo - подсказывают?
На Majordomo ответили
ничего не знаю про виренбоард, но вижу, что у вас данные привязаны одновременно к статусу и методу свич объекта. в модуле москита автор специально заблокировал такую ситуацию. какова логика у вас?

https://mjdm.ru/forum/viewtopic.php?f=5&t=7692&p=132244#p132244

А в чем преимущества такого подхода? Именно “с телефона” удобнее Яндекс УД.

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

  1. сигнализацию в загородном доме(проводные датчики подключенные к mcm8) и отправка уведомлений к себе по sms или telegram
    2)Управление светом и электричеством. У меня везде настенные выключатели и розетки zigbee (остались от Xiaomi шлюза).
  2. управление (эл. котлом) телым полом
  3. получение данных с датчиков подключенных к nodemcu(управление теплицей)
  4. показания счетчика по rs485 [Энергомера CE102M подключить через USBадаптер]
  5. И управление этим всем с телефона(удаленно через openvpn или pptp-vpn) в удобном интерфейсе , а позднее приобрести яндекс станцию и управлять голосом
    А я пока эксперементирую на том что есть и пробую чтобы понять как удобнее и что проще и где какие костыли. Часть получилось реализовать, но хочется удобный и в тоже время не сильно замороченный интерфейс управления с телефона.
    Что такое Яндекс УД?
    Есть еще wifi реле на Din-рейке, sonoff управляются через программу ewelink, В дальнейшем было бы не плохо и их прикрутить
    В общем мозгу не даю засохнуть )) Хобби так сказать, ну и интересно.

Из ssh консоли все прекрасно публикует.
отправлял и показания и hello world

А вы пробовали связаться с автором интеграции? Мы не проверяли работу Majordomo с нашим контроллером, поэтому опыта у нас почти нет.

Забавно. Но “статус” - как раз “/devices/1alarmVkl/controls/enabled”
А “метод” - “/devices/1alarmVkl/controls/enabled/on”
Верно описывают, один и тот же топик использовать для установки нового значения и для чтения состояния - нельзя, цикл возникнет.

По mqtt - да, работает.

УмныйДом

Перешить на Tasmota, типовой путь.

написал автору скрипта для интеграции wirenboard. Буду ждать ответа. Может что подскажет

Согласен.
Вопрос.
у меня два сайта на wb7
один по адресу 192.168.1.64 и находится по пути /var/www
второй по адресу 192,168,1,64:82 и находится по пути /mnt/data/majordomo
Если попробовать на php обратиться к переменной в js скрипте по пути где лежат скрипты /mnt/data/etc/wb-rules то мне надо делать разрешения для этих папок и файлов? Чтобы можно было прочитать значения переменных из php?
На сколько я помню в debian там идут разграничения по доступу? И если да то как и для какого пользователя это делается? www-data или root(хотя у него полный доступ)

Я почитал про это, но пока последняя задача. оставил на потом.