|
@@ -57,7 +57,44 @@ function app_redis()
|
|
|
return $redis;
|
|
|
}
|
|
|
}
|
|
|
+function publishMqtt($topic,$data)
|
|
|
+{
|
|
|
+
|
|
|
+ //$server = '47.114.189.154';
|
|
|
+ $server = '172.16.222.99';
|
|
|
+ $port = 1883;
|
|
|
+ $clientId = 'mqtt_dji_drone_client_0815';
|
|
|
+ $username = 'rl241107';
|
|
|
+ $password = "rlian2024";
|
|
|
+
|
|
|
+ $clean_session = false;
|
|
|
+ $connectionSettings = new ConnectionSettings();
|
|
|
+ $connectionSettings = $connectionSettings
|
|
|
+ ->setUsername($username)
|
|
|
+ ->setPassword($password)
|
|
|
+ ->setKeepAliveInterval(60)
|
|
|
+ // Last Will 设置
|
|
|
+ // ->setLastWillTopic('emqx/test/last-will')
|
|
|
+ // ->setLastWillMessage('client disconnect')
|
|
|
+ // ->setLastWillQualityOfService(1)
|
|
|
+ ;
|
|
|
+
|
|
|
+ $mqtt = new MqttClient($server, $port, $clientId);
|
|
|
|
|
|
+ $mqtt->connect($connectionSettings, $clean_session);
|
|
|
+ echo 'connect OK'.PHP_EOL;
|
|
|
+ echo 'topic:'.$topic.PHP_EOL;
|
|
|
+ echo 'data:'.$data.PHP_EOL;
|
|
|
+ $res=$mqtt->publish(
|
|
|
+ $topic,
|
|
|
+ $data,
|
|
|
+ 1
|
|
|
+ );
|
|
|
+ echo 'publish end'.PHP_EOL;
|
|
|
+ $mqtt->loop(true,true);
|
|
|
+ $mqtt->disconnect();
|
|
|
+ return $res;
|
|
|
+}
|
|
|
while (1) {
|
|
|
$jsonData= app_redis()->rpop("OSD_DRONE_LIST");
|
|
|
if(!$jsonData){
|
|
@@ -87,6 +124,24 @@ while (1) {
|
|
|
try {
|
|
|
$res = Db::connect('uav')->name('uav_route')->insertGetId($save_data);
|
|
|
var_dump($res);
|
|
|
+ if($res){
|
|
|
+ $mqtt_data=[
|
|
|
+ 'devId'=>$redis_data['gateway'],
|
|
|
+ 'osid'=>$redis_data['from'],
|
|
|
+ 'Longitude'=>$data['longitude'],
|
|
|
+ 'Latitude'=>$data['latitude'],
|
|
|
+ 'Height'=>$data['height'],
|
|
|
+ 'time'=>floor($redis_data['ts']/1000),
|
|
|
+ 'SpeedHorizontal'=>$data['horizontal_speed'],
|
|
|
+ 'distance'=>$data['home_distance'],
|
|
|
+ 'SpeedVertical'=>$data['vertical_speed'],
|
|
|
+ 'Direction'=>$data['attitude_head'],
|
|
|
+ ];
|
|
|
+ $topic='DJI/DATA/'.$redis_data['from'];
|
|
|
+ publishMqtt($topic,json_encode($mqtt_data));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
} catch (\Exception $e) {
|
|
|
// 错误日志或重新连接逻辑
|
|
|
echo "错误: " . $e->getMessage().PHP_EOL;
|