Based on my own observations, “Last Updated” is the last time (to the nearest minute) when a datastream value changed on the Blynk server. This is the same as the “Last Reported At” value in the device list view, although I’m not sure why they have different names.
If you have a subscription that gives you access to the “Datastreams” tab in the device view then you’ll be able to see an “Updated At” column which shows the time to the last second when each datastream was updated. The “Last Updated” and “Last Reported At” values reflect the time when the most recent “Updated At” value for any datastream.
Lets say that you have a device that is online all the time (i.e it doesn’t utilise Deep Sleep) and takes a sensor reading every 10 minutes and uploads the result to Blynk. The “Last Updated” and “Last Reported At” values will show the last time that the device sent a new reading to Blynk, and if everything is working as expected then that should never be more than 10 minutes ago.
It’s worth noting that you need to refresh your browser for the “Last Updated” and “Last Reported At” values to be refreshed.
All of this is entirely separate to the On/Offline status of the device.
For example, I have a device that shows this:
The device is online, but the last time any of the datastreams was updated was over a month ago. This is 100% correct, as this device only reports when an exceptional situation occurs, and the last time that happened was on 6th February.
I assume from the way that you’ve phrased your question that your device is sending updated datastream values every few seconds, and that you assume that when the device stops sending data updates it also goes offline at exactly the same time. Of course that isn’t necessarily the dase. Depending on how your code is written, the device may be unable to read data from your sensor, but is still able to execute Blynk.run() and therefore keep its connection alive and remain online.
An example of this is the DHT.ino example in the Blynk library, where this function is called every second using a timer…
// This function sends Arduino's up time every second to Virtual Pin (5)
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// You can send any value at any time.
// Please don't send more that 10 values per second.
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}
As you can see, if the humidity and temperature readings aren’t valid numbers (NAN) then a “Failed to read…” message will appear in the serial monitor, but no data will be uploaded to Blynk.
The device could stay online indefinitely, even though the DHT sensor has stopped working and no readings are being sent.
The delay between the device actually going offline and it being recognised as being MIA by the Blynk server will depend on the Heartbeat Interval that you have defined for your device. The longer the interval, the longer it will take for the Blynk server to realise that the device hasn’t checked-in recently.
If you’re having issues with data not being sent to Blynk and the device going offline regularly then you may have issues with your code. Maybe you should post your sketch if this is the case.
Pete.