INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
WiFiManager und Pushover - Tokenvariable übergeben
09.08.2018, 12:46
Beitrag #1
WiFiManager und Pushover - Tokenvariable übergeben
Hallo in die Runde,

ich habe derzeit folgenden Sketch am laufen:

Code:
#include <FS.h>                   //this needs to be first, or it all crashes and burns...

#if defined(ESP8266)
#include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
#else
#include <WiFi.h>          //https://github.com/esp8266/Arduino
#endif

//needed for library
#include <DNSServer.h>
#if defined(ESP8266)
#include <ESP8266WebServer.h>
#else
#include <WebServer.h>
#endif
#include <WiFiManager.h>          //https://github.com/tzapu/WiFiManager

#include <ArduinoJson.h>          //https://github.com/bblanchon/ArduinoJson
#include "Pushover.h"


char mqtt_server[40];
char mqtt_port[6] = "8080";
//char blynk_token[33] = "YOUR_BLYNK_TOKEN";
char poUserToken[32] = "";
char poAppToken[32] = "";


//default custom static IP
char static_ip[16] = "";
char static_gw[16] = "192.168.178.1";
char static_sn[16] = "255.255.255.0";

//flag for saving data
bool shouldSaveConfig = false;

//callback notifying us of the need to save config
void saveConfigCallback () {
  Serial.println("Should save config");
  shouldSaveConfig = true;
}





void setup() {
  Serial.begin(115200);
  //WiFi.begin("myNetwork", "secureWPAKii");
  //while (WiFi.status() != WL_CONNECTED) delay(50);
  //Serial.println("Connected");

  //clean FS, for testing
  SPIFFS.format();

//read configuration from FS json
  Serial.println("mounting FS...");

  if (SPIFFS.begin()) {
    Serial.println("mounted file system");
    if (SPIFFS.exists("/config.json")) {
      //file exists, reading and loading
      Serial.println("reading config file");
      File configFile = SPIFFS.open("/config.json", "r");
      if (configFile) {
        Serial.println("opened config file");
        size_t size = configFile.size();
        // Allocate a buffer to store contents of the file.
        std::unique_ptr<char[]> buf(new char[size]);

        configFile.readBytes(buf.get(), size);
        DynamicJsonBuffer jsonBuffer;
        JsonObject& json = jsonBuffer.parseObject(buf.get());
        json.printTo(Serial);
        if (json.success()) {
          Serial.println("\nparsed json");

          strcpy(mqtt_server, json["mqtt_server"]);
          strcpy(mqtt_port, json["mqtt_port"]);
          //strcpy(blynk_token, json["blynk_token"]);
          strcpy(poUserToken, json["poUserToken"]);
          strcpy(poAppToken, json["poAppToken"]);

          if(json["ip"]) {
            Serial.println("setting custom ip from config");
            //static_ip = json["ip"];
            strcpy(static_ip, json["ip"]);
            strcpy(static_gw, json["gateway"]);
            strcpy(static_sn, json["subnet"]);
            //strcat(static_ip, json["ip"]);
            //static_gw = json["gateway"];
            //static_sn = json["subnet"];
            Serial.println(static_ip);
/*            Serial.println("converting ip");
            IPAddress ip = ipFromCharArray(static_ip);
            Serial.println(ip);*/
          } else {
            Serial.println("no custom ip in config");
          }
        } else {
          Serial.println("failed to load json config");
        }
      }
    }
  } else {
    Serial.println("failed to mount FS");
  }
  //end read
  Serial.println(static_ip);
  //Serial.println(blynk_token);
  Serial.println(mqtt_server);
  Serial.println(poUserToken);
  Serial.println(poAppToken);

  // The extra parameters to be configured (can be either global or just in the setup)
  // After connecting, parameter.getValue() will get you the configured value
  // id/name placeholder/prompt default length
  WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
  WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 5);
  //WiFiManagerParameter custom_blynk_token("blynk", "blynk token", blynk_token, 34);
  WiFiManagerParameter custom_poUserToken("poUserToken", "Pushover User-Token", poUserToken, 32);
  WiFiManagerParameter custom_poAppToken("poAppToken", "Pushover App-Token", poAppToken, 32);

  //WiFiManager
  //Local intialization. Once its business is done, there is no need to keep it around
  WiFiManager wifiManager;

  //set config save notify callback
  wifiManager.setSaveConfigCallback(saveConfigCallback);

  //set static ip
  IPAddress _ip,_gw,_sn;
  _ip.fromString(static_ip);
  _gw.fromString(static_gw);
  _sn.fromString(static_sn);

  wifiManager.setSTAStaticIPConfig(_ip, _gw, _sn);
  
  //add all your parameters here
  wifiManager.addParameter(&custom_mqtt_server);
  wifiManager.addParameter(&custom_mqtt_port);
  //wifiManager.addParameter(&custom_blynk_token);
  wifiManager.addParameter(&custom_poUserToken);
  wifiManager.addParameter(&custom_poAppToken);

  //reset settings - for testing
  wifiManager.resetSettings();

  //set minimu quality of signal so it ignores AP's under that quality
  //defaults to 8%
  //wifiManager.setMinimumSignalQuality();
  
  //sets timeout until configuration portal gets turned off
  //useful to make it all retry or go to sleep
  //in seconds
  wifiManager.setTimeout(600);

  //fetches ssid and pass and tries to connect
  //if it does not connect it starts an access point with the specified name
  //here  "AutoConnectAP"
  //and goes into a blocking loop awaiting configuration
  if (!wifiManager.autoConnect("HaGew-Testumgebung", "")) {
    Serial.println("failed to connect and hit timeout");
    delay(3000);
    //reset and try again, or maybe put it to deep sleep
    ESP.restart();
    delay(5000);
  }

  //if you get here you have connected to the WiFi
  Serial.println("connected...yeey :)");

  //read updated parameters
  strcpy(mqtt_server, custom_mqtt_server.getValue());
  strcpy(mqtt_port, custom_mqtt_port.getValue());
  //strcpy(blynk_token, custom_blynk_token.getValue());
  strcpy(poUserToken, custom_poUserToken.getValue());
  strcpy(poAppToken, custom_poAppToken.getValue());


  //save the custom parameters to FS
  if (shouldSaveConfig) {
    Serial.println("saving config");
    DynamicJsonBuffer jsonBuffer;
    JsonObject& json = jsonBuffer.createObject();
    json["mqtt_server"] = mqtt_server;
    json["mqtt_port"] = mqtt_port;
    //json["blynk_token"] = blynk_token;
    json["poUserToken"] = poUserToken;
    json["poAppToken"] = poAppToken;

    json["ip"] = WiFi.localIP().toString();
    json["gateway"] = WiFi.gatewayIP().toString();
    json["subnet"] = WiFi.subnetMask().toString();

    File configFile = SPIFFS.open("/config.json", "w");
    if (!configFile) {
      Serial.println("failed to open config file for writing");
    }

    json.prettyPrintTo(Serial);
    json.printTo(configFile);
    configFile.close();
    //end save
  }

  
  
  
  Pushover po = Pushover("poAppToken","poUserToken");
  po.setDevice("Device1");
  po.setMessage("Testnotification");
  po.setSound("bike");
  Serial.println(po.send()); //should return 1 on success
}

void loop() {
}

Soweit so gut. Der WiFiManager baut mit meinem ESP8266 - 12E Board ein AP auf, wo ich meine Netzwerkdaten samt MQTT Adresse und Port eingeben kann.
Habe es nun noch mit den beiden Variablen poAppToken und poUserToken erweitert. Da trägt man seine beidem Zugangsdaten ein, die man von Pushover bekommen hat. Diese werden dann auch, laut seriellem Monitor, korrekt übergeben und übernommen. Doch anscheinend nutzt:

Pushover po = Pushover("poAppToken","poUserToken");

nicht die eingegebenen Werte um eine Verbindung herzustellen.
Klar, wenn ich die Werte direkt in das Sketch schreibe, übernimmt er diese ja auch und der Monitor gibt mir eine 1 zurück. Mit den variablen vom WiFiManager kommt eine 0 zurück. Also passt was nicht.

Habt ihr da vielleicht noch einen Tipp ?

Viele Grüße und besten Dank

André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.08.2018, 13:08
Beitrag #2
RE: WiFiManager und Pushover - Tokenvariable übergeben
string.trim()

Keine Ahnung ob es hilft, ich kenne weder den WiFi Manager noch Pushover.


Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  WiFiManager für ESP32 Projekt mischaka 3 1.523 16.05.2018 13:02
Letzter Beitrag: Tommy56
  WifiManager weiteren Parameter verpassen... torsten_156 3 804 10.05.2018 22:39
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste