помогите с http get запросом с аутентификацией
- Войдите на сайт для отправки комментариев
Ср, 03/11/2021 - 22:10
Вот сам код, но не складывается что-то с запросом
#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.104"; const char authorization[] PROGMEM = "YWRtaW46TdSaWlOaXU="; 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.0" "\r\n" "Host: $F" "\r\n" "Authorization: Basic $F" "\r\n" "\r\n"), website , authorization); session_id = ether.tcpSend(); Serial.println("Request sent"); } void loop() { }
И чё?
Будьте любезны описать,
1. Что код должен делать?
2. Что он на самом деле делает?
3. Чем (2) отличается от (1)
4. Что Вы предприняли, чтобы разрулить ситуацию и какой эффект это дало?
А так, у Вас ведь не ни просьбы, ни вопроса ... ну, что-то (ХЗ что) у Вас там "не складывается". Ну, принято к сведению. Дальше-то что?
цель в том, чтобы отправить http запрос на камеру, чтобы она повернулась, dhcp поднялся, но камера не реагирует, подозреваю, что что-то не так с формулировкой самого запроса
цель в том, чтобы отправить http запрос на камеру, чтобы она повернулась, dhcp поднялся, но камера не реагирует, подозреваю, что что-то не так с формулировкой самого запроса
Опять мимо. Я Вам написал 4 пункта. Попробуйте прямо по ним, используя их как заголовки
Это камера в сауне?
Пишите mykaida@gmail.com
очень постараюсь
1 код должен сделать http запрос по отношению к камере, дабы та, в свою очередь повернулась
2 на самом деле получает ip по dhcp, отправляет запрос, но от камеры ноль реакции
3 отличается тем, что запрос либо не доходит до камеры, либо я не правильно понял, как делается http запрос на enc28j60+arduino nano
4 до этого кода пробовал разные библиотеки, на данный момент, пробовал чередовать строчки в самом запросе, но это не дало никакого результата
не в сауне, но всё же, а почему надо писать на мейл?
не в сауне, но всё же,
Пишите Евгению - может его заинтересует
На некоторых камерах (особенно, если они уже работали с регистратором) установлен пароль. Регистратор знает пароль, и по этому поток камера ему отдает. Вы же, своим скечем не заходите на камеру по паролю. По этому ни каким вашим гет запросам камера не отвечает. Для снятия пароля, необходимо обращаться в сервис производителя. Примерно в течение суток снимают (если конечно камера будет не в списке ворованных )).
суть в том, чтобы выполнить это с компа, в строку запроса вставляется данный текст:
http://логин:пароль@адрес/cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0
и это работает, я в запросе пробовал собственно разложить всё на части, но пока не выходит
я подозреваю, что у вас на нано просто памяти не хватает. Создалм буфер в 600 байт, кучу строк в памяти и кще пытаетесь запихнуть туда же огромный запрос
Для проверки попробуйте запустить этот же код на Меге
arduino ide пишет, что занято 25% или это не показатель?
Запрос-то небольшой, но метод гадания тут не подходит. Если все это в локалке крутится, то отладка очень простая - симулировать камеру на компе.
сейчас открыл для себя интересный момент, адрес, который получает ардуино, не пингуется с компа, не подскажите в чём может быть проблема?
Драйвер может не отвечать. Для ENC он программный - любой делэй валит icmp
Также, пробовал делать запрос на свой комп и смотреть в wireshark трафик с фильтром на источник и адрес, который получила ардуинка, но там пусто, как так?
Короче, то-ли я дурак, то-ли лыжи не едут.
arduino ide пишет, что занято 25% или это не показатель?
Короче, то-ли я дурак, то-ли лыжи не едут.
Скорее всего и то, и другое. Второе - следствие первого.
плохо, когда люди не помнят простые знания из института. Инженерный подход к поиску неисправностей преподают, мне кажется, на всех технических специальностях.
Вспомню молодость. Ищем методом изоляции. Как поиск льва в пустыне - делим пустыню пополам ;).
1. Нужно научиться давать команду камере просто из консоли компа.
2. Нужно научиться хоть что-то отправлять с Ардуино. Для начала на комп.
3. Поднимаем на компе простейший сервер с аутентификацией и пробуем получить реакцию от него.
4. "а вот потом, если повезет, триппер" (с) День Радио. Теперь пробуем обратиться к камере.
В принципе я не сомневаюсь ни в том, ни в другом, но всё же хочу найти решение :)
Ну, до института мне ещё дорасти надо.
Описанные вами пункты звучат конечно весело, но боюсь, что я опять сяду в лужу, но не смотря на это, постараюсь реализовать)
Ну, до института мне ещё дорасти надо.
Тогда почему ты не в песочнице? Программисты без высшего бывают, но весьма редко, как и любые "вундеркинды".
Я ещё в том числе не совсем понимаю, как работает форум и где мне надо бы обитать :)
Все наивные вопросы без попыток их решить - в песочнице. В разделах "Программирование" и "Аппаратные вопросы" обсуждения уже опытных людей. Не голые вопросы, а описание трудностей или интересных моментов. И конечно все это - с самостоятельными попытками решения.
на данный момент, я пробую сделать запрос на камеру с компа и изучаю его содержимое в wireshark. Пока что не очень понимаю, что там происходит с аутентификацией
начни с консоли компа. Только не свою кодированную строку а как есть GET http://admin:MQZS]@192.168.55.104/cgi-bin/... и так далее.
Вот прям телнетом на порт камеры.
попробовал через putty, но результата не дало
Тема переехала в песочницу
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/get-zapros-s-autentifikatsiei-enc28j60arduino-nano