mqtt

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

noname_npc
Сообщения: 48
Зарегистрирован: Сб июл 21, 2018 9:08 pm
Откуда: Калининград
Благодарил (а): 10 раз
Поблагодарили: 5 раз

Re: mqtt

Сообщение noname_npc » Пт апр 26, 2019 9:28 am

Добрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?
Аватара пользователя
Strangeman
Сообщения: 208
Зарегистрирован: Ср янв 16, 2013 6:35 pm
Откуда: Золотарево
Благодарил (а): 101 раз
Поблагодарили: 19 раз
Контактная информация:

Re: mqtt

Сообщение Strangeman » Пт апр 26, 2019 12:36 pm

noname_npc писал(а):
Пт апр 26, 2019 9:28 am
Добрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?
Если нет возможности нормально отправлять значения в MQTT - остается их разбирать после приёма.
Создаете у объекта дополнительное свойство в качестве временного хранилища.
Привязываете строковое значение, получаемое по MQTT к этому свойству.
Создаете у свойства метод, который при изменении свойства разбирает строку и раскладывает значения по свойствам объекта.
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
noname_npc
Сообщения: 48
Зарегистрирован: Сб июл 21, 2018 9:08 pm
Откуда: Калининград
Благодарил (а): 10 раз
Поблагодарили: 5 раз

Re: mqtt

Сообщение noname_npc » Сб апр 27, 2019 11:10 am

С методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?
Serega66
Сообщения: 111
Зарегистрирован: Ср фев 22, 2017 12:08 pm
Благодарил (а): 55 раз
Поблагодарили: 13 раз

Re: mqtt

Сообщение Serega66 » Вт апр 30, 2019 3:52 pm

sampl писал(а):
Пн апр 15, 2019 9:24 am
Ребят подскажите с дэфолт сцене МЖД какой топик и какая команда для Свичь1 на вкл-выкл пытаюсь разобраться с этой системой ☺️
Дефолтно свитч это объект там в объектах(объекты\сдевайсы\сконтроллеры\среле\свитч) меняется его статус вкл=1 выкл=0 (объекта свитч). когда железяку (вифи выключатель или контроллер) соединишь с брокером задав железяке адрес брокера в модуле мкутт мажордома появится статус железяки и в модуле мкутт надо прикрутить её к объекту. както так если попростому
Serega66
Сообщения: 111
Зарегистрирован: Ср фев 22, 2017 12:08 pm
Благодарил (а): 55 раз
Поблагодарили: 13 раз

Re: mqtt

Сообщение Serega66 » Вт апр 30, 2019 3:58 pm

на ютюбе есть хороший канал "Гениальное просто" рекомендую, много полезного для начинающих
Аватара пользователя
Strangeman
Сообщения: 208
Зарегистрирован: Ср янв 16, 2013 6:35 pm
Откуда: Золотарево
Благодарил (а): 101 раз
Поблагодарили: 19 раз
Контактная информация:

Re: mqtt

Сообщение Strangeman » Ср май 01, 2019 10:47 pm

noname_npc писал(а):
Сб апр 27, 2019 11:10 am
С методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?
Определитесь с вопросом. Вам непонятно, как создать метод или какой код написать в созданный метод?
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
noname_npc
Сообщения: 48
Зарегистрирован: Сб июл 21, 2018 9:08 pm
Откуда: Калининград
Благодарил (а): 10 раз
Поблагодарили: 5 раз

Re: mqtt

Сообщение noname_npc » Чт май 02, 2019 12:31 am

Какой код написать в метод. У меня есть устройство ( GSM сигнализация Navigard NV 8704) которое публикует на брокер вот такие данные:
dv_12v=13.8&dv_gsm1=28&dv_gsm2=0
dv_ev=0000E60200000&dv_time=20190429084501
ZoneStat=1000000000000000&ZoneAlarm=0000000000000000&PartStat=04040000000000000000000000000000 и так далее.
Что означает данная информация я знаю, но нужно разобрать строки, чего я к сожалению не умею.
Мне бы как пример для строки dv_12v=13.8&dv_gsm1=28&dv_gsm2=0 код для метода. Я бы на его основе сделал для остального.
Аватара пользователя
Strangeman
Сообщения: 208
Зарегистрирован: Ср янв 16, 2013 6:35 pm
Откуда: Золотарево
Благодарил (а): 101 раз
Поблагодарили: 19 раз
Контактная информация:

Re: mqtt

Сообщение Strangeman » Пн май 06, 2019 12:08 am

С выделением подстроки не помогу - сам частенько не с первого раза пишу то, что требуется.
Присвоить значение параметру setGlobal('Объект.Параметр',Значение);
На место Значение можно сразу поместить код выделения подстроки.
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: mqtt

Сообщение xor » Пн май 06, 2019 2:25 am

noname_npc писал(а):
Чт май 02, 2019 12:31 am
Какой код написать в метод. У меня есть устройство ( GSM сигнализация Navigard NV 8704) которое публикует на брокер вот такие данные:
dv_12v=13.8&dv_gsm1=28&dv_gsm2=0
dv_ev=0000E60200000&dv_time=20190429084501
ZoneStat=1000000000000000&ZoneAlarm=0000000000000000&PartStat=04040000000000000000000000000000 и так далее.
Что означает данная информация я знаю, но нужно разобрать строки, чего я к сожалению не умею.
Мне бы как пример для строки dv_12v=13.8&dv_gsm1=28&dv_gsm2=0 код для метода. Я бы на его основе сделал для остального.
посмотрите в сторону explode http://www.php.su/explode

Код: Выделить всё

$str ="dv_12v=13.8&dv_gsm1=28&dv_gsm2=0
dv_ev=0000E60200000&dv_time=20190429084501
ZoneStat=1000000000000000&ZoneAlarm=0000000000000000&PartStat=04040000000000000000000000000000";
$lines = preg_split("/[\s,]+/",$str); //разобьем на строки
foreach ($lines as $ln){
 echo '----------<br>' ;
$pairs = explode('&',$ln); // разобьем на пары а=б
 foreach($pairs as $a){
  $t = explode('=',$a); // разберем равенство
  echo $t[0].'<br>' ;//тут раскидывайте по свойствам
  echo $t[1].'<br>' ;//тут значения
  
 }
}
За это сообщение автора xor поблагодарил:
noname_npc (Пн май 06, 2019 3:41 am)
Рейтинг: 1.16%
Ответить