Страница 2 из 7

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

Добавлено: Чт сен 08, 2016 10:47 am
Sergey2055
Распберри я хочу убрать вообще он тогда не нужен будет. Общение простое запрос на данные 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 КБ) 7203 просмотра
[/img]
А хотелось бы разбирать в одном запросе, что бы не плодить кучу запросов. В ajax тоже не гуру писал по книгам и форумам.

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

Добавлено: Чт сен 08, 2016 11:10 am
nick7zmail
Примерно понял...че-то было у меня подобное в коде...дома буду - посмотрю, если не забуду)) Веб-переменными конечно не вариант. Одним запросом как-то правильнее.

Пока могу предложить попробовать такой эксперимент - в адресе веб-переменной вписать http//192.168.1.xx (без команд всяких), а в шаблоне поиска указать че-то типа T1=(\d+), T2=(\d+), T3=(\d+) и т.д. со всеми значениями. То есть одной веб-переменной забрать все данные. В итоге должен получится массив со всеми данными, но не уверен, на сколько правильно это сработает в оболочке вэб-переменных.

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

Добавлено: Чт сен 08, 2016 11:29 am
Sergey2055
nick7zmail спасибо за ответ. запрос без команды ни как. В зависимости от того что идет в запросе сервер на дуине и отвечает. Либо это расценивается как команда к действию с конкретным датчиком или устройством либо выдать в сеть запрашиваемому все данные накопленные со всех датчиков в каком он состоянии, температура итд. можно конечно это все поделить в дуине на конкретные запросы и ответы но не вижу смысла дополнительно ее нагружать если это все можно выдать на один запрос. А вот команды уже да поделить на конкретные......

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

Добавлено: Вс сен 11, 2016 9:07 pm
Sergey2055
Ауууу. есть кто живой помогите плииииз.

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

Добавлено: Пн сен 12, 2016 10:26 am
nick7zmail
Sergey2055 писал(а):Ауууу. есть кто живой помогите плииииз.
Честно - забыл дома посмотреть код))
Вы проверили - если в запросе указывать страничку, где все параметры разом отображаются, а в шаблоне поиска - несколько (/d+), то на выходе получается массив?

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

Добавлено: Пн сен 12, 2016 10:34 am
VladPTZ
Как вариант показания датчиков можно записать в объект.
В 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

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

Добавлено: Пн сен 12, 2016 10:47 am
nick7zmail
В общем, чтобы "в слепую" не гадать, в каком формате у вас всё выдаётся, предложу свой, вполне работоспособный, но далеко не единственный вариант.
Делаете новую команду в ардуине, которая выдаёт данные в формате 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.
Как вариант - да...можно прямо из ардуины данные заносить, но вопрос был - как из МД запросить данные с ардуины)). Отвечал, исходя из этого.

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

Добавлено: Пн сен 12, 2016 2:04 pm
VladPTZ
nick7zmail писал(а):Как вариант - да...можно прямо из ардуины данные заносить, но вопрос был - как из МД запросить данные с ардуины)). Отвечал, исходя из этого.
Тогда как вариант MajorDomo отправляет по http строку которой содержится команда на запрос данных, ардуина собирает показания датчиков и отправляет выше указанную стоку с данными в MD.

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

Добавлено: Вт сен 13, 2016 8:58 am
Sergey2055
Всем привет. VladPTZ ваш предложенный вариант по записи значений в объект немного не пойдет. Смысл вот в чем я хочу что бы если вдруг по каким причинам запрос или ответ не пройдет то через некоторое время при запросе от MD ардуина ответит сбросив все параметры если опять не прошел то через некоторое время опять все повториться и я буду знать включился например свет или нет а при работе о объектом может быть следующее я команду отправил свет включился а ответ что включился не дошел и у меня будет в MD значиться что свет выключен. А как я хочу даже если что и не прошло то через некоторое время система обновиться.
nick7zmail вам тоже спасибо за ответ. Ваш код обязательно попробую, как только найду пустую ардуину. Серверную трогать и ломать пока не буду, она находится в работе.

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

Добавлено: Вт сен 13, 2016 9:04 am
Sergey2055
да и по поводу ответа ардуины, чтобы вам не гадать как отвечает ардуина а там уже все я сформировал вот выкладываю копию с читой страницы при запросе к ардуине : 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 забрать одним запросом в массив скажем а потом разобрать и распихать по объектам в чем у меня и загвоздка. Я сейчас делаю запрос и из него выделяю конкретную переменную и пихаю в объект из-за чего у меня получилось куча веб переменных. А это немного не правильно я считаю, надо как то это все уложить в один запрос. Можно конечно немного подправить ответ если нельзя разобрать такую строку.