ok here is a test program and the output. I think the realtime member is broken.
/*
-- testdeviceID --
To compile this code using RemoteXY library 4.1.4 or later version
download by link http://remotexy.com/en/library/
To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
- for ANDROID 4.16.02 or later version;
- for iOS 1.13.1 or later version;
To interact with the GUI, please refer to the manual:
https://remotexy.com/ru/help/code/interaction/
This source code was automatically generated by the RemoteXY editor and
is an example for the RemoteXY library.
Licensed under the MIT License. See the LICENSE file in the RemoteXY library
root (https://github.com/RemoteXY/RemoteXY-Arduino-library) for full license
details.
*/
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// you can enable debug logging to Serial at 115200
#define REMOTEXY__DEBUGLOG
// RemoteXY select connection mode and include library
#define REMOTEXY_MODE__WIFI_CLOUD
#include <WiFiS3.h>
// RemoteXY connection settings
#define REMOTEXY_WIFI_SSID "yonvaUP"
#define REMOTEXY_WIFI_PASSWORD "blackbear"
#define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "1b68e53c62137bcb6617a9d0afcfe91c"
#include <RemoteXY.h>
// RemoteXY GUI configuration
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = // 39 bytes
{ 254,1,0,0,0,1,0,0,0,28,0,20,0,0,0,0,31,1,106,200,
1,1,2,0,1,49,49,24,24,0,2,31,0,193,42,128,20,20,3 };
// this structure defines all the variables and events of your control interface
struct {
// input variables
uint8_t button_01; // =1 if button pressed, else =0, from 0 to 1
// complex variables
RemoteXYType_RealTimeNet realTime_01; // use .getTimeStamp(), .getTime()
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_01 13
void setup() {
RemoteXY_Init();
pinMode(PIN_BUTTON_01, OUTPUT);
// TODO you setup code
Serial.begin(115200);
}
void loop() {
RemoteXY_Handler();
digitalWrite(PIN_BUTTON_01, (RemoteXY.button_01 == 0) ? LOW : HIGH);
// TODO you loop code
// use the RemoteXY structure for data transfer
// do not call delay(), use instead RemoteXY_delay()
RemoteXYTime t = RemoteXY.realTime_01.getTime(-5 * 60);
if (t.isEmpty()) {
Serial.println("\nisEmpty returned true");
} else {
Serial.println("\nisEmpty is false");
static char buf[40];
sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
t.year,
t.month,
t.day,
t.hour,
t.minute,
t.second);
Serial.println(buf);
}
RemoteXY_delay(1000);
}
and here is the output
[ 0.000] Debug log started
[ 0.003] Add GUI
[ 0.026] onnecting to WiFi: yonvaUP ...
[ 0.101] Add net
[ 0.108] WiFi connected
[ 0.110] IP: 0.0.0.0
[ 0.121] Send RealTime request...
[ 10.134] RealTime request: ERROR
[ 10.147] Connecting to cloud: cloud.remotexy.com 6376 ..
[ 10.452] Cloud server connected
[ 10.455] -> 55 2C 00 11 14 00 31 62 36 38 65 35 33 63 36 32
31 33 37 62 63 62 36 36 31 37 61 39 64 30 61 66
63 66 65 39 31 63 40 00 27 00 4F 54
isEmpty returned true
[ 10.787] <- 55 06 00 11 31 E5
[ 10.794] Cloud server registration successfully
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 21.508] <- 55 06 00 10 F0 25
[ 21.515] -> 55 06 00 10 F0 25
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 32.771] <- 55 06 00 10 F0 25
[ 32.778] -> 55 06 00 10 F0 25
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 43.629] <- 55 06 00 10 F0 25
[ 43.636] -> 55 06 00 10 F0 25
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 54.871] <- 55 06 00 10 F0 25
[ 54.878] -> 55 06 00 10 F0 25
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 65.932] <- 55 06 00 10 F0 25
[ 65.939] -> 55 06 00 10 F0 25
isEmpty returned true
isEmpty returned true
isEmpty returned true
isEmpty returned true
[ 70.159] Send RealTime request...
isEmpty returned true
[ 71.076] UTC time updated: 20406 days 77235394 millis
isEmpty is false
2026-01-03 09:30:03
isEmpty is false
2026-01-03 09:30:04
isEmpty is false
2026-01-03 09:30:05
isEmpty is false
2026-01-03 09:30:06
isEmpty is false
2026-01-03 09:30:07
[ 76.771] <- 55 06 00 10 F0 25
[ 76.778] -> 55 06 00 10 F0 25
isEmpty is false
2026-01-03 09:30:08
isEmpty is false
2026-01-03 09:30:09
It never returned a valid date and time. You can see it get the correct date and time from the net in the output (from Unix start). I think there is a bug in the conversion from unix getEpoch. It is a long long (int64_t) so there must be some problem or overflow in the math. Like a 32-bit overflow or something. If you look in the output it returns the correct unix epoch values for today, but it gets converted into a 2026-01-03 09:30:09 invalid date.
There is definitely a bug on your end.
Help!
Monty