GET запрос в Ethernet
- Войдите на сайт для отправки комментариев
Пнд, 21/08/2017 - 15:18
Здравствуйте. Вот есть скетч Web сервера.
#include <SPI.h> #include <Ethernet.h> byte MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress IP(10, 10, 1, 170); EthernetServer server(7000); void setup() { Serial.begin(9600); Ethernet.begin(MAC, IP); server.begin(); } void loop() { EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("Hello"); client.println("</html>"); break; } } client.stop(); } }
Такой вопрос:
Как сделать так, чтобы сервер принимал GET запрос?
Мне нужно так, я посылаю GET запрос, сервер его принимает и включает какой либо цифровой вход, то есть выполняет
digitalWrite(пин, LOW);
Знаю что нужно условие, но не знаю как реализовать.
Так же мне нужно чтобы при повторном переходе на GET запрос, цифровой вход выключался.
Как сделать так, чтобы сервер принимал GET запрос?
А сейчас он что принимает? Его и принимает, и возращает ответ (строки 25-32). Вот туда и встаьте инвертирования Вашего пина. При каждом запрос состояние пина будет меняться на противоположное.
Можно подробнее? Мне нужно создать ссылку, допустим она будет такого вида:
http://example.com/link=1
Я перехожу, мой вход включается, перехожу еще раз, он выключается.
А сейчас Вы на этот сервер как заходите? По какой ссылке?
Просто по адресу http://mysite.com
И получаете в браузере нормальный ответ? Слово "Hello"?
Если "да", так чего Вам ещё надо? Вставьте после строки 32 что-нибудь типа
И уровень на пине PIN будет переворачиваться при каждом запросе. Вам же это надо?
Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
в моем коде как раз восемь каналов управляются, посмотрите я обновил
в моем коде как раз восемь каналов управляются, посмотрите я обновил
Управляются кнопками?
там в html есть BUTTON, значит управляются
Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
Не знаю, что у Вас там не сработало, кода не вижу. И не вижу ответа на вопрос показывается ли Hello.
Про 8 каналов и отдельные запросы на каждый канал Вы сразу могли написать? Я тратил время, писал Вам. а оказывается Вам нужно вовсе не то, что было в первом посте. Вам не кажется. что это как-то неправильно?
там в html есть BUTTON, значит управляются
Я понимаю, у меня вот есть рабочий код, управления с помощью ссылок (кнопок)
Так же есть адреса, /1 /2 /3 /4 /5 /6 /7 /8 по которым я нажимаю. Всё работает, если через браузер.
Если я пытаюсь через CURL с помощью PHP перейти по своему адресу реле, оно его включает, но при повторном переходе, оно не выключает.
Попробовал Ваш метод, не сработало. В общем суть такова, мне нужно с одного сервера, дать на сервер ардуино запрос, после чего включается реле, если я даю запрос второй раз, реле выключается. Модуль реле на 8 каналов, мне на каждый канал отдельный запрос нужен. Думаю понятно объяснил?
Не знаю, что у Вас там не сработало, кода не вижу. И не вижу ответа на вопрос показывается ли Hello.
Про 8 каналов и отдельные запросы на каждый канал Вы сразу могли написать? Я тратил время, писал Вам. а оказывается Вам нужно вовсе не то, что было в первом посте. Вам не кажется. что это как-то неправильно?
Я прошу прощения, если Вы что то не правильно поняли. Я просил пример для одного пина, мне нужно именно посмотреть, как всё работает, а дальше под остальный пины я бы сам всё написал. По поводу слова Hello - Да оно показывается.
Тогда то, что я Вам написал не может не работать. Если отправлется слово Hello - передёргивается пин и никак иначе. Нужели Вы умудрились эту строчку неправильно вставить? Код-то покажете?
Тогда то, что я Вам написал не может не работать. Если отправлется слово Hello - передёргивается пин и никак иначе. Нужели Вы умудрились эту строчку неправильно вставить? Код-то покажете?
Вот код
Мне нужно что то типа свича как в PHP
Вот код
Ну, я же говорил, что Вы даже одну строчку вставить не смогли правильно.
Вы же пользуетесь сериалом и при этом цепляете своё реле на нулевой пин! Включайте же голову - этот пин ЗАНЯТ!
Возьмите свободный пин и всё заработает!
Вот код
Ну, я же говорил, что Вы даже одну строчку вставить не смогли правильно.
Вы же пользуетесь сериалом и при этом цепляете своё реле на нулевой пин! Включайте же голову - этот пин ЗАНЯТ!
Возьмите свободный пин и всё заработает!
И в правду всё заработало, как посадил на 8 пин. Спасибо. Но как для нескольких реле такое организовать? Больше всего интересует именно вызов, каждого реле на включение.
Проверьте, что вам приходит.
В сообщении #6 вам показали как парсить. Но вам достаточно узнавать предпоследний байт в буфере.
Проверьте, что вам приходит.
В сообщении #6 вам показали как парсить. Но вам достаточно узнавать предпоследний байт в буфере.
Я в ардуино не специалист, слишком большой код. Не понимаю что и где там парсится. Мне нужно создать каждолму реле типа ссылки на свиче, http://example.com/?Relay=1 перехожу - включается реле, перехожу еще раз, выключается. И так для каждого реле.
Вы же вроде писали
пример для одного пина, мне нужно именно посмотреть, как всё работает, а дальше под остальный пины я бы сам всё написал.
Теперь, когда для одного пина всё работает, Вы пишете
Я в ардуино не специалист ... Не понимаю ....
Может проще и быстрее пойти в "Ищу исполнителя", отдать там 5-6 баксов и получить решение? Не думали об этом?
Может проще и быстрее пойти в "Ищу исполнителя", отдать там 5-6 баксов и получить решение? Не думали об этом?
Хочется самому научиться. Я не прошу готового решения. Хотя бы в какую сторону копать, каким методом вызывать.
...
Вот что приходит.
Мало информативно, без GET запроса на который это возвращает.
Проверьте что возвращает на: http://example.com/?Relay=1 и http://example.com/?Relay=2
Ну, хорошо, я скажу куда копать.
Вы можете напечатать строку запроса, который к Вам пришёл? Если нет - открывайте примеры библиотеки, там это есть. Смотрите как это делается.
Когда сможете напечатать (значит научитесь добираться до этой строки), останется только выдернуть из неё символ с номером пина. Т.е. для начала научитесь добираться до строки запроса.
Проблему решил. Всем кто помогал, огромное спасибо.
Если кому нибудь пригодится, код ниже.
С Победой!
С Победой!
Спасибо!)