Get запрос с аутентификацией enc28j60+arduino nano
- Войдите на сайт для отправки комментариев
Пнд, 08/11/2021 - 14:05
#include <EtherCard.h> static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31}; byte Ethernet::buffer[600]; byte session_id; Stash stash; const char website[] PROGMEM = "192.168.55.154"; const char authorization[] PROGMEM = "YWRtaW46TdSalOaXU="; void setup () { Serial.begin(57600); Serial.println("Basic authentication demo"); Serial.println(); if (!ether.begin(sizeof Ethernet::buffer, mymac, 10)) { Serial.println( "Failed to access Ethernet controller"); while(1); } else Serial.println("Ethernet controller initialized"); Serial.println(); if (!ether.dhcpSetup()) { Serial.println("Failed to get configuration from DHCP"); while(1); } else Serial.println("DHCP configuration done:"); ether.printIp("IP Address:\t", ether.myip); ether.printIp("Netmask:\t", ether.netmask); ether.printIp("Gateway:\t", ether.gwip); Stash::prepare(PSTR("GET /cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0 HTTP/1.1" "\r\n" "Host: 192.168.55.104" "\r\n" "Connection: keep-alive" "\r\n" "Authorization: Basic YWRtaW46TdSalOaXU=" "\r\n")); session_id = ether.tcpSend(); Serial.println("Request sent"); } void loop() { }
Затея в том, чтобы ардуино отправляла запрос на камеру, и та в свою очередь поворачивалась, но в итоге странные вещи получаются, dhcp поднялся, в сериал написан ip, но, во-первых он не пингуется, во вторых, в wireshark не видно никаких телодвижений от ардуино, и на последок, у меня есть сомнения в том, правильно ли у меня организована аутентификация, так как если с компа в строку браузера давать запрос, то выглядит он так:
http://admin:E7RiiNiu@192.168.55.104/cgi-bin/ptz.cgi?action=start&channe...
А ip камеры точно верный? Где его усмотрел?
точно верный, так как запрос с компа проходит, всё гладко
есть какие то версии, помимо неверного ip?
есть какие то версии, помимо неверного ip?
Хотя, нет, это если что-то сложное. Начни с того, что в браузере в котором запрос работает зайди в инструменты разработчика и посмотри заголовок запроса в сыром виде.
правильно - YWRtaW46RTdSaWlOaXU=
да, тут вроде всё верно
Только заметил, но окончательном скетче там правильно написано, так что не тут собака зарыта
выцепил запрос через wireshark, когда сделал запрос с компа
Но, до сих пор не могу понять, почему в wireshark вообще не вижу ардуино, ip она получает, во всяком случае, она так пишет, и ничего не делает, может проблема в коде?
Так выведи в serial ip получаемый и посмотри - все хорошо?)
В коде же видно, что как только dhcp получен- пишем в сериал полученный ip, gateway и маску, если я не ошибаюсь. Получает он 192.168.55.129 в wireshark единственное что я вижу от ардуино, это запрос на инициализацию по dhcp, когда у неё адрес ещё пишется как 0.0.0.0
Значит драйвер на ардуине работает не так, как ожидаете. Запускайте примеры от библиотеки. Webclient и т.п.
выцепил запрос через wireshark, когда сделал запрос с компа
Сейчас, для увеличения скорости обмена, все чаще хабы/роутеры делают маршрутизацию и тогда не нужные, по мнению маршрутизатора, пакеты к тебе просто не приходят. Сконфигурируй и настрой сеть так что-бы прохождение пакетов к устройству было через твой комп. И надеюсь Wireshark ты запускаешь от админа.
Ну если грешишь на маршрутизатор, то можно камеру прямо воткнуть в шилд, только кабель линковочный обжать правильно.
У меня таких два чипа валяется: один брак, вообще не запустился. Со вторым была подобная проблема с подключением к рутеру, соединение есть, но рутер его не видит(точнее не показывает) в DHCP таблице.
Насколько я помню, в рутере надо было принудительно прописывать трассировку IP или портов до чипа. Я неделю тогда мучался...