Paso 18: Recepción en el servidor web
JSON.php es un archivo basado en servidor que el imp cloud llamadas a servicio, pasando los datos de la aplicación del imp que como datos con formato JSON. Su función es decodificar los datos, registro a un archivo de registro (o una base de datos) y guardar en un formato de fácil visualización.
(No se olvide, sólo copia entre el código de comenzar y final del código clave, no las etiquetas ellos mismos)
< el comenzar del código >
<? php
sript para recibir los datos de URL codificado en JSON de la IMP
Cadena JSON se verá similar a:
{"value": {"v":3.2780001163482666,"temp":24.332368850708008}, "objetivo": "300e600a779951c4", "canal": 1}
función jsonToArray ($json) {}
Convierte el objeto JSON en una matriz estándar
$json = substr ($json, strpos ($json,'{') + 1, strlen($json));
$json = substr ($json, 0, strrpos($json,'}'));
$json = preg_replace('/(^|,)([\\s\\t]*)([^:]*) (([\\s\\t]*)):(([\\s\\t]*)) s', ' $1" $3" $4:', trim($json));
volver json_decode ('{'. $json.'} ', true);
}
Obtener los datos en una matriz con que podemos trabajar
$dArray = jsonToArray (file_get_contents ('php://input'));
extraer de cada componente en su propia variable para facilitar la
de la lectura. Nota, esto no es obligatorio ya que es realmente
doblar pero puede hacer un poco más fácil leer código.
$target = $dArray ['target'];
$channel = $dArray ['canal'];
Tenga en cuenta que los datos que define y enviar código Imp es
matriz dentro del par de clave y valor de 'valor'.
$temp = $dArray ['valor'] ['temp'];
$volt = $dArray ['valor'] ['voltio'];
$location = $dArray ['valor'] ['location'];
crear un sello de fecha/hora
Ver http://php.net/manual/en/timezones.php de zonas horarias soportadas
date_default_timezone_set("Australia/Adelaide");
$dateTime = date ('Y-m-d 2822'); 'Y-m-d 2822'
Vamos a crear un archivo de registro de formato CSV. Tenga en cuenta, dependiendo de la frecuencia de actualización, este archivo puede convertirse en
muy grande!!! También podría cambiar esto para registrar los datos a un servidor mySQL en lugar de otro.
$fa = fopen ("data.csv", 'a');
Si (flock ($fa, Operation))
{
fwrite ($fa, $target. "," . $channel. "," . $dateTime. "," . number_format ($temp, 2). ",". number_format ($volt, 2). "\n");
fflush($FA);
rebaño ($fa, Operation);
}
Crear el archivo que se puede leer para actualizaciones en directo en un explorador web.
$fw = fopen ("latestImpData.txt", 'w');
Si (rebaño ($fw, Operation))
{
fwrite ($fw, $target. "|" . $channel. "|" . $dateTime. "|" . number_format ($temp, 1). "|". number_format ($volt, 2). "|" . $location);
fwrite ($fw, file_get_contents ('php://input'));
fflush($FW);
rebaño ($fw, Operation);
}
? >
< final código >