From 2d22c7d5ee0fbc653a9f51832508d7b5f508cd66 Mon Sep 17 00:00:00 2001 From: universam1 Date: Sun, 8 Oct 2017 13:59:16 +0200 Subject: [PATCH] using http library for post --- pio/lib/Globals/Globals.h | 2 +- pio/lib/Sender/Sender.cpp | 40 ++++++++++++++++++++++++++++++++++++++- pio/lib/Sender/Sender.h | 3 +++ pio/src/iSpindel.cpp | 6 ++++-- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/pio/lib/Globals/Globals.h b/pio/lib/Globals/Globals.h index 31e88e8a..2fa1f9ca 100644 --- a/pio/lib/Globals/Globals.h +++ b/pio/lib/Globals/Globals.h @@ -26,7 +26,7 @@ extern Ticker flasher; // #include // defines go here -#define FIRMWAREVERSION "5.5.3" +#define FIRMWAREVERSION "5.5.4" #define API_FHEM true diff --git a/pio/lib/Sender/Sender.cpp b/pio/lib/Sender/Sender.cpp index 4e461d48..33445013 100644 --- a/pio/lib/Sender/Sender.cpp +++ b/pio/lib/Sender/Sender.cpp @@ -71,6 +71,44 @@ bool SenderClass::send(String server, String url, uint16_t port) return true; } +bool SenderClass::sendGenericPost(String server, String url, uint16_t port) +{ + _jsonVariant.printTo(Serial); + + HTTPClient http; + + Serial.println(F("HTTPAPI: posting")); + // configure traged server and url + http.begin(server, port, url); + http.addHeader("User-Agent", "iSpindel"); + http.addHeader("Connection", "close"); + http.addHeader("Content-Type", "application/json"); + + // size_t len = _jsonVariant.measureLength() + 1; + // uint8_t json[len]; + // _jsonVariant.printTo(json, len); + String json; + _jsonVariant.printTo(json); + auto httpCode = http.POST(json); + Serial.println(String("code: ") + httpCode); + + // httpCode will be negative on error + if (httpCode > 0) + { + if (httpCode == HTTP_CODE_OK) + { + Serial.println(http.getString()); + } + } + else + { + Serial.print(F("[HTTP] POST... failed, error: ")); + Serial.println(http.errorToString(httpCode)); + } + + http.end(); +} + bool SenderClass::sendUbidots(String token, String name) { _jsonVariant.printTo(Serial); @@ -126,7 +164,7 @@ bool SenderClass::sendFHEM(String server, uint16_t port, String name) String msg = String("GET /fhem?cmd.Test=set%20"); msg += name; - + for (const auto &kv : _jsonVariant.as()) { msg += "%20"; diff --git a/pio/lib/Sender/Sender.h b/pio/lib/Sender/Sender.h index 20b8146e..60adbb10 100644 --- a/pio/lib/Sender/Sender.h +++ b/pio/lib/Sender/Sender.h @@ -9,6 +9,7 @@ #define _SENDER_H_ #include +#include #include //https://github.com/bblanchon/ArduinoJson class SenderClass @@ -16,6 +17,8 @@ class SenderClass public: SenderClass(); bool send(String server, String url, uint16_t port = 80); + bool sendGenericPost(String server, String url, uint16_t port = 80); + bool sendUbidots(String token, String name); bool sendFHEM(String server, uint16_t port, String name); bool sendTCONTROL(String server, uint16_t port); diff --git a/pio/src/iSpindel.cpp b/pio/src/iSpindel.cpp index d3008c78..cb2798cc 100644 --- a/pio/src/iSpindel.cpp +++ b/pio/src/iSpindel.cpp @@ -442,12 +442,14 @@ bool uploadData(uint8_t service) if (service == DTHTTP) { SerialOut(F("\ncalling HTTP")); - return sender.send(my_server, my_url, my_port); + // return sender.send(my_server, my_url, my_port); + return sender.sendGenericPost(my_server, my_url, my_port); } else if (service == DTCraftbeepPi) { SerialOut(F("\ncalling CraftbeepPi")); - return sender.send(my_server, CBP_ENDPOINT, 5000); + // return sender.send(my_server, CBP_ENDPOINT, 5000); + return sender.sendGenericPost(my_server, CBP_ENDPOINT, 5000); } else if (service == DTiSPINDELde) {