ПОМОГИТЕ кому не сложно ARDUINO датчики

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Sergey2055
Сообщения: 73
Зарегистрирован: Ср авг 31, 2016 7:54 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение Sergey2055 » Чт сен 08, 2016 10:47 am

Распберри я хочу убрать вообще он тогда не нужен будет. Общение простое запрос на данные http//192.168.1.xx/?cmd= команда , а ответ от ардуины идет так HTTP/1.1 200 OK, Content-Type: text/html ,Access-Control-Allow-Origin: * далее идут данные P1=xx, P2=xx итд. Когда делаю запрос по на ардуину с пустой страницы ардуинка выводит на страницу тупо P1=xx, P2=xx итд. как этот ответ разобрать на отдельные переменные. Сейчас у меня вот так
[img]
2016-09-08_10-42-43.png
2016-09-08_10-42-43.png (26.98 КБ) 6713 просмотров
[/img]
А хотелось бы разбирать в одном запросе, что бы не плодить кучу запросов. В ajax тоже не гуру писал по книгам и форумам.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение nick7zmail » Чт сен 08, 2016 11:10 am

Примерно понял...че-то было у меня подобное в коде...дома буду - посмотрю, если не забуду)) Веб-переменными конечно не вариант. Одним запросом как-то правильнее.

Пока могу предложить попробовать такой эксперимент - в адресе веб-переменной вписать http//192.168.1.xx (без команд всяких), а в шаблоне поиска указать че-то типа T1=(\d+), T2=(\d+), T3=(\d+) и т.д. со всеми значениями. То есть одной веб-переменной забрать все данные. В итоге должен получится массив со всеми данными, но не уверен, на сколько правильно это сработает в оболочке вэб-переменных.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Sergey2055
Сообщения: 73
Зарегистрирован: Ср авг 31, 2016 7:54 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение Sergey2055 » Чт сен 08, 2016 11:29 am

nick7zmail спасибо за ответ. запрос без команды ни как. В зависимости от того что идет в запросе сервер на дуине и отвечает. Либо это расценивается как команда к действию с конкретным датчиком или устройством либо выдать в сеть запрашиваемому все данные накопленные со всех датчиков в каком он состоянии, температура итд. можно конечно это все поделить в дуине на конкретные запросы и ответы но не вижу смысла дополнительно ее нагружать если это все можно выдать на один запрос. А вот команды уже да поделить на конкретные......
Sergey2055
Сообщения: 73
Зарегистрирован: Ср авг 31, 2016 7:54 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение Sergey2055 » Вс сен 11, 2016 9:07 pm

Ауууу. есть кто живой помогите плииииз.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение nick7zmail » Пн сен 12, 2016 10:26 am

Sergey2055 писал(а):Ауууу. есть кто живой помогите плииииз.
Честно - забыл дома посмотреть код))
Вы проверили - если в запросе указывать страничку, где все параметры разом отображаются, а в шаблоне поиска - несколько (/d+), то на выходе получается массив?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
VladPTZ
Сообщения: 395
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 95 раз
Поблагодарили: 57 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение VladPTZ » Пн сен 12, 2016 10:34 am

Как вариант показания датчиков можно записать в объект.
В MajorDomo создаём объект, например TERMOMETER в нем создаем свойства tenm1, temp2, temp3.
Для того чтобы записать показания датчиков температуры в этот объект, отправляем строку вот такого вида из ардуины или esp.

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

http://192.168.1.14/objects/object=TERMOMETER&op=set&p=temp1&v=23&p=temp2&v=31&p=temp3&v=18   
Для проверки работоспособности строки, ее можно отправить через браузер.

Еще можно вызвать метод для совершения каких либо действий при изменения свойства объекта.

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

http://192.168.1.14/objects/object=TERMOMETER&op=m&m=mymetod&temp1=22   
Тут есть примеры кода http://majordomo.smartliving.ru/forum/v ... f=3&t=2793
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение nick7zmail » Пн сен 12, 2016 10:47 am

В общем, чтобы "в слепую" не гадать, в каком формате у вас всё выдаётся, предложу свой, вполне работоспособный, но далеко не единственный вариант.
Делаете новую команду в ардуине, которая выдаёт данные в формате json. Выглядеть итог должен примерно так:

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

[{"name":"T1","val":<тут значение Т1>}, {"name":"P1","val":<тут значение P1>},...]
И так далее для всех свойств.
Потом запрашиваете таким кодом:

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

$content=getURL('http://<ваш адрес ардуины/команда на запрос json>', 0);
$data=json_decode($content);
foreach ($data as $key => $value) {
    setGlobal('arduino.'.$value->name, $value->val);
}
В итоге в объекте "arduino" должны появится свойства T1, P1 и т.д. со всеми значениями.
Естественно перед этим нужно создать сам объект arduino.
PS: Не факт что код рабочий =D, проверить негде, если что - пишите.
VladPTZ писал(а):Как вариант показания датчиков можно записать в объект.
В MajorDomo создаём объект, например TERMOMETER в нем создаем свойства tenm1, temp2, temp3.
Для того чтобы записать показания датчиков температуры в этот объект, отправляем строку вот такого вида из ардуины или esp.
Как вариант - да...можно прямо из ардуины данные заносить, но вопрос был - как из МД запросить данные с ардуины)). Отвечал, исходя из этого.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
VladPTZ
Сообщения: 395
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 95 раз
Поблагодарили: 57 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение VladPTZ » Пн сен 12, 2016 2:04 pm

nick7zmail писал(а):Как вариант - да...можно прямо из ардуины данные заносить, но вопрос был - как из МД запросить данные с ардуины)). Отвечал, исходя из этого.
Тогда как вариант MajorDomo отправляет по http строку которой содержится команда на запрос данных, ардуина собирает показания датчиков и отправляет выше указанную стоку с данными в MD.
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Sergey2055
Сообщения: 73
Зарегистрирован: Ср авг 31, 2016 7:54 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение Sergey2055 » Вт сен 13, 2016 8:58 am

Всем привет. VladPTZ ваш предложенный вариант по записи значений в объект немного не пойдет. Смысл вот в чем я хочу что бы если вдруг по каким причинам запрос или ответ не пройдет то через некоторое время при запросе от MD ардуина ответит сбросив все параметры если опять не прошел то через некоторое время опять все повториться и я буду знать включился например свет или нет а при работе о объектом может быть следующее я команду отправил свет включился а ответ что включился не дошел и у меня будет в MD значиться что свет выключен. А как я хочу даже если что и не прошло то через некоторое время система обновиться.
nick7zmail вам тоже спасибо за ответ. Ваш код обязательно попробую, как только найду пустую ардуину. Серверную трогать и ломать пока не буду, она находится в работе.
Последний раз редактировалось Sergey2055 Вт сен 13, 2016 9:17 am, всего редактировалось 1 раз.
Sergey2055
Сообщения: 73
Зарегистрирован: Ср авг 31, 2016 7:54 am
Благодарил (а): 12 раз
Поблагодарили: 1 раз

Re: ПОМОГИТЕ кому не сложно ARDUINO датчики

Сообщение Sergey2055 » Вт сен 13, 2016 9:04 am

да и по поводу ответа ардуины, чтобы вам не гадать как отвечает ардуина а там уже все я сформировал вот выкладываю копию с читой страницы при запросе к ардуине : Us=203:Is=1:Ps=160:Fs=50:Tout=21:Bout=808:T1=28:H1=35:T2=27:H2=31:T3=0:H3=0:T4=25:H4=18:T5=0:H5=0:T6=17:H6=46:V1=3.69:V2=5.76:OUT1=0:OUT2=0:OUT3=0:OUT4=0:OUT5=0:OUT6=0:OUT7=0:OUT8=0:OUT9=0:OUT10=1:OUT11=0:OUT12=0:OUT13=0:OUT14=0:OUT15=0:OUT16=0:
Это чисто такой ответ при запросе на выдачу всех данных. Вот их и надо в MD забрать одним запросом в массив скажем а потом разобрать и распихать по объектам в чем у меня и загвоздка. Я сейчас делаю запрос и из него выделяю конкретную переменную и пихаю в объект из-за чего у меня получилось куча веб переменных. А это немного не правильно я считаю, надо как то это все уложить в один запрос. Можно конечно немного подправить ответ если нельзя разобрать такую строку.
Последний раз редактировалось Sergey2055 Вт сен 13, 2016 9:13 am, всего редактировалось 1 раз.
Ответить