Нужна помощь ПОЖАЛУЙСТА !!
Контекст: я использую PHP для получения массива (JSON) из конечной точки API, чтобы затем заполнить график с течением времени полученными значениями (Время, Температура, Влажность)от датчика транспортного средства IoT.
Короче:
Проблема 1) Создайте тело без использования констант и вместо этого используйте вычисленные переменные (если возможно) для функции POST, используя curl
Проблема 2) Разбор возвращаемых значений из массива JSON (Время, Температура, Влажность) для построения графика на графике
Проблема 1) Я нашел способ построения и успешного прохождения тела для получения данных датчикав ответе JSON, но только с использованием констант, а не с использованием вычисляемых переменных, что не является идеальным, поскольку цель здесь состоит в получении данных за последние 24 часа при каждом запуске сценария.
Проблема 2) Я пыталсячтобы заставить работать функции foreach, но я изо всех сил .. должно быть только 24 набора данных, ЕСЛИ я могу использовать вычисленные переменные.В настоящее время существует множество из них, что означает, что мне нужно сделать рекурсивный цикл.
Это вычисленные значения, которые мне нужно использовать, но они не будут работать в классе:
$time = $_SERVER['REQUEST_TIME'];
$startMs = (($time-18000)*1000);
$endMs = ($startMs-86400000);
$stepMs = 3600000;
$groupId = 34141;
$widgetId = 212014918549723;
$fillMissing = "withNull";
$field1 = "humidity";
$field2 = "temperature";
$endPoint = "https://api.samsara.com/v1/sensors/history?access_token=87ieoywNNcjdSbvgmhaprq3ffEPYsa";
class A
{
public $endMs = 1561697999000;
public $fillMissing = 'withNull';
public $groupId = 34141;
public $startMs = 1561352400000;
public $stepMs = 3600000;
public $series = array();
function __construct(){
for ( $i=1; $i-->0;){
array_push($this->series, new B);
array_push($this->series, new C);
}
}
}
class B {
public $field = "ambientTemperature";
public $widgetId = 212014918549723;
}
class C {
public $field = "humidity";
public $widgetId = 212014918549723;
}
$ch = curl_init('https://api.samsara.com/v1/sensors/history?access_token=87ieoywNNcjdSbvgmhaprq3ffEPYsa');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
$json = json_decode($result, true);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo "Values returned from the API:";
print_r($json);
}
Вот мой текущий вывод ...
Array ( [results] => Array ( [0] => Array ( [timeMs] => 1561352400000
[series] => Array ( [0] => 29105 [1] => 66 ) ) [1] => Array ( [timeMs] =>
1561356000000 [series] => Array ( [0] => 29469 [1] => 65 ) ) [2] => Array
( [timeMs] => 1561359600000 [series] => Array ( [0] => 29115 [1] => 65 )
) [3] => Array ( [timeMs] => 1561363200000 [series] => Array ( [0] =>
28912 [1] => 65 ) ) [4] => Array ( [timeMs] => 1561366800000 [series] =>
Array ( [0] => 28740 [1] => 66 ) ) [5] => Array ( [timeMs] =>
1561370400000 [series] => Array ( [0] => 26895 [1] => 66 )......