mqtt
Модератор: immortal
-
- Сообщения: 48
- Зарегистрирован: Сб июл 21, 2018 9:08 pm
- Откуда: Калининград
- Благодарил (а): 10 раз
- Поблагодарили: 5 раз
Re: mqtt
Добрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?
- Strangeman
- Сообщения: 208
- Зарегистрирован: Ср янв 16, 2013 6:35 pm
- Откуда: Золотарево
- Благодарил (а): 101 раз
- Поблагодарили: 19 раз
- Контактная информация:
Re: mqtt
Если нет возможности нормально отправлять значения в MQTT - остается их разбирать после приёма.noname_npc писал(а): ↑Пт апр 26, 2019 9:28 amДобрый день всем. Если в топике mqtt передается строка такого вида dv_12v=13.9&dv_gsm1=28&dv_gsm2=0 как сделать что бы выводить эти данные раздельно в МД а не всю строку сразу?
Создаете у объекта дополнительное свойство в качестве временного хранилища.
Привязываете строковое значение, получаемое по MQTT к этому свойству.
Создаете у свойства метод, который при изменении свойства разбирает строку и раскладывает значения по свойствам объекта.
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
-
- Сообщения: 48
- Зарегистрирован: Сб июл 21, 2018 9:08 pm
- Откуда: Калининград
- Благодарил (а): 10 раз
- Поблагодарили: 5 раз
Re: mqtt
С методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?
-
- Сообщения: 111
- Зарегистрирован: Ср фев 22, 2017 12:08 pm
- Благодарил (а): 55 раз
- Поблагодарили: 13 раз
Re: mqtt
Дефолтно свитч это объект там в объектах(объекты\сдевайсы\сконтроллеры\среле\свитч) меняется его статус вкл=1 выкл=0 (объекта свитч). когда железяку (вифи выключатель или контроллер) соединишь с брокером задав железяке адрес брокера в модуле мкутт мажордома появится статус железяки и в модуле мкутт надо прикрутить её к объекту. както так если попростому
- Strangeman
- Сообщения: 208
- Зарегистрирован: Ср янв 16, 2013 6:35 pm
- Откуда: Золотарево
- Благодарил (а): 101 раз
- Поблагодарили: 19 раз
- Контактная информация:
Re: mqtt
Определитесь с вопросом. Вам непонятно, как создать метод или какой код написать в созданный метод?noname_npc писал(а): ↑Сб апр 27, 2019 11:10 amС методом не понятно что в нем должно быть. Может есть где то мануал как его правильно создать ? Или может пример есть у кого то для похожей ситуации?
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
-
- Сообщения: 48
- Зарегистрирован: Сб июл 21, 2018 9:08 pm
- Откуда: Калининград
- Благодарил (а): 10 раз
- Поблагодарили: 5 раз
Re: mqtt
Какой код написать в метод. У меня есть устройство ( 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 код для метода. Я бы на его основе сделал для остального.
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
С выделением подстроки не помогу - сам частенько не с первого раза пишу то, что требуется.
Присвоить значение параметру setGlobal('Объект.Параметр',Значение);
На место Значение можно сразу поместить код выделения подстроки.
Присвоить значение параметру setGlobal('Объект.Параметр',Значение);
На место Значение можно сразу поместить код выделения подстроки.
Основной: Z99Le, Debian 10, модули на ESP-12F с собственной логикой. С сервером связаны, но работоспособны и без него.
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
Тестовый: Cubieboard2, Armbian Buster (сейчас Bionic) 5.4.y
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: mqtt
посмотрите в сторону explode http://www.php.su/explodenoname_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 код для метода. Я бы на его основе сделал для остального.
Код: Выделить всё
$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%
win10 connect https://connect.smartliving.ru/profile/303