помогите в простой программе

cpa3y
Offline
Зарегистрирован: 03.01.2020

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

нужно модифицировать простую рабочую программу

negavoid
Offline
Зарегистрирован: 09.07.2016

Дык попробуйте прочесть правила форума. Как мы можем вам помочь, если вы не выложили ни код вашей простой рабочей программы, ни схемы проекта, не уточнили что за "получение информации через браузер" (подсказываю, правильно будет получение информации по http(s)), ни ваши попытки что-то сделать самому. А в правилах это всё описано. Ещё подсказываю, примеров куча, ничего не устарело, всё работает.

cpa3y
Offline
Зарегистрирован: 03.01.2020
несколько дней уже ковыряюсь, ничего толком не получается, есть программа из интернетов, которая отлично работает:
#include <SPI.h>


#define CS    15  // D8


byte val = 0;
 
void setup() { 
  Serial.begin(115200);
  SPI.begin();    

  pinMode (CS, OUTPUT);   
}
 
void loop() {
 
    float voltage = (analogRead(A0) * 5.0)/ 1024.0;  // читаем напряжение на входе А0
    Serial.print("voltage = " );                // отправляем данные о напряжении в монитор порта      
    Serial.print(voltage);      
    Serial.print("  val = ");                   // значение которое пишем в потенциометр
    Serial.print(val, BIN);                     // бинарное
    Serial.print(" / ");
    Serial.println(val, DEC);                   // десятичное

    val++;                                      // прибавляем к переменной 1
    MCP4xxxxWrite(val);                         // пишем значение переменной в потенциометр

    delay(500);                                 // ждем до следующего раза
 
}
 
void MCP4xxxxWrite(byte val) {              // отправляет в потенциометр значение ползунка
    digitalWrite(CS, LOW);                    // включаем прием данных микросхемой
    SPI.transfer(0b00010001);                 // отправляем первый байт в регистр конфигурации
    SPI.transfer(val);                        // отправляем второй байт в "регистр ползунка"
    digitalWrite(CS,HIGH);                    // выключаем прием данных микросхемой
}

в данный момент программа перебирает все значения val от 0 до 255 - каждые пол секунды, а мне нужно что бы я мог по wifi подключиться к серверу на ардуино, вручную записать эту переменную, а в ответ получал переменную voltage.

мои ошибки в синтаксисе и структуре программы, всё время одни ошибки получаю. веб сервер поднять то не проблема, главное - приём и выдача переменных

negavoid
Offline
Зарегистрирован: 09.07.2016

WiFi-то какой? На чём этот код запускается? Сразу на esp8266 или на просто ардуино уно/нано, а есп рядом отдельным модулем?

https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino

cpa3y
Offline
Зарегистрирован: 03.01.2020

nodeMCU v3, заливаю через arduino 1.8.10

negavoid
Offline
Зарегистрирован: 09.07.2016

Ага, значит сразу на esp. 

В ардуино ide есть рабочий пример: File->Examples->ESP8266HTTPClient->BasicHTTPClient что то же самое, что и по ссылке выше. Там же есть и пример для https.

Сначала добейтесь того, чтобы у вас сработал пример с вашим веб-сервером. Потом построчно перенесите нужные строки в ваш скетч.

cpa3y
Offline
Зарегистрирован: 03.01.2020

negavoid пишет:

Ага, значит сразу на esp. 

В ардуино ide есть рабочий пример: File->Examples->ESP8266HTTPClient->BasicHTTPClient что то же самое, что и по ссылке выше. Там же есть и пример для https.

Сначала добейтесь того, чтобы у вас сработал пример с вашим веб-сервером. Потом построчно перенесите нужные строки в ваш скетч.

пример интересный, но я прошу помощи немного в другой ситуации. в приведённом вами примере железо само ходит на сайт и принимает данные, а я бы хотел наоборот - вручную вводить данные на ардуино и получать другие обратно

negavoid
Offline
Зарегистрирован: 09.07.2016

Тогда Examples->ESP8266WebServer->HelloServer

cpa3y
Offline
Зарегистрирован: 03.01.2020

вообще File->Examples->ESP8266HTTPClient->BasicHTTPClient

мне очень понравился, может быть это даже лучше что бы железка сама цеплялась куда мне надо и получала, отдавала данные.

я не совсем понимаю - в данном примере она цепляется за 17 порт сайта https://www.djxmmx.net/ и отправляет ему

hello from ESP8266

в ответ он ей присылает красивые умные цитаты из паблика "брат за брата"

а каким методом идёт отправка и получение?

я бы хотел бы что бы данная программа взаимодействовала с сервером zabbix, как их проще скрестить?

negavoid
Offline
Зарегистрирован: 09.07.2016

djxmmx - это пример ESP8266WiFi->tcp client

Отправка и получение идут путём записи и чтения из сокета. С zabbix поступить так же, сэмулировать агента, на каком там порту, 10150, что ли, zabbix слушает, ну и вот туда от имени агента-ардуины слать свои данные.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Порт агента - tcp/10051, траппера - tcp/10051.

Однако, начиная с релиза 4.0, plain text protocol более не поддерживается. Поэтому просто что-то там print() - маловато будет.

Zabbix agent для ESP в проектах есть.