Страница 3 из 3

Re: mqtt

Добавлено: Пт апр 26, 2019 9:28 am
noname_npc
Добрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?

Re: mqtt

Добавлено: Пт апр 26, 2019 12:36 pm
Strangeman
noname_npc писал(а): Пт апр 26, 2019 9:28 am Добрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?
Если нет возможности нормально отправлять значения в MQTT - остается их разбирать после приёма.
Создаете у объекта дополнительное свойство в качестве временного хранилища.
Привязываете строковое значение, получаемое по MQTT к этому свойству.
Создаете у свойства метод, который при изменении свойства разбирает строку и раскладывает значения по свойствам объекта.

Re: mqtt

Добавлено: Сб апр 27, 2019 11:10 am
noname_npc
С методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?

Re: mqtt

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

Re: mqtt

Добавлено: Вт апр 30, 2019 3:58 pm
Serega66
на ютюбе есть хороший канал "Гениальное просто" рекомендую, много полезного для начинающих

Re: mqtt

Добавлено: Ср май 01, 2019 10:47 pm
Strangeman
noname_npc писал(а): Сб апр 27, 2019 11:10 am С методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?
Определитесь с вопросом. Вам непонятно, как создать метод или какой код написать в созданный метод?

Re: mqtt

Добавлено: Чт май 02, 2019 12:31 am
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 код для метода. Я бы на его основе сделал для остального.

Re: mqtt

Добавлено: Пн май 06, 2019 12:08 am
Strangeman
С выделением подстроки не помогу - сам частенько не с первого раза пишу то, что требуется.
Присвоить значение параметру setGlobal('Объект.Параметр',Значение);
На место Значение можно сразу поместить код выделения подстроки.

Re: mqtt

Добавлено: Пн май 06, 2019 2:25 am
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>' ;//тут значения
  
 }
}