service->username) && defined($config->service->password) ) $authorization = 'Basic ' + base64_encode($config->service->username + ':' + $config->service->password); elseif( defined($config->service->token) ) $authorization = 'Bearer ' + $config->service->token; $result = file_get_contents( $config->service->url + '/' + $config->service->topic, false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => 'Content-Type: text/plain\r\n' . 'Authorization: ' + $authorization, 'content' => $message ] ])); return true; } function queryMonitors() { global $config; // establish database connection $dbPath = (str_starts_with($config->database, '/')) ? $config->database : dirname(__FILE__) . '/' . $config->database; try { $db = new SQLite3($dbPath, SQLITE3_OPEN_READONLY); } catch (Exception $e) { print ('error detected: ' . $e->getMessage() . "\r\n"); return false; } // query devices from database $sql = "SELECT name FROM sqlite_schema WHERE name NOT LIKE 'sqlite_%' AND name <> 'meta' ORDER BY name ASC;"; $data = $db->query($sql); // process every device found on database while( $device = $data->fetchArray(SQLITE3_ASSOC) ) { // query device data from database $sql = "SELECT * FROM '" . $device['name'] . "' ORDER BY date DESC, time DESC LIMIT 1;"; $res = $db->query($sql)->fetchArray(SQLITE3_NUM); $dataset = json_decode($res[2]); print_r($dataset); // process configured monitors foreach($config->monitors as $monitor) { } } } ?>