Stap 18: Ontvangst op de webserver
JSON.php is een bestand van de server gebaseerd dat het GMB cloud serviceoproepen, doorgeven van de gegevens van uw kandidaatstelling van de imp ernaar als JSON opgemaakte gegevens. Zijn functie is het decoderen van de gegevens, het loggen naar een logboekbestand (of een database) en opslaan in een indeling voor eenvoudige weergave.
(Vergeet niet, alleen kopiëren tussen de code begin en einde van code tags, niet de codes zelf)
< code beginnen >
<? php
sript de URL gecodeerd JSON-gegevens kunnen ontvangen van het GMB
JSON-string zal uitzien:
{"waarde": {"volt":3.2780001163482666,"temp":24.332368850708008}, "doel": "300e600a779951c4", "channel": 1}
functie jsonToArray ($json) {}
JSON-object converteert naar een standaard matrix
$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));
keren json_decode ('{'. $json.'} ', waar);
}
Een matrix die we met werken kunnen de gegevens ophalen
$dArray = jsonToArray (file_get_contents ('php://input'));
Haal elk onderdeel in zijn eigen variabele voor gebruiksgemak
lezing. Let op, dit is niet verplicht als het is echt
verdubbelen maar code een beetje makkelijker te lezen kunt maken.
$target = $dArray ['target'];
$channel = $dArray ['kanaal'];
Merk op dat de gegevens die u definieert en stuur uw Imp-code
een matrix binnen de 'waarde' sleutel/waarde-paar.
$temp = $dArray ['waarde'] ['temp'];
$volt = $dArray ['waarde'] ['volt'];
$location = $dArray ['waarde'] ['locatie'];
een datum/tijd-stempel maken
Zie http://php.net/manual/en/timezones.php voor ondersteunde timezones
date_default_timezone_set("Australia/Adelaide");
$dateTime = datum ('Y-m-d H:i:s'); 'Y-m-d H:i:s'
Maken we een hulpprogramma voor het logboek van de CSV-bestandsindeling. Opmerking, afhankelijk van de updatefrequentie, dat dit bestand kan worden
zeer grote!!! U kunt ook dit vastleggen van de gegevens in een MySqlServer in plaats daarvan.
$fa = fopen ("data.csv", "a");
Als (flock ($fa, LOCK_EX))
{
fwrite ($fa, $target. "," . $channel. "," . $dateTime. "," . number_format ($temp, 2). ",". number_format ($volt, 2). "\n");
fflush($FA);
kudde ($fa, LOCK_UN);
}
Maak het bestand dat kan worden gelezen voor live updates in een webbrowser.
$fw = fopen ("latestImpData.txt", 'w');
Als (flock ($fw, LOCK_EX))
{
fwrite ($fw, $target. "|" . $channel. "|" . $dateTime. "|" . number_format ($temp, 1). "|". number_format ($volt, 2). "|" . $location);
fwrite ($fw, file_get_contents ('php://input'));
fflush($FW);
kudde ($fw, LOCK_UN);
}
? >
< code einde >