Задать вопрос
DYm00n
@DYm00n

ESP12 не отправляет данные на Thingspeak?

Третий день борюсь с проблемой, есть допиленный скетч
#include <ESP8266WiFi.h> // Импортируем библиотеку для работы с esp8266
#include <OneWire.h> //Библиотека для работы с OneWire
OneWire  ds(2);  // Инициализируем OneWire шину на 2 порте
//надо подтянуть резистором на 4,7к к плюсу !

const int pinPhoto = A0;
int raw = 0;
const char *ssid = "***"; //Имя вашей WIFI сети
const char *password = "***"; // Пароль вашей Wifi сети

const char* host = "184.106.153.149";//Ip Сервера TS
const int httpPort = 80; //Порт сервера
const char* privateKey = "мой ключ";//API KEY TS

byte addr[8];
float temperature; //Переменная с температурой

float getTemp() {
  byte data[12];

  if (!ds.search(addr)) {
    Serial.println("No more addresses.");
    while (1);
  }
  ds.reset_search();

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    while (1);
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44);
  delay(1000);

  ds.reset();
  ds.select(addr);
  ds.write(0xBE);

  for (int i = 0; i < 9; i++) {
    data[i] = ds.read();
  }

  int raw = (data[1] << 8) | data[0];
  if (data[7] == 0x10) raw = (raw & 0xFFF0) + 12 - data[6];
  return raw / 16.0;
}

void setup() {
  Serial.begin(115200);
  pinMode( pinPhoto, INPUT );// Скорость общения
  delay(10);
  //Даем запустится вафле
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  //Соединяемся с роутером
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    //Если не подключен то выведем точку
    Serial.print(".");
  }

  //Подключились, напишем инфу о соединении в Serial
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  //Пишем в сериал то что мы подключаемся
  Serial.print("connecting to ");
  Serial.println(host);

  // Используем WiFi клиент
  WiFiClient client;
  WiFiClient client2;
  if (!client.connect(host, httpPort) && !client2.connect(host, httpPort)) {
    Serial.println("connection failed"); // пишем ошибку
    return;
  }

  temperature = getTemp(); // получаем температуру с датчика
  raw = analogRead( pinPhoto );

  String url = "/update?key=";
  url += privateKey;
  url += "&field2=";
  url += raw;
 
  String url2 = "/update?key=";
  url2 += privateKey;
  url2 += "&field3=";
  url2 += temperature;

  // Отправляем запрос на сервер
  client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n");
  Serial.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n");
  client2.print(String("GET ") + url2 + " HTTP/1.1\r\n" + "Host: " + host + "\r\n");
  Serial.print(String("GET ") + url2 + " HTTP/1.1\r\n" + "Host: " + host + "\r\n");
  delay(10);

  // Если сервер ответил то передадим ответ в сериал порт
  while (client.available()) {
    String line = client.readStringUntil('\r');
  }
  while (client2.available()) {
    String line = client2.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");

  delay(1000 * 60);
}

Смысл данной затеи - одновременно (или с минимальной задержкой) снимать показания с DS18B20 и фоторезистора и выкладывать их. Но проблема с этим скетчем такая - по монитору порта - все ок, но на сайте данные не появляются. API для сайта точно верный. Монитор порта выдает
Connecting to "***"
......
WiFi connected
IP address:
192.168.88.227
connecting to 184.106.153.149
GET /update?key=мой ключ&field2=21.62 HTTP/1.1
Host: 184.106.153.149
GET /update?key=мой ключ&field3=1024 HTTP/1.1
Host: 184.106.153.149
  • Вопрос задан
  • 423 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы