post('/api/register', function($req) { $data = $req->getJSONBody(); //echo "Body: ".var_dump($data)."\n"; // Verify a mac address was sent... if(!isset($data['mac_address']) || !preg_match("/^[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]$/i",$data['mac_address'])) { echo $data['mac_address']." does not match a mac address.\n"; http_response_code(400); return; } /* $newDevice = [ 'id' => 'device123', 'mac_address' => $data['mac_address'], 'ip_address' => '192.168.1.2', 'seen_ip_address' => '192.168.1.2', 'firmware_version' => '1.0.1', 'temperature_offset' => 0, 'humidity_offset' => 0, 'last_updated' => date('Y-m-d H:i:s'), 'last_seen' => date('Y-m-d H:i:s') ]; $deviceDb->addDevice($newDevice); */ http_response_code(200); }); // Device reports temperature back on this endpoint. $router->post('/api/report', function($req) { echo 'body:' . var_dump($req->getBody()) . "\n"; DumpHTTPRequestToFile::execute("/tmp/out.txt"); http_response_code(200); }); $router->get('/api/update', function() { if ( $_SERVER['HTTP_USER_AGENT'] == 'ESP8266-http-Update' && isset($_SERVER['HTTP_X_ESP8266_SKETCH_MD5']) ) { $user_agent = $_SERVER['HTTP_USER_AGENT']; $curr_firmware_md5 = $_SERVER['HTTP_X_ESP8266_SKETCH_MD5']; $firmware_file = __DIR__ . '/firmware.bin'; $firmware_md5 = md5_file($firmware_file); echo "USER_AGENT -> ESP8266-http-Update\n"; echo 'X_ESP8266_SKETCH_MD5 -> ' . $_SERVER['HTTP_X_ESP8266_SKETCH_MD5'] . "\n"; echo 'MD5 file hash of ' . $firmware_file . ': ' . $firmware_md5; if ( $curr_firmware_md5 == $firmware_md5 ) { http_response_code(204); } else { $fwdata = file_get_contents($firmware_file); header('Content-Length:' . strlen($fwdata)); echo $fwdata; http_response_code(200); } return; } http_response_code(400); });