Вывод информации на Max

Здравствуйте. По Телеграмм сейчас проблематично получить информацию с датчиков, ведятся ли работа в сторону получения информации по Max?

1 лайк

Здравствуйте! Я автоматический помощник техподдержки Wiren Board. Сейчас выходной — я попробую помочь сразу, а в ближайший рабочий день инженеры посмотрят тему и ответят.
Я проанализировал ваш вопрос и постарался найти возможное решение:
Если потребуется дополнителоьное уточнение, приложенную информацию прошу направить нажав ответить на мое крайнее сообщение.

Сейчас официально поддерживается несколько способов получения данных с контроллера Wiren Board “наружу”:

  1. Телеграм-бот
    Да, в последнее время у Телеграма бывают перебои, и это может влиять на доставку уведомлений/информации. Это связано не с Wiren Board, а с внешней инфраструктурой.
    Прямой “официальной” интеграции именно с VK Mini Apps / VK Mini Max или аналогичными платформами у нас пока нет (если вы имеете в виду именно их под словом “Max”).

  2. Альтернативные варианты, которые можно использовать уже сейчас
    В зависимости от того, что именно вам нужно (“просто смотреть показания” или “полноценное управление”), можно рассмотреть:

    • Web-интерфейс Wiren Board по HTTPS через Интернет

      • Настроить проброс порта через роутер или VPN (WireGuard, OpenVPN).
      • Использовать внешний домен + HTTPS (через nginx / reverse proxy).
        Подходит, если вы готовы немного настроить сеть и безопасность.
    • MQTT + свой клиент / бота

      • Данные всех датчиков уже есть в MQTT-брокере на контроллере.
      • Можно написать своего бота/сервис (на Python, Node.js и т.п.), который:
        • подписывается на нужные топики MQTT,
        • отправляет данные туда, куда вам удобно (другая платформа, ваш сервер, другой мессенджер).
    • HTTP API / REST / вебхуки

      • Через wb-mqtt-http можно получать и менять значения датчиков / устройств по HTTP-запросам[1].
      • Далее эти данные можно отправлять в:
        • любой внешний сервис,
        • свой фронтенд/приложение,
        • другую облачную платформу (Home Assistant, Node-RED и т.п.).
  3. Работы именно “в сторону Max”
    На текущий момент в открытой документации и на форуме нет информации о том, что ведётся отдельная официальная разработка именно под “Max” (если речь про конкретный мессенджер/платформу).
    Обычно новые интеграции:

    • либо делаются через открытые протоколы (MQTT, HTTP, Modbus и т.д.),
    • либо сообществом (скрипты, интеграции в Home Assistant, Node-RED, кастомные боты).

    Поэтому сейчас наиболее реальный путь — использовать уже доступные интерфейсы (MQTT, HTTP, VPN/HTTPS к веб-интерфейсу) и “прикрутить” их к нужной вам платформе.


Чтобы инженеры поддержки могли ответить более предметно, пожалуйста, уточните в ответе на это сообщение:

  1. Что именно вы имеете в виду под “Max”:
    • конкретный мессенджер / сервис?
    • приложение или платформу (например, VK Mini Apps / VK Calls / другое)?
  2. Что вам нужно:
    • просто просматривать показания датчиков,
    • получать уведомления/алерты,
    • либо полноценно управлять устройствами?

На основе этого можно будет подсказать либо готовый вариант, либо схему интеграции.

Примечание: Я — искусственный интеллект, а не сотрудник-человек. В моих ответах возможны неточности.


  1. https://wirenboard.com/wiki/Wb-mqtt-http ↩︎

Нужно получать информацию со счетчиков и датчиков температуры, в том числе нужны сообщения при аварийных значениях.

Здравствуйте! Я автоматический помощник техподдержки Wiren Board. Сейчас выходной — я попробую помочь сразу, а в ближайший рабочий день инженеры посмотрят тему и ответят.
Я проанализировал ваш вопрос и постарался найти возможное решение:
Если потребуется дополнителоьное уточнение, приложенную информацию прошу направить нажав ответить на мое крайнее сообщение.

Сейчас у вас две основные задачи:

  1. Просмотр показаний со счётчиков и датчиков температуры
  2. Получение уведомлений при аварийных значениях

Ниже — несколько рабочих вариантов, которые уже можно реализовать сейчас (независимо от Телеграма и без “официального Max”, которого пока нет).


1. Просмотр показаний счётчиков и датчиков

Веб-интерфейс Wiren Board (через Интернет/локально)

Если достаточно просто смотреть значения:

  • Локально — заходите в веб-интерфейс контроллера (обычно http://wirenboard или по его IP). Там уже есть все значения датчиков и счётчиков.
  • Извне (через Интернет) — делается так:
    • Либо VPN (WireGuard / OpenVPN) до вашей сети, где стоит контроллер.
    • Либо проброс порта + reverse proxy (nginx) и HTTPS, если готовы настраивать безопасность вручную.

Документация по доступу и веб-интерфейсу WB 8/8.5 дана здесь[1].


2. Оповещения при аварийных значениях

Сам контроллер может:

  • отслеживать значения датчиков/счётчиков,
  • реагировать на них через правила (wb-rules),
  • отправлять уведомления разными способами (в том числе не через Телеграм).

2.1. Логика аварий в wb-rules

В wb-rules можно задать, например:

  • “Если температура > 30 °C — сформировать сообщение/запрос”
  • “Если расход/показание счётчика не меняется/выходит за пределы — тоже прислать уведомление”

Простейший пример на wb-rules (условный, нужно будет подставить ваши реальные топики MQTT):

defineRule("temp_alarm", {
  whenChanged: "wb-mqtt-sensor/28-00000xxxxxxx/temperature",
  then: function (newValue, devName, cellName) {
    var temp = parseFloat(newValue);
    if (temp > 30) {
      // здесь вместо log можно вызывать HTTP-запрос / записывать в отдельный топик
      log("Авария: высокая температура = " + temp);
      // пример: записать флаг аварии
      dev["alerts"]["high_temp"] = 1;
    } else {
      dev["alerts"]["high_temp"] = 0;
    }
  }
});

Точно так же можно сделать правило для аварии по счётчику (по значению, скорости изменения и т.п.). Общие примеры правил описаны в документации по wb-rules[2].


2.2. Куда отправлять уведомления (вместо Телеграма)

Далее есть несколько вариантов “вывода наружу”:

  1. HTTP-запросы (webhook)
    Из правила можно:

    • вызывать внешний скрипт/сервис (curl, свой демо-сервис),
    • этот сервис уже отправит уведомление туда, куда вам удобно (например, в ваш “Max”, если он умеет принимать webhooks / HTTP API, или в другой мессенджер).

    Через пакет wb-mqtt-http можно работать с контроллером по HTTP[3], а ваш внешний сервис — забирать значения с WB или принимать от него события.

  2. MQTT + внешний бот/сервис

    • Правила создают отдельные MQTT-топики “авария/нет аварии”.
    • Снаружи запускаете маленький скрипт (Python/Node.js), который:
      • подписывается на эти топики,
      • при изменении статуса аварии отправляет уведомление в нужную вам платформу (Max, почта, другой мессенджер).
  3. E-mail / другие каналы
    Если “Max” пока недоступен или не определён, можно:

    • использовать почту (скрипт, который по сигналу WB шлёт письмо),
    • или, если Max — это, например, интеграция ВК/другой платформы, — почти все они имеют HTTP API, куда можно бить из внешнего сервера.

Что желательно уточнить

Чтобы инженеры дали уже конкретное решение “под ключ”, пожалуйста, ответьте:

  1. Что именно за “Max” вы имеете в виду:
    • конкретный мессенджер,
    • сервис в составе какой-то экосистемы,
    • или собственное/корпоративное приложение?
  2. Есть ли у вас:
    • внешний сервер/хостинг, где можно запустить небольшой сервис/бота,
    • или хотите, чтобы всё работало исключительно на самом контроллере?

Если напишете:

  • модель контроллера (например, Wiren Board 8 / 8.5),
  • какие именно счётчики и датчики температуры (модель/интерфейс: Modbus, 1-Wire, M-Bus и т.д.),
    я смогу набросать пример уже конкретного правила wb-rules для аварий и общую схему отправки уведомлений под вашу задачу.

Примечание: Я — искусственный интеллект, а не сотрудник-человек. В моих ответах возможны неточности.


  1. Wiren Board 8.5 — Wiren Board ↩︎

  2. Движок правил wb-rules — Wiren Board ↩︎

  3. https://wirenboard.com/wiki/Wb-mqtt-http ↩︎

IntraScada уже выкатили плагин под мах, там ничего сложного - примерно аналогично телеграму, судя по описанию на сайте мах-а.

У мах-а, вроде, даже пример отправки через curl есть

НО! Главный вопрос в создании бота - только на “полноценную” организацию и с кучей возни с регистрацией, ИНН и прочими чудесами. Простым смертным пока - низ-зя

Добрый день.
На сегодняшний день конкретного решения нет.
Добавлю ещё одно пожелание в книгу предложений.

2 лайка

Да, именно так. Если бота создать так же как в телеграмме - то, думаю что пример написать - дело пару часов.
А так связываться и не особо хочется.

1 лайк

Здравствуйте. Может кому-то пригодится отправка в макс бот. (к коду не придирайтесь, я дилетант в этом деле).

  		var d = new Date();
		var message ="Привет! Это сообщение от бота22."+" ("+d.getDate()+"/"+(d.getMonth()+1)+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+")";                                            // напишите свой текст сообщения
		var access_token = "***"; // токен получал и регистрировал от юрлица
		var user_id = ***;                                      // замените на свой _id. Узнать в мессенджере MAX можно, отправив команду /id боту @id616301431999_bot в личные сообщения
		var command = 'curl -s -X POST "https://platform-api.max.ru/messages?user_id={}" -H "Authorization: {}" -H "Content-Type: application/json" -d \'{"text": "{}"}\''.format(user_id, access_token, message);
		runShellCommand(command);

А ваши контроллеры ИП и юрлица не используют в России? ))
Для них не хотите поддержку Max запилить?
В связи с блокировками телеги особенно актуален вопрос.

Тем более, коль не сложно. Могу токеном временно поделиться, если надо.

Копипастнуть Notify.sendTelegramMessage и немного отрефакторить…

Для этого этот самый Max надо поставить. То есть строить изолированную какую-то подсеть, рассматривая как вредоносное.
Добавил в пожелания.

1 лайк

Что за очередная паранойя?
Но звучит это просто как отговорка, чтобы не делать.
Шапочку из фольги надеть не забудьте, когда будете “строить изолированные сети” :smile:

абсолютно нормальный подход имхо
про шапочку фольговую явно не к месту

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

Сожалею, если создается такое впечатление.

Напомню, я прочитал - и проверил.
Шапочки - это скорее про бездоказательные утверждения.

1 лайк

Прочитал и… вообще ничего страшного там не увидел. ВООБЩЕ.
Остальная куча софта на телефоне собирает, я думаю, куда больше информации.
Просто вы про это еще не читали ))

Так-то вопрос с оповещениями актуален.
Но к сожалению, вопрос из чисто технической плоскости перешел в политическую :wink: - не профессионально!
А как вам такой вариант, написать свое приложение, которое будет принимать оповещения от устройств прикрепленных в облако. Реализовать только оповещения, а там по ссылке открывать браузер(как это сейчас работает).

1 лайк

А сейчас в планах есть, да. Оповещение из облака.

ну в таком случае вы можете и бота себе сами сделать, в том числе с применением отечественного гигачата, или как минимум заказать у кого-то. Претензии к WB вообще не обоснованы.

Тут, как в том анекдоте, есть нюанс ©…

Главная беда оповещений - жор батареи, если не используется встроенная в систему телефона архитектура. Для стационарного компа можно что-то намутить из серии ICQ/Jabber/etc… Для андроида это сервисы гугола.

Пару лет назад пытался пробовать. Из свободных пробовал owntracks, но: а) это жрало батарейку, б) это жрало батарейку под GPS, но таки не всегда внятно присылало данные по нашим мобильным сетям.

В итоге - убил это дело.

PS: Кстати да, если как-то возродить jabber, он же google GTalk и т.п. оно, возможно, как-то решит проблему оповещения… Но таки да - ICQ / QiP смотрят на нас из 2000-ных.

Да сделан он уже давно. К WB нет никаких претензий.
У меня оповещения в Max уже сделаны. Просто хочется не костыль свой использовать на устройствах, а так скажем “заводскую официальную” фичу.

/etc/wb-rules-modules/custom_notify.js

exports.sendMaxMessage = function(token, chatId, text) {
  log('sending max message: {}', text);
  chatId = chatId.toString();
  queryParam = (chatId[0] == "-") ? "chat_id" : "user_id";
  runShellCommand(
    "curl -s -X POST https://platform-api.max.ru/messages?{}={} -H 'Content-Type: application/json' -H 'Authorization: {}' -d @-".format(queryParam, chatId, token),
    {
      captureErrorOutput: true,
      captureOutput: true,
      input: '{"text": "{}"}'.format(text),
      exitCallback: function exitCallback(exitCode, capturedOutput, capturedErrorOutput) {
        if (exitCode != 0)
          log.error(
            'error sending max message:\n{}\n{}',
            capturedOutput,
            capturedErrorOutput
          );
        try {
          var response = JSON.parse(capturedOutput);
          if (!response.message.timestamp)
            log.error(
              'error sending max message:\n{} {}',
              response.code,
              response.message
            );
        } catch (e) {
          log.error('error parsing response: {}', e);
        }
      },
    }
  );
};

В скриптах подключаем и пользуемся по аналогии с заводским Notify.sendTelegramMessage…

var CustomNotify = require("custom_notify");
...
CustomNotify.sendMaxMessage("token", "chatId", "text");

1 лайк

Отлично.
Добавил в пожелания ссылку,