В dweet.io выводить 2 значения

Тема в разделе "Флудилка", создана пользователем даниил2000, 8 мар 2021.

  1. даниил2000

    даниил2000 Нерд

    Всем привет!
    сегодня решил поработать с ESP и инетом.
    Но как надо отредактировать кода, так чтобы в dweet.io можно было выводить 2 значения?
    Код (Text):
    #include <TroykaMeteoSensor.h>
    #include "ESP8266.h"
    #include <SoftwareSerial.h>
    #include <math.h>
    #define SSID "имя_твоего_wifi"
    #define PASSWORD "пароль"
    TroykaMeteoSensor meteoSensor;
    SoftwareSerial mySerial(4, 5);
    ESP8266 wifi(mySerial);
    String name = "Danuel_2507";
    void setup(void) {
      Serial.begin(9600);
      meteoSensor.begin();
      if (wifi.joinAP(SSID, PASSWORD)) {
        Serial.println("https://dweet.io/follow/" + name);
      } else {
        Serial.println("Wi-Fi connection error");
      }
    }
    void loop(void) {
      if (wifi.createTCP("www.dweet.io", 80)) {
        String data = "GET /dweet/for/" + name + "?";
        String data_2 = "GET /dweet/for/" + name + "?";
        int stateSensor = meteoSensor.read();
        // проверяем состояние данных
        switch (stateSensor) {
          case SHT_OK:
            data += "temp=" + String(meteoSensor.getTemperatureC()) + " HTTP/1.1\r\n";
            data += "Host: dweet.io\r\n\r\n";
            wifi.send(data.c_str(), data.length());
            data_2 += "humidity=" + String(meteoSensor.getHumidity()) + " HTTP/2.2\r\n";
            data_2 += "Host: dweet.io\r\n\r\n";
            wifi.send(data_2.c_str(), data_2.length());
            wifi.releaseTCP();
            break;
          case SHT_ERROR_DATA:
            Serial.println("Data error or sensor not connected");
            break;
          // ошибка контрольной суммы
          case SHT_ERROR_CHECKSUM:
            Serial.println("Checksum error");
            break;
        }
      }
        else {
          Serial.println("create TCP error");
        }
      delay(1000);
    }
    P.S. если 2 значения можно выводить, то можно ли 3 значения?
     
    Последнее редактирование: 8 мар 2021
  2. NikitOS

    NikitOS Король шутов Администратор

    Продублировать, изменив ключ и значение.
    Можно и больше.
     
  3. даниил2000

    даниил2000 Нерд

    В смысле "изменить ключ"?
    В один не получится запихнуть?
     
  4. NikitOS

    NikitOS Король шутов Администратор

    Ключ массива, то бишь «humidity=» в данном случае.
     
  5. даниил2000

    даниил2000 Нерд

    Я не совсем понял как его изменить, чтобы он нормально работал, можете часть кода скинуть, который выводит в dweet два значения
     
  6. Andrey12

    Andrey12 Гик

    А как пробовали изменить и что не получилось? Ошибку пишет, или еще что?
    Присылайте ваш вариант, посмотрим что не так.
     
  7. даниил2000

    даниил2000 Нерд

    есть такой варик
    Код (Text):
    #include <TroykaMeteoSensor.h>
    #include "ESP8266.h"
    #include <SoftwareSerial.h>
    #include <math.h>
    #define SSID "ваш_инет"
    #define PASSWORD "пароль"
    TroykaMeteoSensor meteoSensor;
    SoftwareSerial mySerial(4, 5);
    ESP8266 wifi(mySerial);
    String name = "ключ";
    void setup(void) {
      Serial.begin(9600);
      meteoSensor.begin();
      if (wifi.joinAP(SSID, PASSWORD)) {
        Serial.println("https://dweet.io/follow/" + name);
      } else {
        Serial.println("Wi-Fi connection error");
      }
    }
    void loop(void) {
      int count = 0;
      if (wifi.createTCP("www.dweet.io", 80)) {
        String data = "GET /dweet/for/" + name + "?";
        String data_2 = "GET /dweet/for/" + name + "?";
        int stateSensor = meteoSensor.read();
        // проверяем состояние данных
        switch (stateSensor) {
          case SHT_OK:
            while (count == 3) {
              count++;
              if (count == 1) {
                data += "temp=" + String(meteoSensor.getTemperatureC()) + " HTTP/1.1\r\n";
                data += "Host: dweet.io\r\n\r\n";
                wifi.send(data.c_str(), data.length());
                wifi.releaseTCP();
                delay(1000);
              };
              if (count == 2) {
                data_2 += "humidity=" + String(meteoSensor.getHumidity()) + " HTTP/2.2\r\n";
                data_2 += "Host: dweet.io\r\n\r\n";
                wifi.send(data_2.c_str(), data_2.length());
                wifi.releaseTCP();
                delay(1000);
              };
            };
            break;
            break;
          case SHT_ERROR_DATA:
            Serial.println("Data error or sensor not connected");
            break;
          // ошибка контрольной суммы
          case SHT_ERROR_CHECKSUM:
            Serial.println("Checksum error");
            break;
        }
      }
      else {
        Serial.println("create TCP error");
      }

      delay(1000);
    }
    Но чёт датчик перестал норм работать, позже попробую на мк и других ардуинок
     
  8. NikitOS

    NikitOS Король шутов Администратор

    @даниил2000, каким образом Вы написали этот код? Вы понимаете, что он делает?
    Он никогда не будет ничего отправлять, потому что 'count' будет всегда равна нулю. Достаточно было просто добавить:
    Код (C++):
             data_2 += "&myAwesomeVal=" + String(meteoSensor.getHumidity()) + " HTTP/2.2\r\n";
    после:
    Код (C++):
             data_2 += "humidity=" + String(meteoSensor.getHumidity()) + " HTTP/2.2\r\n";
     
  9. ZAZ-965

    ZAZ-965 Гуру

    @даниил2000, попробуйте так http://dweet.io/#HowTo
    Код (C++):
    data += "temp=" + String(meteoSensor.getTemperatureC()) + "&humidity=" + String(meteoSensor.getHumidity()) + " HTTP/1.1\r\n";
    Интересно, а для третьего параметра написали бы - String(meteoSensor.getPressure ()) + " HTTP/3.3\r\n" ?
     
    Andrey12 и NikitOS нравится это.