Cloud Dashboard Chart - 1H view vals don't match Live

I have a weather station connected to Arduino Cloud and have a Dashboard set up with Wind Speed coming in via a 'Val' and a 'Chart' widget. The Live view of the chart tallies with the speed reading I am seeing on the 'Val' widget. However, when I switch to the 1H view of the chart it seems that the values are wrong. This can be seen in the images attached where the downloaded data and the Live view clearly go over 6 at 13:57, but the 1H view of the chart looks to be around 5.

Am I missing something here or has anyone seen this disparity before?

hi,
i have the same problem.
I'm reading pressure and looking for shock waves. the sensor definitely picks some of them up but its not reflected in the graphs, not 1H, not 1Day, and not even when using a custom time frame around the specific event.

after getting the pressure i set 3 float read only THING variables to that value. Then check if the value is above a certain thresh hold. If it is i change a String Thing variable to reflect an alarm and the pressure value itself.

the 3 variables are set up in the advanced chart wiget to show Min, Max and Avg accordingly. the graphs are "Line" types, I'v also tried other types without success.
I've tried updating the variables "On change" and "Periodically" every 10 seconds.

i get pressure alarms via the String variable that don't show up on the graph.

Strangely they are not in the downloaded historic data as well.

I'm at UTC+2 and the data is in UTC so the 7.50 alarm at 6:58 AM is supposed to be at 4:58AM, but its not, there is actually no 7.5 in the whole file.

My code is here:

void loop() {
  ArduinoCloud.update();
  water_pressure = I2CWP.Get_WP(); 
  kapush_wp_A = water_pressure;
  kapush_wp_H = water_pressure;
  kapush_wp_L = water_pressure;
  check_pressure(water_pressure)
}

void check_pressure(float water_pressure){
  if (water_pressure>H_Pressure_Alarm_Val){
    H_Pressure_Alarm_Count++;
    if(pressure_alarm==false){
      H_Pressure_Alarm_time = millis();
      conf = "******Pressure Alarm********\nPressure: " + String(water_pressure) +"\nAlarm at: "+String(H_Pressure_Alarm_Val);
    } 
    pressure_alarm=true;
  }
  else if(pressure_alarm==true){
    H_Pressure_Alarm_time = millis() - H_Pressure_Alarm_time;
    pressure_alarm=false;
    conf = "-----Pressure Alarm Resolved-----\nAlarm Count: "+ String(H_Pressure_Alarm_Count) +"\nAlarm Time: "+ getuptimestring(H_Pressure_Alarm_time) + "\nPressure: " + String(water_pressure) +"\nAlarm at: "+String(H_Pressure_Alarm_Val);
    H_Pressure_Alarm_Count = 0;
  }
  check_pressure_log(water_pressure);
}

and the relevant THING properties are:

String conf;
float kapush_wp_A;
float kapush_wp_H;
float kapush_wp_L;

  ArduinoCloud.addProperty(conf, READWRITE, ON_CHANGE, onConfChange);
  ArduinoCloud.addProperty(kapush_wp_A, READ, 10 * SECONDS, NULL);
  ArduinoCloud.addProperty(kapush_wp_H, READ, 10 * SECONDS, NULL);
  ArduinoCloud.addProperty(kapush_wp_L, READ, 10 * SECONDS, NULL);

Any help will be apreciated
thanks

Hi, sorry I missed this. I think this is a different issue to mine as I am seeing the correct data in the LIVE view and the downloaded historical data. The issue is the 1H and onwards data seems to be aggregated which is not mentioned in any documentation that I can find.

It would seem your code on the device is picking up the momentary high reading and sending the alarm, but you are only logging data every 10 seconds so are probably missing it in the historical data. It looks like you are updating the 'conf' String on change but only reading the individual kapush_wp variables every 10 seconds. I think that's what's happening anyway without digging deeper.

Hello celestialops,

I'm not sure whether this is the answer to your issue:

I can see from the timestamps on the 3rd picture in post #1, that you are saving data roughly every 3 seconds.
So a graph with 1 hours data could have up to 1200 points displayed.

I don't know what screen resolution you are using, but if the graph displayed is less than 1200 pixels wide, then there are going to be some data points that don't get displayed.

Arduino must do some mathematical operation to get the whole of the hours data to display on whatever size your graph is. Maybe that some how removes the point that you can see as a peak on the live display.

Perhaps you could try making the 1 hour graph as wide as possible to reduce the number of data points are not being displayed.

If that 6.099999905 value was averaged with the 4.5 value on the previous line then the result would be close to 5.

Perhaps we need to find out how Arduino process the data to get it to fit on the size of graph that you are displaying.

Hi JohnLincoln, thanks for your post. I've had a reply from Arduino:
"The data in the cloud chart (except for the live ones) are aggregated, so it is very likely that the peak data are not shown. In time based visualizations, differently from LIVE view, data are aggregated and peeks are then leveled, in the advanced chart widget you can change the aggregation type"

For my use case I have been downloading the historic data and then plotting it as a chart in LibreOffice which means I can add my own trend line, but it would be nice to be able to do this in the dashboard. There does seem to be a lack of documentation here and I can't tell what I will be able to do with the advanced chart without signing up to a paid plan.

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