mqtt

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

Модератор: immortal

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

Re: mqtt

Сообщение noname_npc »

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

Re: mqtt

Сообщение Strangeman »

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
Откуда: Калининград

Re: mqtt

Сообщение noname_npc »

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

Re: mqtt

Сообщение Serega66 »

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

Re: mqtt

Сообщение Serega66 »

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

Re: mqtt

Сообщение Strangeman »

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
Откуда: Калининград

Re: mqtt

Сообщение noname_npc »

Какой код написать в метод. У меня есть устройство ( 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
Сообщения: 209
Зарегистрирован: Ср янв 16, 2013 6:35 pm
Откуда: Золотарево
Контактная информация:

Re: mqtt

Сообщение Strangeman »

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

Re: mqtt

Сообщение xor »

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>' ;//тут значения
  
 }
}
Ответить