/**
* @param array $device
* @param NAWSApiClient $client
* @return array $report : array with device or module ids as keys, and their data of the month as  values
* @brief retrieve month data for a device and its modules
*/
function getMonthReport($device, $client)
{
    $report = array();
    //step between two measurements
    $scale = '1month';
    //type of measures wanted
    $type = "Temperature,CO2,Humidity,Pressure,Noise,max_temp,date_max_temp,min_temp,date_min_temp,max_hum,date_max_hum,min_hum,date_min_hum,max_pressure,date_max_pressure,min_pressure,date_min_pressure,max_noise,date_max_noise,min_noise,date_min_noise,max_co2,date_max_co2,min_co2,date_min_co2";
    // main device
    try {
        $measure = $client->getMeasure($device['_id'], NULL, $scale, $type, NULL, "last", NULL, FALSE, FALSE);
        $measure = addMeasureKeys($measure, $type);
        $report[$device['_id']] = $measure;
    } catch (Netatmo\Exceptions\NAClientException $ex) {
        $report[$device['_id']] = "Error retrieving measure for " . $device['_id'] . ": " . $ex->getMessage();
    }
    foreach ($device['modules'] as $module) {
        switch ($module['type']) {
            //Outdoor
            case "NAModule1":
                $type = "temperature,humidity";
                break;
                //Wind Sensor
            //Wind Sensor
            case "NAModule2":
                $type = "WindStrength,WindAngle,GustStrength,GustAngle,date_max_gust";
                break;
                //Rain Gauge
            //Rain Gauge
            case "NAModule3":
                $type = "sum_rain";
                break;
                // Indoor
            // Indoor
            case "NAModule4":
                $type = "temperature,Co2,humidity,noise,pressure";
                break;
        }
        try {
            $measure = $client->getMeasure($device['_id'], $module['_id'], $scale, $type, NULL, "last", NULL, FALSE, FALSE);
            $measure = addMeasureKeys($measure, $type);
            $report[$module['_id']] = $measure;
        } catch (Netatmo\Exceptions\NAClientException $ex) {
            $report[$module['_id']] = "Error retrieving measure for " . $module['_id'] . ": " . $ex->getMessage();
        }
    }
    return $report;
}
         if (isset($device['read_only']) && $device['read_only']) {
             $friends[] = $device;
         } else {
             $users[] = $device;
         }
     }
 }
 //print first User's device Then friends, then favorite
 printDevices($users, "User's weather stations");
 printDevices($friends, "User's friends weather stations");
 printDevices($fav, "User's favorite weather stations");
 // now get some daily measurements for the last 30 days
 $type = "temperature,Co2,humidity,noise,pressure";
 //first for the main device
 try {
     $measure = $client->getMeasure($device['_id'], NULL, "1day", $type, time() - 24 * 3600 * 30, time(), 30, FALSE, FALSE);
     printMeasure($measure, $type, $tz, $device['_id'] . "'s daily measurements of the last 30 days");
 } catch (NAClientException $ex) {
     handleError("An error occured while retrieving main device's daily measurements: " . $ex->getMessage() . "\n");
 }
 //Then for its modules
 foreach ($device['modules'] as $module) {
     //requested data type depends on the module's type
     switch ($module['type']) {
         case "NAModule3":
             $type = "sum_rain";
             break;
         case "NAModule2":
             $type = "WindStrength,WindAngle,GustStrength,GustAngle,date_max_gust";
             break;
         case "NAModule1":