Не могу загрузить IP из EEPROM

sivix
Offline
Зарегистрирован: 02.11.2015

День добрый! Делаю проект и столкнулся с проблемой. Сохроняю в  EEPROM

 IP адрес . далее пытаюсь его прочитать и передать IPAddress server(EEPROM.read(7), EEPROM.read(8), EEPROM.read(9), EEPROM.read(10));

Но увы клиент не конектится к серверу. Если прописать все руками то работает. Но мне нужен динамический адрес . 


#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
#define DHTPIN D2
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE,11);

const char *ssid =	".......";		// cannot be longer than 32 characters!
const char *pass =	".......";		//

// Update these with values suitable for your network.
IPAddress server(EEPROM.read(7), EEPROM.read(8), EEPROM.read(9), EEPROM.read(10));
char* pubTopic = "home/data/#";
char* dev_top = "home/data/device";
char* statTopic = "home/data/status/";
String mqtt_user = "test";
String mqtt_pass = "test";
String mqtt_client_id = "00001";
String mqtt_client = "DHT_sensor";
unsigned long lastMqtt = 0;
WiFiClient wclient;
PubSubClient client(wclient, server);

void callback(const MQTT::Publish& sub) {
  Serial.print("Get data from subscribed topic ");
  Serial.print(sub.topic());
  Serial.print(" => ");
  Serial.println(sub.payload_string());


  client.publish(statTopic, "test");
  Serial.println(statTopic);

  // echo
  MQTT::Publish newpub(pubTopic, sub.payload(), sub.payload_len());
  client.publish(newpub);
}



void setup() {
  // Setup console
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.println();
  dht.begin();
  client.set_callback(callback);
}

void loop() {
  if (lastMqtt > millis()) lastMqtt = 0;
  if (WiFi.status() != WL_CONNECTED) {
    Serial.print("Connecting to ");
    Serial.print(ssid);
    Serial.println("...");
    WiFi.begin(ssid, pass);

    if (WiFi.waitForConnectResult() != WL_CONNECTED)
      return;
    Serial.println("WiFi connected");
  }

  if (WiFi.status() == WL_CONNECTED) {
    if (!client.connected()) {
      if (client.connect(mqtt_client)) {
        client.publish(dev_top, mqtt_client_id);
        float h = dht.readHumidity();
       float t = dht.readTemperature();
       char char_temp[10]; //Временная переменная для перевода Float в char
       char char_hum[10];
       dtostrf(h, 1, 0, char_temp);
       dtostrf(t, 1, 0, char_hum);
       client.publish("home/data/status/sensor/DHT_00001_t", char_temp);
       client.publish("home/data/status/sensor/DHT_00001_h", char_hum);
        client.subscribe("home/data/action/#");
      }
    }

    if (client.connected())
      client.loop();
  }
  if (millis() > (lastMqtt + 50000)) {
    if (!client.connected()) {
      if (client.connect("system_01V_eth")) client.subscribe("home/data/action/#");
    } 
    if (client.connected()) { 
       float h = dht.readHumidity();
       float t = dht.readTemperature();
       char char_temp[10]; //Временная переменная для перевода Float в char
       char char_hum[10];
       dtostrf(h, 1, 0, char_temp);
       dtostrf(t, 1, 0, char_hum);
       client.publish("home/data/status/sensor/DHT_00001_t", char_temp);
       client.publish("home/data/status/sensor/DHT_00001_h", char_hum);      
    }    
    lastMqtt = millis();
  }
}

 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Уверены, что сохраняете правильно?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А прочитать переменные и вывести в Serial для контроля что мешает? По меньшей мере понятно будет что читается.

Radjah
Offline
Зарегистрирован: 06.08.2014

В 15-17 \0 не надо добавлять?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Во "взрослых" языках есть функции, преобразующие ipv4 адрес в целое и обратно. Может быть имеет смысл через них писать?

http://www.cplusplus.com/forum/general/9403/

char ip[] = "192.168.1.102";
long long_address = inet_addr (ip) ;
char *dot_ip = inet_ntoa(long_address);

 

Radjah
Offline
Зарегистрирован: 06.08.2014

А на фейхуа в 14 строка такая конструкция?

Сначала объявил, потом в setup заполнил.

sivix
Offline
Зарегистрирован: 02.11.2015

Спасибо всем . проблему решил еще в понидельник. 

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

sivix пишет:

Спасибо всем . проблему решил еще в понидельник. 

и никому не скажу как...