print serial json

hello,
ik krijg dit in mijn seriële monitor. niet echt mooi .
graag had ik ieder info in een apparte regel geplaatst, hoe pak ik dit aan????

16:25:12.587 -> {"smr_version":50,"meter_model":"Fluvius 253770234_A","wifi_ssid":"telenet-A9B56","wifi_strength":100,"total_power_import_t1_kwh":271.658,"total_power_import_t2_kwh":401.108,"total_power_export_t1_kwh":1232.225,"total_power_export_t2_kwh":453.123,"active_power_w":115,"active_power_l1_w":null,"active_power_l2_w":null,"active_power_l3_w":null,"total_gas_m3":618.971,"gas_timestamp":210216162500}

in mijn browser ziet het er zo uit en dit wil ik natuurlijk ook zien op de seriële monitor

smr_version 50
meter_model "Fluvius 253770234_A"
wifi_ssid "telenet-A9B56"
wifi_strength 100
total_power_import_t1_kwh 271.629
total_power_import_t2_kwh 401.108
total_power_export_t1_kwh 1232.225
total_power_export_t2_kwh 453.123
active_power_w 208
active_power_l1_w null
active_power_l2_w null
active_power_l3_w null
total_gas_m3 618.943
gas_timestamp 210216161004

mijn code is::::
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>

/* Set these to your desired credentials. /
const char ssid = "tel
56"; //ENTER YOUR WIFI SETTINGS
const char *password = "aKQ
****y";

//Web/Server address to read/write from
const char host = "http://1******7/api/v1/data"; //https://circuits4you.com website or IP address of server

//=======================================================================
// Power on setup
//=======================================================================

void setup() {
delay(1000);
Serial.begin(115200);
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA); //This line hides the viewing of ESP as wifi hotspot

WiFi.begin(ssid, password); //Connect to your WiFi router
Serial.println("");

Serial.print("Connecting");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

//If connection successful show IP address in serial monitor
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
}

//=======================================================================
// Main Program Loop
//=======================================================================
void loop() {
HTTPClient http; //Declare object of class HTTPClient

String ADCData, station, getData, Link;
int adcvalue=analogRead(A0); //Read Analog value of LDR
ADCData = String(adcvalue); //String to interger conversion
station = "B";

//GET Data
getData = "?status=" + ADCData + "&station=" + station ; //Note "?" added at front
Link = "http://1********7/api/v1/data" + getData;

http.begin(Link); //Specify request destination

int httpCode = http.GET(); //Send the request
String payload = http.getString(); //Get the response payload

Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload

http.end(); //Close connection

delay(30000); //GET Data at every 30 seconds
}

kan iemand mij aub helpen
dank u

Hoi.

De informatie die je ziet, is een hele basale website.
Daarom zie je het in je browser zoals het bedoeld is.
Maar in serial monitor zie je alles, dus ook stuurtekens en zo voorts.
Het eerste dat je ziet is trouwens de timestamp, die word door de serial monitor zelf toegevoegd.
Wat jouw sketch doet, is de website openen, en wat 'ie binnenkrijgt dumpen op de seriële poort.
Het goede nieuw is dat de informatie die je wil hebben er allemaal in zit.
Maar het minder goede nieuws is dat je nu de betreffende informatie er uit moet zien te filteren, en die door moet sturen.
En je moet ook nog wat extra dingen doen, zoals een nieuwe regel beginnen op het juiste moment, en tekst laten springen naar de volgende tab (eventueel want dat kan nog wel een dingetje worden).

Je data zit in 1 "grote" string een aaneengeregen (letterlijk een string) hoeveelheid tekens.
Je kunt zulke strings op allerlei manieren bewerken (klik !)
Hierdoor kun je de hele string ontleden en er bijvoorbeeld andere strings mee bouwen of zo.
length() en charAt() zijn dan al de eerste stukjes bruikbaar gereedschap lijkt me.
Dus het lijkt me een goed idee dat eens te bestuderen.

Ik heb wel wat tips waar je wat mee moet kunnen.
Namelijk dat de betreffende labels allemaal tussen "" aanhalingstekens staan.
En waardes kunnen ook tussen aanhalingstekens staan als het tekst is, of het staat er gewoon als een getal.
Maar de betreffende waardes worden allemaal vooraf gegaan door een : dubbele punt.
Daardoor kun je met die dubbele punt zien dat je naar het volgende tab punt moet gaan.
Na de waarde volgt een altijd een komma, dus dat is een teken dat je naar de volgende regel moet gaan.
Dankzij deze 2 gegevens kun je dus al een eind richting de format komen die je wil.
Dan moet je nog de ongewenste zaken gaan wissen, dat zijn de komma's, dubbele punten en die aanhalingstekens.
Dus de zaken die je kunt gebruiken voor het sturen wil je uiteindelijk niet meesturen.
Er is nog meer.
Het begin is altijd een {, en het eind een }, dus ook dat kun je gebruiken, bijvoorbeeld om te zien of je wel aan het begin begint.
Er zijn ook lege waardes, die heten dan null.
Dat kun je zo laten, maar je kunt er ook --- of zo van maken.
En de datum is ook niet heel erg mensvriendelijk.

210216161004 is ietsje lastiger te lezen als 2021-02-16, 16:10:04
Omdat die tijd in een vast format komt, kun je 'm dus ook ombouwen naar vriendelijker waardes.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.