помогите с http get запросом с аутентификацией

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

Вот сам код, но не складывается что-то с запросом

#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() {

 
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

И чё?

Будьте любезны описать, 

1. Что код должен делать?
2. Что он на самом деле делает?
3. Чем (2) отличается от (1)
4. Что Вы предприняли, чтобы разрулить ситуацию и какой эффект это дало?

А так, у Вас ведь не ни просьбы, ни вопроса ... ну, что-то (ХЗ что) у Вас там "не складывается". Ну, принято к сведению. Дальше-то что?

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

цель в том, чтобы отправить http запрос на камеру, чтобы она повернулась, dhcp поднялся, но камера не реагирует, подозреваю, что что-то не так с формулировкой самого запроса

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

СовсемЗелёный пишет:

цель в том, чтобы отправить http запрос на камеру, чтобы она повернулась, dhcp поднялся, но камера не реагирует, подозреваю, что что-то не так с формулировкой самого запроса

Опять мимо. Я Вам написал 4 пункта. Попробуйте прямо по ним, используя их как заголовки

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Это камера в сауне?

Пишите mykaida@gmail.com

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

очень постараюсь

1 код должен сделать http запрос по отношению к камере, дабы та, в свою очередь повернулась

2 на самом деле получает ip по dhcp, отправляет запрос, но от камеры ноль реакции

3 отличается тем, что запрос либо не доходит до камеры, либо я не правильно понял, как делается http запрос на enc28j60+arduino nano

4 до этого кода пробовал разные библиотеки, на данный момент, пробовал чередовать строчки в самом запросе, но это не дало никакого результата

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

не в сауне, но всё же, а почему надо писать на мейл?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

СовсемЗелёный пишет:

не в сауне, но всё же,

Пишите Евгению - может его заинтересует

SAB
Offline
Зарегистрирован: 27.12.2016

На некоторых камерах (особенно, если они уже работали с регистратором) установлен пароль. Регистратор знает пароль, и по этому поток  камера ему отдает. Вы же, своим скечем не заходите на камеру по паролю. По этому ни каким вашим гет запросам  камера не отвечает. Для снятия пароля, необходимо обращаться в сервис производителя. Примерно в течение суток снимают (если конечно камера будет не в списке ворованных )).

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

суть в том, чтобы выполнить это с компа, в строку запроса вставляется данный текст:
http://логин:пароль@адрес/cgi-bin/ptz.cgi?action=start&channel=0&code=GotoPreset&arg1=0&arg2=7&arg3=0

и это работает, я в запросе пробовал собственно разложить всё на части, но пока не выходит

b707
Offline
Зарегистрирован: 26.05.2017

я подозреваю, что у вас на нано просто памяти не хватает. Создалм буфер в 600 байт, кучу строк в памяти и кще пытаетесь запихнуть туда же огромный запрос

Для проверки попробуйте запустить этот же код на Меге

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

arduino ide пишет, что занято 25% или это не показатель?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Запрос-то небольшой, но метод гадания тут не подходит. Если все это в локалке крутится, то отладка очень простая - симулировать камеру на компе.

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

сейчас открыл для себя интересный момент, адрес, который получает ардуино, не пингуется с компа, не подскажите в чём может быть проблема?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Драйвер может не отвечать. Для ENC он программный - любой делэй валит icmp

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

Также, пробовал делать запрос на свой комп и смотреть в wireshark трафик с фильтром на источник и адрес, который получила ардуинка, но там пусто, как так?
Короче, то-ли я дурак, то-ли лыжи не едут.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

СовсемЗелёный пишет:

arduino ide пишет, что занято 25% или это не показатель?

Ни разу.
СовсемЗелёный пишет:

Короче, то-ли я дурак, то-ли лыжи не едут.

Скорее всего и то, и другое. Второе - следствие первого.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

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

Вспомню молодость. Ищем методом изоляции. Как поиск льва в пустыне - делим пустыню пополам ;).

1. Нужно научиться давать команду камере просто из консоли компа.

2. Нужно научиться хоть что-то отправлять с Ардуино. Для начала на комп.

3. Поднимаем на компе простейший сервер с аутентификацией и пробуем получить реакцию от него.

4. "а вот потом, если повезет, триппер" (с) День Радио. Теперь пробуем обратиться к камере.

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

В принципе я не сомневаюсь ни в том, ни в другом, но всё же хочу найти решение :)

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

Ну, до института мне ещё дорасти надо.
Описанные вами пункты звучат конечно весело, но боюсь, что я опять сяду в лужу, но не смотря на это, постараюсь реализовать)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

СовсемЗелёный пишет:

Ну, до института мне ещё дорасти надо.

Тогда почему ты не в песочнице? Программисты без высшего бывают, но весьма редко, как и любые "вундеркинды".

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

Я ещё в том числе не совсем понимаю, как работает форум и где мне надо бы обитать :)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Все наивные вопросы без попыток их решить - в песочнице. В разделах "Программирование" и "Аппаратные вопросы" обсуждения уже опытных людей. Не голые вопросы, а описание трудностей или интересных моментов. И конечно все это - с самостоятельными попытками решения.

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

на данный момент, я пробую сделать запрос на камеру с компа и изучаю его содержимое в wireshark. Пока что не очень понимаю, что там происходит с аутентификацией 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

начни с консоли компа. Только не свою кодированную строку а как есть GET http://admin:MQZS]@192.168.55.104/cgi-bin/... и так далее.

Вот прям телнетом на порт камеры.

СовсемЗелёный
Offline
Зарегистрирован: 06.10.2021

попробовал через putty, но результата не дало

Araris
Offline
Зарегистрирован: 09.11.2012