SysBee v1

Dependencies:   C027_Support mbed

Fork of App_Pese_Ruche_SYSBEE by Sysbee

Revision:
8:3af661bcfcec
Parent:
7:95ddf8fa6260
Child:
9:4c09643fbfb9
--- a/main.cpp	Tue Sep 11 13:20:01 2018 +0000
+++ b/main.cpp	Thu Sep 13 08:54:00 2018 +0000
@@ -35,6 +35,8 @@
 
 #define WEEK_COUNT        ((int)(WEEK_INTERVAL / AVERAGE_INTERVAL))
 
+#define SEUIL   0.5 
+
 //#define SENSOR_OFFSET       6.1f
 //#define SENSOR_FACTOR       39.0f
 #define SENSOR_OFFSET       9.4f
@@ -61,6 +63,7 @@
 char buffer[1024];
 
 float average_values[AVERAGE_COUNT] = {0.0f};
+float week_values[WEEK_COUNT] = {0.0f};
 //float diff_values[AVERAGE_COUNT] = {0.0f};
 float last_average = 0;
 float week_last_average = 0;
@@ -174,9 +177,26 @@
     for ( i = 1; i < size_tab; i++)
         differential += (tab[i] - tab[i-1])/time_diff;
         
-    return differential/size_tab;
-}    
- 
+    return differential/(size_tab -1);
+}
+/*    
+//return the real daily average
+float true_average(float tab[], float differential)
+{
+    int i;
+    float dpoint, avg = 0, error = 0;
+    for(i = 1; i < size_tab; i++)
+    {
+        dpoint = (tab[i] - tab[i-1])/time_diff;
+        if ((differential + SEUIL > dpoint) && (differential - SEUIL < dpoint))
+            avg += tab[i];
+        else 
+            error ++;
+    }
+    avg = avg/(AVERAGE_COUNT - (error +1));
+    return avg;
+}
+ */
 
 void init_modem(void)
 {
@@ -195,7 +215,7 @@
         pc.printf("MODEM net_status failed...\n\r");
         pc.printf("\x1b[0m");
         wait(1);
-    }
+    } 
     modem.dumpDevStatus(&devStatus);
 }
         
@@ -222,6 +242,7 @@
             
         case HIVE_STATE_MEASURE:
             average_values[average_ticks_passed] = get_averaged_weight();
+            week_values[week_ticks_passed] = get_averaged_weight();
             pc.printf("Weight is %02.2fkg\n\r", average_values[average_ticks_passed]);
             // if we are of the first measure use the one at the end of the list (last one)
             current_measure_diff = average_ticks_passed == 0 ? average_values[average_ticks_passed] - average_values[AVERAGE_COUNT - 1] : average_values[average_ticks_passed] - average_values[average_ticks_passed - 1];
@@ -244,11 +265,12 @@
                 current_average += average_values[i];
             }
             current_average /= average_ticks_passed;
+            dif_av = get_differential_average(average_values);
+            current_average = average_values[0] + dif_av * (average_ticks_passed -1); 
             current_average_diff = current_average - last_average;
             last_average = current_average;
             
-            /*dif_av = get_differential_average(average_values)
-            ((dif_av*AVERAGE_COUNT)+average_values[AVERAGE_COUNT]) - (average_values[AVERAGE_COUNT]);*/
+             
             if (current_average_diff > DIFF_THRESHOLD)
             {
                 sprintf(buffer, "1  There is more and more honey in the hive ! %0.1fkg of change in %d hours !", current_average_diff, AVERAGE_INTERVAL / 60);
@@ -278,6 +300,8 @@
             }
             week_average /= week_ticks_passed;
             week_average_diff = week_average - week_last_average;
+            dif_av = get_differential_average(average_values);
+            current_average = week_values[0] + dif_av * (week_ticks_passed -1); 
             week_last_average = week_average;
             if (week_average_diff > DIFF_THRESHOLD)
             {