Webserver (Arduino+W5100). Примеры интеграции с MajorDoMo.

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

Модератор: immortal

electric
Сообщения: 309
Зарегистрирован: Вт сен 17, 2013 10:11 pm
Благодарил (а): 3 раза
Поблагодарили: 56 раз

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение electric » Чт мар 19, 2015 9:12 am

tsember писал(а):Спасибо Большое за оперативный ответ. Только в коде не встретил функцию отправки температуры на сервер с МЖД. Эту функцию добавить нужно будет, да?!
Там все есть.
Но скорее всего, надо скетч чуть подправить под актуальную среду разработки и библиотеки.
Функция отправки температур в MDM естьЮ она называется get1wireDevices. Сервер MajorDoMo как сервер запрашивает у ардуины данные через HTTP-запрос вида: http://IP-arduino/getdev, ардуина в ответ шлет показания датчиков (строкой). Эту строчку MDM парсит и выбирает оттуда значения и переменные.
Было: Majordomo v.0.6.0.b на Cubietruck. OS Armbian с переносом на HDD
Стало: ioBroker на Cubietruck OS Armbian + ZigBee Xiaomi + OWFS + BLE.
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 34 раза

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение Anton_kulibin » Чт мар 19, 2015 9:15 am

У меня так. МДМ нет под рукой расскажу как смогу. В этом скетче есть функция

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

* /getdev - получить список всех устройст на 1-wire
*         формат вывода: 
*                T<номер устройства на шине>:<HEX адрес устройства>:<текущая температура в градусах цельсия>;[...]
*                (пример T0:1060CF59010800E3:24.06;T1:109ABE59010800FE:24.56;)
Создаем web переменную в поле URL: http://ip_arduino/getdev
задаешь строку поиска например T0:1060CF59010800E3:(.+?);
Внизу указываешь в какоей объект и свойство передавать данные.
T0:1060CF59010800E3 - номер устройства на шине, у каждого датчика ds18B20 свой, сколько датчиков столько web переменных.
За это сообщение автора Anton_kulibin поблагодарил:
tsember (Чт мар 19, 2015 9:26 am)
Рейтинг: 1.16%
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение tsember » Чт мар 19, 2015 9:22 am

Спасибо. Теперь ясно. Но мне больше понравился код где ардуино сама обрабатывает температуру и при её изменении шлет запрос с переменными на сервер МЖД. Тем самым мы разгружаем сервак, перекладывая часть работы на ардуино. Да и не забиваем базу одной и той же температурой.
Но зато и плюс в вашем случае есть: временной интервал между изменениями температуры одинаков, графики более красивые получаться будут. Скорее всего так и сделаю. Спасибо. Ответ на свой вопрос получил.

Сергею: Если есть возможность, создайте в Подключаемое оборудование (http://smartliving.ru/Main/ArduinoCode3) в разделе Устройства на основе Arduino третий вариант контроллера, когда ардуинка является и управлением релешек, и контроллером датчиков температур. Ответ на этот вопрос я две недели искал, потом решил тут спросить. Уверен, что не только меня это интересовало. Спасибо
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение tsember » Вс мар 22, 2015 4:09 am

Ребята, здравствуйте.
Четвертый день голову ломаю, скоро лопнет. Решил попросить помощи на форуме. Для гуру это должно быть очень легко.
Значит, смотрите. Пишу универсальный скетч для ардуино (для majordomo).
Хочу датчики температуры подключать "на лету" (можно и с перезагрузкой платы, не критично).
Идентификация датчиков температуры в МЖД будет проходить по его адресу вида "1060CF59010800E3", а не по 'sensorTempZal1', или 'ulicaTemperatura'. Ну вы, надеюсь, поняли, о чем я?! Скажете не красиво?! Ну и что? Один раз настроил, и забыл. Нужно датчик 18B20 сменить, смело его меняете, и в МЖД в названии датчика меняете его адрес. Даже плату перешивать не надо.
В принципе, можно все адреса датчиков в платке прописать. А если датчиков 50 штук?! А если их нужно постоянно менять?! А если еще пяток штук подключить?
Я хочу сделать цикл, который найдет все датчики, запишет все идентификаторы в массив, и попорядку будет сливать с них температуру, сравнивать с прошлой отправленной, если дельта больше установленной (допустим 0,3 градуса), отправляем обновленную температуру на сервер МЖД.

На чем я запнулся?
Никак не могу заставить адрес вида 1060CF59010800E3 засунуться в одну переменную, с которой я мог бы дальше оперировать.
Anton_kulibin писал(а): *         формат вывода: 
*                T<номер устройства на шине>:<HEX адрес устройства>:<текущая температура в градусах цельсия>;[...]
*                (пример T0:1060CF59010800E3:24.06;T1:109ABE59010800FE:24.56;)[/code]

Создаем web переменную ....
Пробовал и побайтно в массив загонять, потом склеивать ячейки массива, пробовал другими способами. Ничего не получается. У меня еще трудности с пониманием типов данных.
Помогите пожалуйста. нужна функция, чтоб просто прочитать адрес датчика по его идентификатору (sensors.getAddress(Termometers, i)), перекодировать в нормальный вид типа 1060CF59010800E3 и засунуть его в переменную.
P.S. Строка вида Serial.println(sensors.getAddress(Termometers, 1)); на экран очень хорошо выводит адрес.
Веб-переменные тоже не подходят. Если будет 50 датчиков, которые каждые 10 секунд будут опрашиваться, система встанет.
Заранее спасибо за советы, подсказки, в общем любую помощь.
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение tsember » Вс мар 22, 2015 9:50 pm

Сегодня размышлял, и подумал, что ни одного типа данных для переменной, в которую я хочу записать адрес датчика в DEC виде не может вместить в себя такое число (более 25 разрядов)
Затем прикинул, что можно каждый разряд записать в массив, затем этот массив перевести из DEC (десятичный) в HEX (шестнадцатеричный) вид, в потом попросту склеить ячейки массива. И получится красивый адрес устройства в HEX формате, который можно запихать в одну переменную. Если кого то интересует код, напишите в личку, или сюда. Я скину.
tsember
Сообщения: 52
Зарегистрирован: Ср фев 04, 2015 12:28 am
Благодарил (а): 54 раза
Поблагодарили: 6 раз

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение tsember » Вт мар 24, 2015 12:06 pm

Посмотрите, что у меня получилось: http://smartliving.ru/forum/viewtopic.p ... 092#p20092
ghost13
Сообщения: 22
Зарегистрирован: Пт сен 02, 2016 8:01 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение ghost13 » Ср сен 21, 2016 10:52 am

сделал как по инструкции но температура не выводиться где могут быть грабли
janlam
Сообщения: 24
Зарегистрирован: Вт сен 30, 2014 3:36 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoM

Сообщение janlam » Пт дек 09, 2016 6:08 pm

Непонимаю в чём проблема. Делаю всё как описано в первом посте. Дохожу до сценария. Всё ввожу нажимаю сохранить. А он мне в ответ пишет Пожалуйста, заполните необходимые поля! сверху красным. Люди добрые в чём дело?
desktop.jpg
screen
desktop.jpg (272.4 КБ) 9148 просмотров
Pavel_
Сообщения: 4
Зарегистрирован: Вс ноя 25, 2018 3:51 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Webserver (Arduino+W5100). Примеры интеграции с MajorDoMo.

Сообщение Pavel_ » Ср ноя 28, 2018 6:21 pm

добавить внизу символ }
electric поправте код в шапке
Ответить