• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Данные о напряжении АКБ на webserver

mixa1000

New member
Добрый день.
Имею esp8266 mini и датчик напряжения ina 219. Т.к только знакомлюсь а arduino-не получаться правильно составить скейч для получения данных на сервере.Что -то не то при написании html страницы.

#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_INA219.h>


const char* ssid = "mywifi";
const char* password = "0503694629";

Adafruit_INA219 ina219;


WiFiServer server(80);



void setup(void)
{
Serial.begin(115200);
while (!Serial) {

delay(1);
}

uint32_t currentFrequency;

Serial.println("Hello!");


ina219.begin();








Serial.println();
Serial.print("Connecting to ");

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");


server.begin();
Serial.println("Web server running. Waiting for the ESP IP...");

delay(10000);


Serial.println(WiFi.localIP());
Serial.print("MAC: ");
Serial.println(WiFi.macAddress());
}



void loop()
{
WiFiClient client = server.available();

if (client) {
Serial.println("New client"); //

boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
void getBusVoltage()
{
float busvoltage = 0;

busvoltage = ina219.getBusVoltage_V();

Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");

Serial.println("");

delay(2000);

if (c == '\n' && blank_line) {
getBusVoltage();
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("<head></head><body><h1>ESP8266 - BusVoltage </h1><h3>BusVoltage in Volt: ");
client.println(voltageVString);
client.println("*V</h3></body></html>");
client.print("MAC: ");
client.println(WiFi.macAddress());
break;
}
if (c == '\n') {

blank_line = true;
}
else if (c != '\r') {

blank_line = false;
}
}
}

delay(1);
client.stop();
Serial.println("Client disconnected.");



}
}

Данные в порте получаю .
Заранее благодарен
 

CodeNameHawk

Moderator
Команда форума
Что -то не то при написании html страницы.
Ну сделайте что то, кто вас угадает, что вам не нравится.
Втавить
Код:
delay(10000);
в Setup это еще надо додуматься, как впрочем и то, что нет желания прочитать, как надо вставлять пример кода в сообщение.
 

CodeNameHawk

Moderator
Команда форума
И что не понятного в этой ошибке?
Проверьте соответствие типов данных, то что вы объявили и то что возвращает функция ina219.getBusVoltage_V() .
Вынесите объявление переменной из функции loop() , сделайте ее глобальной.
 
Последнее редактирование:

mixa1000

New member
C++:
exit status 1
'busvoltage' was not declared in this scope
Код:
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_INA219.h>


const char* ssid = "mywifi";
const char* password = "0503694629";

Adafruit_INA219 ina219;


WiFiServer server(80);



void setup(void)
{
  Serial.begin(115200);
  while (!Serial) {
     
      delay(1);
  }

  uint32_t currentFrequency;
   
  Serial.println("Hello!");


  ina219.begin();








  Serial.println();
  Serial.print("Connecting to ");

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");


  server.begin();
  Serial.println("Web server running. Waiting for the ESP IP...");
             
  delay(10000);


  Serial.println(WiFi.localIP());
  Serial.print("MAC: ");
  Serial.println(WiFi.macAddress());
}



void loop()
{
  WiFiClient client = server.available();

  if (client) {
    Serial.println("New client");  //
   
    boolean blank_line = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        void getBusVoltage()
{
  float busvoltage = 0;

  busvoltage = ina219.getBusVoltage_V();

  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");

  Serial.println("");

  delay(2000);
   
    if (c == '\n' && blank_line) {
            getBusVoltage();
            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("<head></head><body><h1>ESP8266 - BusVoltage </h1><h3>BusVoltage in Volt: ");
            client.println(voltageVString);
            client.println("*V</h3></body></html>");
            client.print("MAC: ");
            client.println(WiFi.macAddress());
      break;
         }
        if (c == '\n') {
         
          blank_line = true;
        }
        else if (c != '\r') {
         
          blank_line = false;
        }
      }
    }
   
    delay(1);
    client.stop();
    Serial.println("Client disconnected.");
             
}
}
 

mixa1000

New member
А можно уточнить ,в каком месте кода это сделать. я еще только учусь
 

CodeNameHawk

Moderator
Команда форума
Код:
#include <Adafruit_INA219.h>


const char* ssid = "mywifi";
const char* password = "0503694629";

Adafruit_INA219 ina219;
// Переместите сюда
float busvoltage;
а внутри уберите декларацию.
 

mixa1000

New member
Спасибо ограменное.
Очень помогли. Работает. Правда сервер долго загружается. Разберусь.
 

mixa1000

New member
Добрый день.
Подскажите пожалуйста-сервер запускается только с кнопки на плате ,в браузере величину напряжения могу получить только после нажатия этой кнопки ,обновить браузер невозможно ,постоянная загрузка.
 

CodeNameHawk

Moderator
Команда форума
Добрый день.
Подскажите пожалуйста-сервер запускается только с кнопки на плате ,в браузере величину напряжения могу получить только после нажатия этой кнопки ,обновить браузер невозможно ,постоянная загрузка.
Вы может и знаете, что там делаете, я нет.
 
Сверху Снизу