tongshanglei 11 hours ago
parent
commit
adb15bbf47
1 changed files with 55 additions and 0 deletions
  1. 55 0
      task_script/OSD_DRONE_CLIENT.php

+ 55 - 0
task_script/OSD_DRONE_CLIENT.php

@@ -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;