ClearDataService.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace App\Service;
  3. use App\Model\DeviceData;
  4. class ClearDataService extends Service
  5. {
  6. /*
  7. * 压力传感器数据
  8. * [ "obj" => array:10 [
  9. "applicationID" => "2" // 应用ID
  10. "applicationName" => "cloud2" // 应用名称
  11. "data" => "A3sAAA=="
  12. "devEUI" => "24e124126c481114" // 设备EUI
  13. "deviceName" => "设备二" // 设备名称
  14. "fCnt" => 6 // 帧计数
  15. "fPort" => 85 // 应用端口
  16. "rxInfo" => array:1 [
  17. 0 => array:8 [
  18. "altitude" => 0 // 网关海拔
  19. "latitude" => 0 // 网关经度
  20. "longitude" => 0 // 网关纬度
  21. "loRaSNR" => 13.2 // 信噪比
  22. "mac" => "24e124fffef7887c" // 网关ID
  23. "name" => "Local Gateway" // 网关名称
  24. "rssi" => -24 // 信号强度 (dBm)
  25. "time" => "2023-08-03T05:47:47.337673Z"
  26. ]
  27. ]
  28. "time" => "2023-08-03T05:47:47.337673Z"
  29. "txInfo" => array:4 [ // 节点信息
  30. "adr" => true // 设备ADR状态
  31. "codeRate" => "4/5" // 编码率
  32. "dataRate" => array:3 [
  33. "bandwidth" => 125 // 带宽
  34. "modulation" => "LORA" // LORA调制
  35. "spreadFactor" => 7 // 扩频因子
  36. ]
  37. "frequency" => 473300000 // 使用频率
  38. ]
  39. ]
  40. "pressure" => 0
  41. ]
  42. *
  43. *温度传感器数据
  44. *
  45. * ["obj" => array:10 [
  46. "applicationID" => "1"
  47. "applicationName" => "cloud"
  48. "data" => "A2cAAQ=="
  49. "devEUI" => "24e124126d054217"
  50. "deviceName" => "设备一"
  51. "fCnt" => 983
  52. "fPort" => 85
  53. "rxInfo" => array:1 [
  54. 0 => array:8 [
  55. "altitude" => 0
  56. "latitude" => 0
  57. "loRaSNR" => 13.5
  58. "longitude" => 0
  59. "mac" => "24e124fffef7887c"
  60. "name" => "Local Gateway"
  61. "rssi" => -31
  62. "time" => "2023-08-02T09:50:44.880803Z"
  63. ]
  64. ]
  65. "time" => "2023-08-02T09:50:44.880803Z"
  66. "txInfo" => array:4 [
  67. "adr" => true
  68. "codeRate" => "4/5"
  69. "dataRate" => array:3 [
  70. "bandwidth" => 125
  71. "modulation" => "LORA"
  72. "spreadFactor" => 7
  73. ]
  74. "frequency" => 471900000
  75. ]
  76. ]
  77. "temperature" => 25.6
  78. ]
  79. *
  80. * */
  81. public static function saveData($data){
  82. //保存数据
  83. $model = new DeviceData();
  84. $model->data = json_encode($data);//源数据
  85. $model->dev_eui = $data['obj']['devEUI'];
  86. $model->device_name = $data['obj']['deviceName'];
  87. $model->source_ip = self::getIP();
  88. if(isset($data['temperature'])){
  89. $model->data_type = 1;
  90. $model->happening_data = $data['temperature'];
  91. }elseif (isset($data['pressure'])){
  92. $model->data_type = 2;
  93. $model->happening_data = $data['pressure'];
  94. }
  95. $model->save();
  96. }
  97. public static function clearData($data){
  98. $return['is_clear_data'] = 1;
  99. $return['dev_eui'] = $data['obj']['devEUI'] ?? '';
  100. if(isset($data['temperature'])){
  101. $return['value'] = $data['temperature'];
  102. }elseif (isset($data['pressure'])){
  103. $return['value'] = $data['pressure'];
  104. }else{
  105. $return['value'] = 0;
  106. }
  107. return $return;
  108. }
  109. public static function getUrl($data){
  110. //根据业务将数据发送到对应的地址
  111. // 温度传感器数据包含temperature 字段 压力传感器包含pressure 字段
  112. $url = 'http://fyy_api.qingyaokeji.com/api/testData';
  113. $url = '';
  114. return $url;
  115. }
  116. public static function getIP(){
  117. if (getenv('HTTP_CLIENT_IP')) {
  118. $ip = getenv('HTTP_CLIENT_IP');
  119. }
  120. elseif (getenv('HTTP_X_REAL_IP')) {
  121. $ip = getenv('HTTP_X_REAL_IP');
  122. } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
  123. $ip = getenv('HTTP_X_FORWARDED_FOR');
  124. $ips = explode(',', $ip);
  125. $ip = $ips[0];
  126. } elseif (getenv('REMOTE_ADDR')) {
  127. $ip = getenv('REMOTE_ADDR');
  128. } else {
  129. $ip = '0.0.0.0';
  130. }
  131. return $ip;
  132. }
  133. }