Он будет в компактном кейсе. Идея в том, чтобы по мобильным вышкам определять местоположение.
Я изучил документацию для particle и немного разобрался с C/C++. Написал для платы простенькую прошивку, которая периодически посылает на сервер Particle Cloud данные о мобильной вышке (там на самом деле 5 идентификаторов: MCC - код страны, MNC - код оператора, и три индентификатора самой вышки - LAC, CI, BSIC). Данные эти Particle Cloud не хранит, а посылает в виде JSON файла на мой сервер. Сервер умещается на Raspberry Pi 3 дома в углу стола. Кстати, кому интересно как это сделать, потом напишу (спойлер - фича в том, чтобы подружиться с каким-то сервисом dynamic IP, потому что у вас в локальке за роутером конечно нет глобального да еще и фиксированного IP, но dynamic IP это решение. Я использую Dynu.net)
Данные JSON выглядят примерно так
На сервере у меня LAMP стэк:
Ubuntu Server 18.04 + Apache2 + MySQL + PHP.
База данных MySQL создана. В ней просто будут добавляться записи из key: value пар "MCC":"value1", "MNC": "value2".
Проблема сейчас с PHP скриптом, который я тут написал, прочитав первую в своей жизни книжку по PHP/MySQL. Particle Cloud посылает JSON данные на мой php скрипт. Как вы видите ниже, PHP скрипт должен парсировать JSON, потом создавать MySQL query, вынимать нужные key-value пары и вставлять значения в нужные поля моей базы данных.
<?php
$json=$_POST;
$data=json_decode($json, true);
$hostname="localhost";
$username="user";
$password="password";
$db="My_DB";
$dbconnect=mysqli_connect($hostname, $username, $password, $db);
if ($dbconnect->connect_error) {
die("Database connection failed:" . $dbconnect->connect_error);
}
$mcc=$data["MCC"];
$mnc=$data["MNC"];
$lac=$data["LAC"];
$query="INSERT INTO `My_Data_Table` (`mcc`, `mnc`, `lac`)
VALUE ('$mcc', '$mnc', '$lac')";
if (!mysqli_query($dbconnect, $query)){
die('An error occurred.');
}else{
echo "Success!";
}
mysqli_close($dbconnect);
?>
Но пока скрипт ничего не добавляет. Тестирую это из терминала ubuntu server'а. Curl с verbose ответом берет JSON файл с данными и посылает его на PHP скрипт. Curl такой:
curl -v -X POST --header 'Content-Type: application/json; charset=UTF-8' --data my_file.json http://localhost/my_php_file.php
Получаю общую инфу от выполнения curl, мол данные то посылаются, но Apache выдает 500 Internal Server Error (общая ошибка, где она закралась - хз)
Trying 127.0.0.1
Connected to localhost port 80
POST /php-parser.php HTTP/1.1
HOST:localhost
User-Agent: curl/7.58.0
Accept: */*
Content-Type: application/json; charset=UTF-8
Content-Length: 210
*upload completely sent off: 210 of 210 bytes
*HTTP/1.0 assume close after body
HTTP/1.0 500 Internal Server Error
Server: Apache/2.4.29 (Ubuntu)
Content-Length:0
Connection: close
Content-Type: text/html; charset=UTF-8
На stackoverflow в архивах ничего не нашел. Запостил вопрос здесь. Модераторы пост пометили [duplicated], потому что видимо подумали, что у меня в php скрипте путаница с backticks, single or double quotes. Сказали, мол см. сюда. Посмотрел. Применил. Всё та же ошибка.
Пока не знаю, кто поможет. Нужны спецы в PHP/MySQL/Backend. Ищу на upwork. Если у кого идеи и предложения с интересом выслушаю.
Комментарии (0)