国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Iot物聯網-插件版

499¥
類型 應用插件
版本 1.0.6
版本更新時間 6天前
大小 123.54 KB
開發(fā)商
iot物聯網平臺
評分

本系統為iot物聯網的插件版,功能和文檔與獨立應用版有些地方不一致,以本文檔內容為準

詳細介紹

本系統是基于webman開發(fā)的一套物聯網平臺,可以實現物聯網設備的聯網上線、數據采集、命令下發(fā)、被動回復、實時通訊等功能,支持TCP協議、Websocket協議(ws和wss)和MQTT協議,本系統提供的是TCP協議透傳,用戶需根據實際情況將設備協議轉為TCP協議后接入本系統,一般可使用DTU設備或IO設備,這些設備可以將硬件的各種協議統一轉為TCP協議,如電表、儀表、傳感器、地磅、IO設備、開關量、模擬量、掃碼槍、語音播報、身份證讀卡器、各類燈具、門禁開關等都支持,真正實現萬物互聯。

安裝步驟

1、安裝數據庫組件:(參考webman文檔)

composer require -W illuminate/database

2、安裝redis組件:(需安裝redis擴展,參考webman文檔)

composer require -W illuminate/redis illuminate/events

3、安裝gateway-worker插件(安裝完成后,需將config/plugin/gateway-worker/app.php中的enable改為false)

composer require webman/gateway-worker

4、安裝http客戶端插件

composer require -W workerman/http-client

5、安裝redis隊列

composer require webman/redis-queue

以上步驟完成之后,再去webman-admin的插件管理里面安裝本插件,如果已經安裝過本插件,那么直接進行下述升級步驟。
注意:php版本要求7.X
插件安裝完成之后,進行以下升級步驟,升級文檔和所需文件在“/app/plugin/iotplug/升級步驟和相關文件”目錄下。
升級步驟:

升級前注意備份

1、將plugin\iotplug\升級步驟和相關文件\redis-queue目錄下的3個文件復制到app\queue\redis目錄下。
2、新建wa_device_logs表:

CREATE TABLE `wa_device_logs` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `device_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '設備id',
  `type` int(11) NOT NULL DEFAULT '0' COMMENT '設備類型',
  `topic` varchar(255) DEFAULT NULL COMMENT '主題',
  `vtype` int(11) NOT NULL DEFAULT '0' COMMENT '0:ASCII類型1:HEX類型',
  `val` longtext NOT NULL COMMENT '值',
  `year` varchar(10) NOT NULL COMMENT '年',
  `month` varchar(10) NOT NULL COMMENT '月',
  `day` varchar(10) NOT NULL COMMENT '日',
  `date` date NOT NULL COMMENT '日期',
  `addtime` datetime NOT NULL COMMENT '時間',
  `del` int(11) NOT NULL DEFAULT '0' COMMENT '0未刪除1已刪除',
  `del_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '刪除人id',
  `del_time` datetime DEFAULT NULL COMMENT '刪除時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='設備數據日志表';
--
-- 表的索引 `wa_device_logs`
--
ALTER TABLE `wa_device_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `member_id_device_id_del` (`device_id`,`del`),
  ADD KEY `idx_device_time` (`device_id`,`year`,`month`,`day`,`del`);

3、新建wa_webhook_logs表:

CREATE TABLE `wa_webhook_logs` (
      `id` bigint(20) NOT NULL COMMENT 'id',
      `device_id` bigint(20) NOT NULL COMMENT '設備id',
      `url` text NOT NULL COMMENT 'url',
      `param` text NOT NULL COMMENT '設備數據',
      `status` int(11) NOT NULL COMMENT '0執(zhí)行成功,1執(zhí)行失敗',
      `msg` text COMMENT '執(zhí)行結果',
      `exception` text COMMENT '異常結果',
      `year` varchar(20) NOT NULL COMMENT '年份',
      `month` varchar(20) NOT NULL COMMENT '月份',
      `day` varchar(20) NOT NULL COMMENT '日期',
      `date` date NOT NULL COMMENT '日期',
      `addtime` datetime NOT NULL COMMENT '時間',
      `del` int(11) NOT NULL COMMENT '0未刪除1已刪除',
      `del_id` bigint(20) NOT NULL COMMENT '刪除人id',
      `del_time` datetime DEFAULT NULL COMMENT '刪除時間'
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='設備webhook日志';

--
-- 表的索引 `wa_webhook_logs`
--
ALTER TABLE `wa_webhook_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `member_id_device_id_del` (`device_id`,`del`),
  ADD KEY `idx_device_year_month_day` (`device_id`,`year`,`month`,`day`,`del`);

4、wa_iot表增加字段,已經存在就不需要執(zhí)行了

ALTER?TABLE?`wa_iot`?ADD?`log`?INT(1)?NOT?NULL?DEFAULT?'1'?COMMENT?'是否啟用設備數據日志0不啟用1啟用 '?AFTER?`directive`;

5、MQTT協議,如果用不到mqtt可以忽略。
(1)安裝emqx1.0,建議用寶塔進行安裝。
(2)登錄emqx網頁管理后臺,左側菜單里找到訪問控制-客戶端認證,創(chuàng)建mysql認證方式,填寫mysql權限信息,密碼加密方式:plain,加鹽方式:disable
SQL代碼:SELECT password FROM wa_iot where username = ${username} and code = ${clientid} and del = 0 LIMIT 1
(3)左側菜單里:集成-webhook,創(chuàng)建webhook回調,觸發(fā)器:所有消息和事件,請求方法:post,
URL:http://XXXX/api/mqtt(本URL可以隨意更改,但是必須是不需要登錄就可以被訪問的,安全校驗請自行設計
(4)在http://XXXX/api/mqtt里的代碼如下(文件路徑:plugin\iotplug\升級步驟和相關文件\ApiController.php):

<?php

        namespace app\controller;

        class ApiController
        {
            public function mqtt()
            {
                //安全校驗請自行設計

                //獲取請求參數
                $param = [];
                if (!empty(request())) {
                    $param = request()->all();
                    $body = request()->rawBody();
                    if (!empty($body)) {
                        $body = jsonDecode($body, true);
                        if (!empty($body)) {
                            $param = array_merge($param, $body);
                        }
                    }
                }
                //success,normal
                //not_authorized bad_username_or_password
                if (isset($param['reason_code']) && in_array($param['reason_code'], ['not_authorized', 'bad_username_or_password'])) {
                    return $param['reason_code'];
                }
                //發(fā)送mqtt消息
                $param['index'] = genreId('mqtt');
                \Webman\RedisQueue\Redis::send('iots_redis_queue_mqtt_api', $param);
            }
        }

6、重啟項目 php start.php restart -d 完成升級

功能特性

1、數據采集:支持利用TCP協議從設備實時采集數據,數據可以直接存入redis里,支持string類型和list類型,支持數據過濾,支持數據轉發(fā)給指定url。
2、命令下發(fā):支持服務端秒級給設備下發(fā)指令,支持以隊列的方式下發(fā)。
3、被動回復:根據設備發(fā)送的特定指令,針對性的回復命令。
4、實時通訊:可以跟設備實時進行通訊,方便驗證命令和調試設備。
5、數據轉發(fā):可以實現兩個或多個設備之間的相互轉發(fā),如:想讓設備采集的數據直接發(fā)送到網頁websocket,用轉發(fā)即可簡單實現。

安裝使用

1、下載代碼部署到服務器上
2、修改配置參數:文件路徑:plugin/iotplug/config/iot.php,其中ip:為所在服務器的公網IP,tcp_port:TCP協議監(jiān)聽端口,ws_port:WebSocket協議監(jiān)聽端口(ws),wss_port:WebSocket協議監(jiān)聽端口(wss),ssl_cert:SSL證書(.crt),ssl_key:SSL證書密鑰(.key),super_code:超級權限注冊包(注意修改),默認所有的設備收到的消息都會轉發(fā)消息到這個注冊包.
(1)設置的端口要注意開啟放行,如果是用的寶塔,在安全欄目添加,如果是阿里云ECS,注意在ECS控制臺里添加安全組放行。
(2)wss_port是https的websocket端口,如果需要使用,請配置ssl證書,阿里云騰訊云都可以申請免費的證書。注意:如果是鏈接wss的話,websocket不能用ip地址,需要用域名,跟證書保持一致。如WebSocket("wss://iot.xxx.com:6363"),其中iot.xxx.com的證書要跟配置的wss.key和wss.crt一致
3、如果需要mqtt,那么需要安裝mqtt服務端。百度安裝emqx軟件的步驟或者寶塔面板-軟件管理-搜索emqx安裝。安裝完成后進入emqx的后臺管理系統,默認的路徑是http://xx.xx.xx.xx:18083 首次登錄需要設置賬號密碼。登錄進去之后找到客戶端認證設置菜單。
3.1配置客戶端認證:

SELECT password FROM wa_iot where username = ${username} and code = ${clientid} and del = 0 LIMIT 1

具體配置頁面如下圖,注意密碼加密方式為:plain,加鹽:disable
截圖
3.2配置webhook:http://xx.xx.xx.xx:6767/api/mqtt 勾選所有消息與事件

如果需要限制客戶端只能使用其設置的主題,那么可以啟用客戶端授權(默認不啟用),并且后臺要設置當授權未通過時斷開連接。
3.3配置客戶端

SELECT action, permission, topic FROM wa_iot where username = ${username} and code = ${clientid} and del = 0

設備操作

一、添加設備

1、自定義注冊包:
(1)必填。自定義注冊包是設備與服務端建立連接的唯一憑證,設備在連接服務端時,必須使用自定義注冊包,否則服務端會拒絕連接。
(2)自定義注冊包可以是任意字符串,但是不能包含英文逗號,否則會導致解析錯誤。
(3)注冊包是設備的唯一ID且不能跟其他設備重復,相當于設備的身份證,用于向服務端驗證身份。一般是在使用DTU的時候配置在DTU里,第一次連接服務端的時候,DTU會發(fā)送自定義注冊包進行身份注冊。服務端驗證通過后建立連接。
(4)自定義注冊包只需在第一次連接服務端時發(fā)送,后續(xù)連接服務端時,不需要再發(fā)送。

2、自定義回復包:非必填,自定義回復包是設備在第一次注冊成功時,服務端回復給設備的數據,如果不填寫,那么服務端不回復。

3、名稱:必填,設備名稱。

4、協議類型:
(1)TCP透傳:創(chuàng)建一個TCP客戶端,設備發(fā)送的數據會直接轉發(fā)給服務端,服務端發(fā)送的數據會直接轉發(fā)給設備。用戶可以通過DTU設備,將設備的數據轉發(fā)給服務端,服務端再轉發(fā)給設備,這樣就實現了設備與服務端的通訊。
(2)WebSocket:創(chuàng)建一個websocket客戶端。
(3)Mqtt:創(chuàng)建一個Mqtt設備

5、登錄類型:
(1)單點登錄:該自定義注冊包只允許一個設備登錄,當多個設備使用同一個注冊包登錄時,會將已登錄設備踢下去。通常設備與服務端建立的TCP協議都使用單點登錄。
(2)多點登錄,該自定義注冊包只允許多個設備同時登錄,通常websocket協議都是多點登錄。

6、數據字段:
(1)此字段為配置redis字段,設備返回的數據會存入到這個redis字段里,支持string類型和list類型,如果是list類型,那么設備返回的數據會存入到list的頭部,如果是string類型,那么設備返回的數據會覆蓋之前的數據。如果想設置list類型,那么請在字段前面加上:list,如:list:valList。如果不設置,默認為string類型,如:val,即表示字段為val的string類型數據。
(2)ASCII:設備返回的數據以ASCII格式存入redis,HEX:以16進制格式存入redis
(3)請注意:即使不設置redis字段,這里的數據類型也要設置,系統是根據這個字段進行數據轉化,如一般的設備都是HEX,系統默認

7、數據轉發(fā):
(1)此字段為配置轉發(fā)設備的注冊包,多個注冊包用英文逗號分隔。

上圖含義:路燈M9NRilOsYETL2接收到的數據會同步轉發(fā)到vW5FqKGW6G28,B2PeiPfwejdu兩個設備里。
(2)轉發(fā)的數據會進行簡單的打包,以json字符串進行轉發(fā)。格式為:

{"k":"M9NRilOsYETL2","v":"values","t":"xxxx-xx-xx xx:xx:xx"} 

解釋:k:數據來源的注冊包,v:轉發(fā)的數據,t:轉發(fā)時間.

8、Http-Client:
(1)此字段為配置數據轉發(fā)的url,多個url用英文逗號分隔。

上圖含義:自來水供水tK8i2JvLJGrf3接收到的數據會同步轉發(fā)到http://xxx.com,http://yyy.com 這兩個域名,
(2)轉發(fā)會以post請求進行轉發(fā),有以下參數:vtype:數據類型:0表示ASCII,1表示HEX16進制,msg:轉發(fā)的數據,from:轉發(fā)來源注冊包

9、數據過濾
(1)如果啟用的話,系統會對設備發(fā)來的數據進行簡單的過濾,不符合過濾條件的數據會被丟棄。
(2)字節(jié)長度:會根據數據的字節(jié)長度進行過濾。
(3)前N位字符:會根據數據的前N位字符進行過濾。
(4)忽略心跳包:會根據特定字符串進行過濾。

二、定時下發(fā)

1、設備默認不啟用定時下發(fā),如果啟用的話,需要設備重新連接后生效。
2、系統默認支持頻率:1秒1次、1秒2次、30秒1次、1分鐘1次、3秒1次、10秒1次。
3、自定義內容:ASCII類型,HEX類型。物聯網設備一般以HEX16進制類型下發(fā)。
4、支持填寫多個指令,用英文逗號,分隔。若設置多個指令,則會按照設置的頻率,按照指令從前到后依次發(fā)送。
如上圖所示,代表第一個30秒的時候,發(fā)送010300010001D5CA,第二個30秒發(fā)送010300040001C5CB,第三個30秒發(fā)送010300010001D5CA,依次類推。這樣設計的目的是有些設備會限制請求幀的頻率,頻率太高或一次性發(fā)多條,設備就不會回復。

三、被動回復

1、系統支持設置兩套命令回復。
2、觸發(fā)指令:設備回復的指令如果與觸發(fā)指令匹配即觸發(fā),服務端會進行回復。
3、回復指令:當觸發(fā)被動回復后服務端回復的指令。
4、ASCII類型,HEX類型(16進制)

四、數據流

設備發(fā)送的數據都會在這個數據流上顯示。系統設置了一個超級權限注冊包,即config/plugin/webman/gateway-worker/app.php文件中的super_code字段,所有的iot設備發(fā)送的數據,都會默認給這個超級權限轉發(fā),即實現了數據流的實時數據監(jiān)控,super_code也可以通過數據流下發(fā)指令給設備,即實現與設備的實時通訊。

五、隊列下發(fā)指令

1、每一個設備在連接服務端成功之后,都會默認創(chuàng)建一個定時器,這個定時器是按照1秒1次進行下發(fā)指令,該定時器使用隊列進行依次下發(fā),隊列為HFiots-注冊包名-Default-Crontab,如果注冊包名為xxxx,即:HFiots-xxxx-Default-Crontab。
2、隊列的數據格式為:

$data = json_encode(['vtype' => 1, 'val' => 'xxxxxx'], JSON_UNESCAPED_UNICODE);

vtype:數據類型 0ASCII,1HEX16進制
val:下發(fā)指令
3、使用方法:

Redis::rpush('HFiots-xxxx-Default-Crontab', $data);

4、服務端會按照下面代碼的順序1秒鐘給設備下發(fā)一次指令

Redis::lindex('HFiots-xxxx-Default-Crontab', 0)

六、心跳包

1、系統默認要求設備每隔30秒發(fā)送一次心跳包,如果設備超過55秒沒有發(fā)送心跳包,系統會自動斷開設備連接。
2、如果想關閉心跳包,可以在config/plugin/webman/gateway-worker/process.php文件中的對應協議的pingNotResponseLimit字段設置為0,即關閉心跳包。

七、指令發(fā)送

1、websocket端可以主動給其他客戶端發(fā)送消息,代碼如下:

var obj = {
    to: th.deviceCode, //目標客戶端自定義注冊包
    type: 1, //0:ASCII,1:HEX
    eol: 0, //0:指令末尾不加換行,1:指令末尾加換行(有些設備的協議需要換行來區(qū)分)
    val: '010600020001e9ca' //指令內容
};
ws.send(JSON.stringify(obj));

2、php端也可以主動給其他客戶端發(fā)送消息,代碼如下:

$my = [
    'from' => 'fromCode', //發(fā)送方的自定義注冊包
    'to' => 'toCode', //接收方的自定義注冊包
    'type' => '1', //0:ASCII,1:HEX,2:GB2312
    'eol' => '0', //不加換行
    'val' => $code //發(fā)送的內容
];
fwrite($client, json_encode($my, JSON_UNESCAPED_UNICODE) . "\n");

八、視頻教程(陸續(xù)更新)

1、語音播報設備:https://www.bilibili.com/video/BV13h411V7FK
2、掃碼槍:https://www.bilibili.com/video/BV1f24y1L7fd/
3、紙幣識別器:https://www.bilibili.com/video/BV1Vs4y1U7Et/
4、電子秤:https://www.bilibili.com/video/BV1xo4y1H7Ro/

版本歷史記錄
1.0.6
14天前
將插件版功能跟獨立版功能同步,增加了MQTT協議。
1、配置文件config/plugin/webman/gateway-worker/app.php增加了版本號、域名配置項。//本系統的域名,必須是http或https開頭,注意域名末尾不加/,修改這個參數后要刪除根目錄/runtime/views下的所有文件已使配置生效
2、修復某些場景下在線狀態(tài)顯示異常問題:更換在線狀態(tài)判斷機制,TCP和websocket協議不再使用redis保存在線狀態(tài),改為使用GatewayWorker官方API判斷。
3、增加設備數據日志記錄開關
4、設備列表頁和數據流頁,根據域名配置項domain,自動采用wss或ws協議。
5、插件目錄:\plugin\iotplug下有升級步驟和相關文件供參考。升級前注意做好備份
1.0.5
2025-03-16
1、設備列表頁的設備在線狀態(tài)實時更新
2、增加踢下線設備的功能,可以將設備踢下線。
3、修改定時下發(fā)設置的時候,會自動將設備踢下線以使設置生效。注意客戶端要有重連機制
1.0.4
2023-12-28
調整下表結構,去掉rkey字段.
1.0.3
2023-12-27
版本號不正確
評分及評論
5 滿分5分
cccccc1980 2025-04-20
插件版本什么時候能支持mqtt協議?
??