Hi, I'm trying to display in a matrix led the temperature from Open Weather.
I can display the integer part but not the decimals, so I get "9" no "9.8"
How may get the "9.8" in an string ?
temp1 = int(my_obj["main"]["temp"]);
tempa = (String) temp1;
String sub_S = tempa ;
P.print(sub_S); // Display in matrix
Way too little context to be sure, but this looks like a convoluted way of saying
P.print(my_obj["main"]["temp"].as<String>());
I tried
tempa =(my_obj["main"]["temp"].as<String>());
and get this error 'class JSONVar' has no member named 'as'
and this:
P.print(my_obj["main"]["temp"].as<String>());
error : 'class JSONVar' has no member named 'as'
Like I said, insufficient context. Please post your full code and links to the libraries you're using, especially the one you're using for JSON.
Thanks for your answer, the idea is a clock and weather to display in a led matrix. is a esp8266
// CLOCK AND WEATHER
//
//
//
//Weather
#include <ESP8266HTTPClient.h>
#include <Arduino_JSON.h>
String my_Api_Key = "e1e11b7969e4ea11abad3e947ba*****";
String my_city = "Buenos Aires"; //specify your city
String my_country_code = "AR"; //specify your country code
unsigned long last_time = 0;
unsigned long timer_delay = 30000;
String json_array;
WiFiClient wifiClient;
String tempa = "9999" ;
int temp1 = 0;
// Weather ^^^^^^^^^^^^^^
// MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX
//
#include <ESP8266WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
const char *ssid = "TP-*****";
const char *password = "no*****";
// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");
String time1 = "00000000";
int timesec = 0 ;
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN 14
#define DATA_PIN 13
#define CS_PIN 12
// Hardware SPI connection
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
void setup(void)
{
WiFi.begin(ssid, password);
// Initialize a NTPClient to get time
timeClient.begin();
timeClient.setTimeOffset(-10800);
Serial.begin(57600);
pinMode(16, OUTPUT);
digitalWrite(16, HIGH);
P.begin();
P.print("Hello!");
}
void loop(void)
{
// Wheather ============================================
unsigned long timert = (millis() - last_time);
if ( timert > timer_delay) {
if(WiFi.status()== WL_CONNECTED){
String server = "http://api.openweathermap.org/data/2.5/weather?q=" + my_city + "," + my_country_code + "&APPID=" + my_Api_Key + "&units=metric";
digitalWrite(16, LOW);
json_array = GET_Request(server.c_str());
Serial.println(json_array);
JSONVar my_obj = JSON.parse(json_array);
if (JSON.typeof(my_obj) == "undefined") {
Serial.println("Parsing input failed!");
return;
}
Serial.print("JSON object = ");
Serial.println(my_obj);
Serial.print("Temperature: ");
Serial.println(my_obj["main"]["temp"]);
Serial.print("Pressure: ");
Serial.println(my_obj["main"]["pressure"]);
Serial.print("Humidity: ");
Serial.println(my_obj["main"]["humidity"]);
Serial.print("Wind Speed: ");
Serial.println(my_obj["wind"]["speed"]);
// tempa = int(my_obj["main"]["temp"]);
tempa = ( my_obj ["main"]["temp"]);
}
else {
Serial.println("WiFi Disconnected");
}
last_time = millis();
}
// Clock =====================================
timeClient.update(); // actualizo hora NTP
time1 = timeClient.getFormattedTime(); // assign current time to var
timesec = timeClient.getSeconds(); // assign seconds
unsigned char m1,m2,m3,m4,m5,m6,m7,m8;
int currentminu = timeClient.getMinutes();
int currentsec = timeClient.getSeconds();
// SECONDS SAND CLOCK !
if (currentsec == 0 ) { m1 = 0; m2 = 0; m3 = 0; m4 = 0; m5 = 0;m6 = 0;m7 = 0;m8 = 0;} // zero
if (currentsec == 1 ) { m1 = 128; } // second 1
if (currentsec == 2 ) { m1 = 128; m2 = 128; } // second 2
if (currentsec == 3 ) { m1 = 128; m2 = 128; m3 = 128; } // second 3
if (currentsec == 4 ) { m1 = 128; m2 = 128; m3 = 128; m4 = 128; m5 = 0; m6 = 0; m7 = 0; m8 = 0;} // second 4
if (currentsec == 5 ) { m1 = 128; m2 = 128; m3 = 128; m4 = 128; m5 = 128; m6 = 0; m7 = 0; m8 = 0;} // second 5
if (currentsec == 6 ) { m1 = 128; m2 = 128; m3 = 128; m4 = 128; m5 = 128; m6 = 128; m7 = 0; m8 = 0;} // second 6
if (currentsec == 7 ) { m1 = 128; m2 = 128; m3 = 128; m4 = 128; m5 = 128; m6 = 128; m7 = 128; m8 = 0;} // second 7
if (currentsec == 8 ) { m1 = 128; m2 = 128; m3 = 128; m4 = 128; m5 = 128; m6 = 128; m7 = 128; m8 = 128;} // second 8
if (currentsec == 9 ) { m1 = 192; m2 = 128; m3 = 128; m4 = 128; m5 = 128; m6 = 128; m7 = 128; m8 = 128;} // second 9
if (currentsec == 10 ) { m1 = 192; m2 = 192; m3 = 128; m4 = 128; m5 = 128; m6 = 128; m7 = 128; m8 = 128;} // second 10
if (currentsec == 11 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 128; m5 = 128; m6 = 128; m7 = 128; m8 = 128;} // second 11
if (currentsec == 12 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 192; m5 = 128; m6 = 128; m7 = 128; m8 = 128;} // second 12
if (currentsec == 13 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 192; m5 = 192; m6 = 128; m7 = 128; m8 = 128;} // second 12
if (currentsec == 14 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 192; m5 = 192; m6 = 192; m7 = 128; m8 = 128;} // second
if (currentsec == 15 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 192; m5 = 192; m6 = 192; m7 = 192; m8 = 128;} // second
if (currentsec == 16 ) { m1 = 192; m2 = 192; m3 = 192; m4 = 192; m5 = 192; m6 = 192; m7 = 192; m8 = 192;} // second
if (currentsec == 17 ) { m1 = 224; m2 = 192; m3 = 192; m4 = 192; m5 = 192; m6 = 192; m7 = 192; m8 = 192;} //
if (currentsec == 18 ) { m1 = 224; m2 = 224; m3 = 192; m4 = 192; m5 = 192; m6 = 192; m7 = 192; m8 = 192;} //
if (currentsec == 19 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 192; m5 = 192; m6 = 192; m7 = 192; m8 = 192;} //
if (currentsec == 20 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 224; m5 = 192; m6 = 192; m7 = 192; m8 = 192;} //
if (currentsec == 21 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 224; m5 = 224; m6 = 192; m7 = 192; m8 = 192;} //
if (currentsec == 22 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 224; m5 = 224; m6 = 224; m7 = 192; m8 = 192;} //
if (currentsec == 23 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 224; m5 = 224; m6 = 224; m7 = 224; m8 = 192;} //
if (currentsec == 24 ) { m1 = 224; m2 = 224; m3 = 224; m4 = 224; m5 = 224; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 25 ) { m1 = 240; m2 = 224; m3 = 224; m4 = 224; m5 = 224; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 26 ) { m1 = 240; m2 = 240; m3 = 224; m4 = 224; m5 = 224; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 27 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 224; m5 = 224; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 28 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 240; m5 = 224; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 29 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 240; m5 = 240; m6 = 224; m7 = 224; m8 = 224;} //
if (currentsec == 30 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 240; m5 = 240; m6 = 240; m7 = 224; m8 = 224;} //
if (currentsec == 31 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 240; m5 = 240; m6 = 240; m7 = 240; m8 = 224;} //
if (currentsec == 32 ) { m1 = 240; m2 = 240; m3 = 240; m4 = 240; m5 = 240; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 33 ) { m1 = 248; m2 = 240; m3 = 240; m4 = 240; m5 = 240; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 34 ) { m1 = 248; m2 = 248; m3 = 240; m4 = 240; m5 = 240; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 35 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 240; m5 = 240; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 36 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 248; m5 = 240; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 37 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 248; m5 = 248; m6 = 240; m7 = 240; m8 = 240;} //
if (currentsec == 38 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 248; m5 = 248; m6 = 248; m7 = 240; m8 = 240;} //
if (currentsec == 39 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 248; m5 = 248; m6 = 248; m7 = 248; m8 = 240;} //
if (currentsec == 40 ) { m1 = 248; m2 = 248; m3 = 248; m4 = 248; m5 = 248; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 41 ) { m1 = 252; m2 = 248; m3 = 248; m4 = 248; m5 = 248; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 42 ) { m1 = 252; m2 = 252; m3 = 248; m4 = 248; m5 = 248; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 43 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 248; m5 = 248; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 44 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 252; m5 = 248; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 45 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 252; m5 = 252; m6 = 248; m7 = 248; m8 = 248;} //
if (currentsec == 46 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 252; m5 = 252; m6 = 252; m7 = 248; m8 = 248;} //
if (currentsec == 47 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 252; m5 = 252; m6 = 252; m7 = 252; m8 = 248;} //
if (currentsec == 48 ) { m1 = 252; m2 = 252; m3 = 252; m4 = 252; m5 = 252; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 49 ) { m1 = 254; m2 = 252; m3 = 252; m4 = 252; m5 = 252; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 50 ) { m1 = 254; m2 = 254; m3 = 252; m4 = 252; m5 = 252; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 51 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 252; m5 = 252; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 52 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 254; m5 = 252; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 53 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 254; m5 = 254; m6 = 252; m7 = 252; m8 = 252;} //
if (currentsec == 54 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 254; m5 = 254; m6 = 254; m7 = 252; m8 = 252;} //
if (currentsec == 55 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 254; m5 = 254; m6 = 254; m7 = 254; m8 = 252;} //
if (currentsec == 56 ) { m1 = 254; m2 = 254; m3 = 254; m4 = 254; m5 = 254; m6 = 254; m7 = 254; m8 = 254;} //
if (currentsec == 57 ) { m1 = 255; m2 = 254; m3 = 254; m4 = 254; m5 = 254; m6 = 254; m7 = 254; m8 = 254;} //
if (currentsec == 58 ) { m1 = 129; m2 = 195; m3 = 255; m4 = 255; m5 = 255; m6 = 255; m7 = 195; m8 = 129;} //
if (currentsec == 59 ) { m1 = 129; m2 = 195; m3 = 231; m4 = 255; m5 = 255; m6 = 231; m7 = 195; m8 = 129;} //
// DYSPLAY PRINTING ===========================================================================================
const uint8_t dospun[] = {1, 36}; // 2 points spacer
P.addChar('$', dospun);
const uint8_t secsec[] = {8,m1,m2,m3,m4,m5,m6,m7,m8}; // seconds bar
P.addChar('&', secsec);
// String sub_S = time1.substring(0,2) +"$"+ time1.substring(3,5)+"&" ; // shorten formated time to delet seconds %%$$##&&(()%%#$#"""#$%&
String sub_S = tempa ;
P.print(sub_S); // Print in dysplay
// clock end ^^^^^^^^^^^^^^^^^==========
// Weather part 2 ======================
}
String GET_Request(const char* server) {
HTTPClient http;
http.begin(wifiClient,server);
int httpResponseCode = http.GET();
String payload = "{}";
if (httpResponseCode>0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
payload = http.getString();
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end();
return payload;
// Wheather ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END
}
You could try P.print(static_cast<const char *>(my_obj["main"]["temp"]));
no errors, but either output
If I use
int(my_obj["main"]["temp"]);
works, but only the integer I lost decimals...
Solved !!! I think it works !!!
tempa = JSON.stringify(my_obj["main"]["temp"]);
system
Closed
December 15, 2022, 9:51pm
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.