Как стать автором
Обновить

Комментарии 41

Ну всё, понеслось, чувствую сегодня я не высплюсь… Реле уже начало клацать а лампочка моргать )))))
Прошу вас щелкать без фанатизма ))
gambler-walrus-24202.bitballoon.com
Работает по принципу mqtt, когда придумывал протокол, ничего не знал об mqtt.
mqtt + node-red… profit
Может ссылочку скинете мне на рабочий пример mqtt клиента, который сможет работать на обычном виртуальном хостинге?
Клиентов море, выбирайте https://github.com/mqtt/mqtt.github.io/wiki/libraries
Весело клацает) снимите видео стробоскопа)
Если честно уже порядком поднадоело особенно последние минут 15 =))) щелкает без остановки, такое чувство что-кто-то написал скрипт, который только и делает что включает и выключает лампочку )))
Так логгирование надо завести :) И потом в бан отправлять при операциях > 2 за минуту.
Как реализован доступ Arduino в интернет? С помощью Ethernet шилда?
Судя по статье (код и скриншот), используется Ethernet shield на базе WIZNet W5100.
Пользовался год аналогичной реализацией сигнализации, пока хостер не забанил за частые запросы (один раз в минуту в обычном режиме, и при частом срабатывании датчика движения — около раза в 5 секунд). С тех пор ищу другой подходящий бесплатный хостинг и пока только и натыкаюсь на поделки того же хостера под другими названиями.
Вы так же пользовались текстовыми файлами для хранения данных?
Нет, храню в БД. Хостеру все равно, размер БД плюсуется к файлам
Было бы интереснее, если бы сервером выступала сама плата Arduino. Но в домашних условиях обычно все спрятано за NAT-ом и пробиться из Интернета трудновато. Зато была бы значительная экономия трафика, т.к не пришлось бы слать кучу бесполезных запросов.
Это плохая идея, т.к. мощи ардуино на такое не хватит. Несколько одновременных запросов и она виснет.
В этом и интерес. ИМХО, тут надо явно запретить одновременное подключение нескольких клиентов, т.к. смысла все равно нет. Протокол HTTP позволяет забить на желание клиента оставить подключение. Ну и поискать решение для защиты от DDOS-атак тоже интересно.
Плюс ко всему нужно заниматься пробросом портов и иметь статический ip… Опять же… если бесплатный хостер банит, то можно приобрести хостинг без поддержки баз данных — он как правило самый дешёвый и использовать его.
Ну да без проблем не бывает. Кстати, есть интересный сервис как раз для управления ардуино www.teleduino.org
Который, если смотреть поверхностно, является собой способом программирования Ардуины через интернет.
Т.е. ставим на Мегу(минимум) Ethernet-шилд, и с помощью интернета мигаем светодиодами.
Имеет право на жизнь, но не то. Слишком отдалено от железа. У меня, например, Arduino-Nano + ENC28J60, придётся самому половину их библиотеки переписывать для нормальной работы.
Положим минимум нужна Uno
Вот вот появиться очень интересный проект, который значительно упростит управление Arduino
Blynk
Если быть точнее, то, не сочтите за рекламу.

Подробнее
Меня для данной задачи совсем устраивал Хостингер, пока после скачка валют не стал банить другие проекты по совсем выдуманным перегрузкам (5 пользователей и не одного длительного цикла обработки данных) и пр. Сигнализацию с ардуино тоже забанили за перегрузку. Спросил, как так, там же скрипты по 10 строк, написали что всё-таки забанили за частые заходы с одного и того же IP. Лазил по бесплатным хосингам по интернету, почти после каждой регистрации приходит письмо на следующее утро «Посмотрите на наш проект Хостингер». Но зато нашел много интересных и дешевых хостеров и доменов.
Идеальный вариант для использования на бесплатном хостинге это использование JavaScript библиотека для веб-приложений и обмена данными в реальном времени Socket IO. Если вы знаете как ею пользоваться, то напишите небольшую статейку по приёму и отправке данных на arduino. Многие будут вам благодарны!
Arduino подключается к серверу и отправляет GET запрос, где содержатся значения датчиков температуры.


GET-запрос должен получать данные, а не записывать. Пишите через POST.
Отчего такая категоричность? Если http позволяет значит имеет право.
:) Ну и что? Если бы вы сослались на RESTful API то это был бы аргумент, а так…
HTTP протокол позволяет в GET запросе размещать данные (они же параметры запроса).
Поэтому автор не ничего нарушает, всё согласно протоколу.
Посмотрите на API публичных сервисов. Многим из них без разницы GET или POST, они могут и так и эдак.
c GET даже проще, всегда можно проверить браузером :)
А с каких пор всё остальное нельзя проверить браузером? :)
Для проверки POST, HEAD, PUT и прочего можно воспользоваться REST-client или подобными расширениями для браузера.
Все же это «как правило», но для простоты вполне можно применить и GET-запрос. Это как пресловутый оператор goto, лучше обойтись без него, но порой проще с ним, главное не злоупотреблять :).
Мда… и почему эта статья не попалась мне месяц назад?
начал писать свое, частично написал, но проблема в том, что не могу реализовать отдачу команд с сервера на контроллер… Если тут все еще кто-нибудь есть, ткните, пожалуйста, носом, где в коде описывается это действие…
Отдать команду с сервера это самое непростое. В данном примере информация с сервера отправляется с помощью файла add_data.php. Этот файл принимает принимает запрос от контроллера и в ответе на запрос пересылает данные с сервера.
Спасибо, я уже разобрался) Как по мне, надо алгоритм, приведенный в статье, улучшать. Парсером строк, на стророне ардуины, к примеру. Писать все приходящее в строчный буфер, и по какому-нибудь специфичному символу понимать, что началась часть строки, в которой хранится сама команда(данные) для МК. Честно говоря, я долго не могу понять, почему у вас все работает так, как работает, потому что у вас состояние выхода передается 0 и 1(правильно ли будет назвать это бинарным форматом?) коих в теле http ответа множество. Оказалось, что всему виной символы 'somecontent', что делают которые я так и не разобрался)
Кстати, раз уж пошла такая пьянка. Вы подключали БД? У меня есть некоторые проблемы с ее установкой и настройкой. Уже третий день мучаюсь.
Обмен данными через http между сервером и контроллером это такие сложные и малоэффективные «костыли», что подходят только для управления 2-3 лампочками. Мой сам совет, обратите внимание на MQTT. Это гигантский шаг, нет не шаг, скачек по сравнению с http.
Да я искал уже, на самом деле, инфу по ним, когда не мог заставить сервер принять данные и отправить команду. Мало что понял, честно говоря. Но из того, что понял, так это то, что использование этого протокола, вроде как сделает невозможным использование ajax. Или нет?
А как интерпретировать на сервере данные, полученные от mqtt или websocket? Да и на производительность я уже обратил внимание… медленно. Даже начал думать о том, что раз уж MySQL гордо именуется сервером, то можно пробовать писать в него данные напрямую с МК. Все же есть, по идее.
Тут всё на самом деле просто. У нас есть mqqt сервер (можно свой поднять, а можно использовать уже готовый, например www.cloudmqtt.com, я его использовал — отличный сервис). А все устройства которые принимают и отправляют данные — это клиенты. По сути mqtt сервер — это посредник, которая ничего не хранит, а занимается только рассылкой и пересылкой данных между клиентами. К примеру ваша панель управления микроконтроллером (или сервер), тоже будет клиентом по отношении к mqtt серверу, и уже панель будет решать что делать с полученными данными либо сохранить, либо как-то отреагировать на них и отправить данные микроконтроллеру через mqtt сервер.
Делал простой пример с использованием esp8266 и клиента для android. Работало на удивление быстро и стабильно.
Хм, ладно, спасибо. Пока что отложу БД. Переход на mqtt представляется более интересным.
Используйте эти примеры они вам помогут быстро опробовать. Если у вас ардуино, то не сложно переделать по ethernet модуль.
github.com/Protoneer/MQTT-ESP8266-CLOUDMQTT.COM
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации