• Система автоматизации с открытым исходным кодом на базе 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
Команда форума
Добрый день.
Подскажите пожалуйста-сервер запускается только с кнопки на плате ,в браузере величину напряжения могу получить только после нажатия этой кнопки ,обновить браузер невозможно ,постоянная загрузка.
Вы может и знаете, что там делаете, я нет.
 
Сверху Снизу