From 397738b8c9cc5d5d89a962b1b5073fe201ebe680 Mon Sep 17 00:00:00 2001 From: vince <757871790@qq.com> Date: 星期三, 08 十一月 2023 11:21:46 +0800 Subject: [PATCH] 地磅推送 --- src/main/java/com/fzzy/mqtt/PublishSample.java | 48 ++++++++++++++++ .rules | 30 +++++----- src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java | 15 +++- src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml | 4 - src/main/java/com/fzzy/gateway/GatewayRunner.java | 8 +- src/main/java/com/fzzy/mqtt/MqttPublishService.java | 63 +++++++++++++++++++++ 6 files changed, 142 insertions(+), 26 deletions(-) diff --git a/.rules b/.rules index 9c6f308..57b823c 100644 --- a/.rules +++ b/.rules @@ -274,7 +274,7 @@ <Prop name="verticalText" type="boolean"/></Props><Children><Child rule="Tab" name="Tab" aggregated="true" public="false"></Child></Children></Rule><Rule name="ToolBar" parents="com.bstek.dorado.view.widget.Control" label="ToolBar" type="com.bstek.dorado.view.widget.base.toolbar.ToolBar" sortFactor="2023" category="General" icon="/com/bstek/dorado/view/widget/base/toolbar/ToolBar.png" clientTypes="desktop"><Props> <Prop name="fixRight" type="boolean"/> <Prop name="height" visible="false"/> -<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="com.bstek.dorado.view.widget.base.toolbar.Label" name="ToolBarLabel" aggregated="true"></Child><Child rule="Separator" name="Separator" aggregated="true"></Child><Child rule="Fill" name="Fill" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Button" name="ToolBarButton" aggregated="true"></Child><Child rule="MenuButton" name="MenuButton" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Items" aggregated="true"></Child></Children></Rule><Rule name="SplitPanel" parents="com.bstek.dorado.view.widget.Control" label="SplitPanel" type="com.bstek.dorado.view.widget.base.SplitPanel" sortFactor="2024" category="General" icon="/com/bstek/dorado/view/widget/base/SplitPanel.png" clientTypes="desktop"><Props> +<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="MenuButton" name="MenuButton" aggregated="true"></Child><Child rule="Fill" name="Fill" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Label" name="ToolBarLabel" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Button" name="ToolBarButton" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Separator" name="Separator" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Items" aggregated="true"></Child></Children></Rule><Rule name="SplitPanel" parents="com.bstek.dorado.view.widget.Control" label="SplitPanel" type="com.bstek.dorado.view.widget.base.SplitPanel" sortFactor="2024" category="General" icon="/com/bstek/dorado/view/widget/base/SplitPanel.png" clientTypes="desktop"><Props> <Prop name="animate" type="java.lang.Boolean"/> <Prop name="collapseBothSide" defaultValue="false" type="boolean"/> <Prop name="collapseable" defaultValue="true" type="boolean"/> @@ -816,11 +816,7 @@ <ClientEvent name="onTabContextMenu" parameters="self,arg"/> <ClientEvent name="onTabChange" parameters="self,arg"/> <ClientEvent name="onTabRemove" parameters="self,arg"/> -<ClientEvent name="beforeTabChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Label" parents="com.bstek.dorado.view.widget.Control" label="Label" nodeName="ToolBarLabel" type="com.bstek.dorado.view.widget.base.toolbar.Label" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Label.png" clientTypes="desktop"><Props> -<Prop name="text"/></Props></Rule><Rule name="Separator" parents="com.bstek.dorado.view.widget.Control" label="Separator" type="com.bstek.dorado.view.widget.base.toolbar.Separator" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Separator.png" clientTypes="desktop"></Rule><Rule name="Fill" parents="com.bstek.dorado.view.widget.Control" label="Fill" type="com.bstek.dorado.view.widget.base.toolbar.Fill" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Fill.png" clientTypes="desktop"></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Button" parents="Button" label="ToolBarButton" nodeName="ToolBarButton" type="com.bstek.dorado.view.widget.base.toolbar.Button" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Button.png" clientTypes="desktop"><Props> -<Prop name="hideMenuOnMouseLeave" type="boolean"/> -<Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> -<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props></Rule><Rule name="MenuButton" parents="Button" label="MenuButton" nodeName="MenuButton" type="com.bstek.dorado.view.widget.base.toolbar.MenuButton" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/MenuButton.png" clientTypes="desktop"><Props> +<ClientEvent name="beforeTabChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="MenuButton" parents="Button" label="MenuButton" nodeName="MenuButton" type="com.bstek.dorado.view.widget.base.toolbar.MenuButton" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/MenuButton.png" clientTypes="desktop"><Props> <Prop name="hideMenuOnMouseLeave" type="boolean"/> <Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> <Prop name="menu" deprecated="true" visible="false"/> @@ -831,17 +827,14 @@ <Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> <Prop name="tip"/> <Prop name="visible" defaultValue="true" type="boolean"/> -<Prop name="width"/></Props></Rule><Rule name="CheckableMenuItem" parents="MenuItem" label="CheckableMenuItem" type="com.bstek.dorado.view.widget.base.menu.CheckableMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/CheckableMenuItem.png" clientTypes="desktop"><Props> -<Prop name="checked" type="boolean"/> -<Prop name="group"/></Props><ClientEvents> -<ClientEvent name="onCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="TextMenuItem" parents="BaseMenuItem" abstract="true" type="com.bstek.dorado.view.widget.base.menu.TextMenuItem"><Props> +<Prop name="width"/></Props></Rule><Rule name="MenuItem" parents="TextMenuItem" label="MenuItem" type="com.bstek.dorado.view.widget.base.menu.MenuItem" icon="/com/bstek/dorado/view/widget/base/menu/MenuItem.png" clientTypes="desktop"><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="TextMenuItem" parents="BaseMenuItem" abstract="true" type="com.bstek.dorado.view.widget.base.menu.TextMenuItem"><Props> <Prop name="action" reference="Action:id"/> <Prop name="caption"/> <Prop name="disabled" type="boolean"/> <Prop name="hideOnClick" defaultValue="true" type="boolean"/> <Prop name="icon"/> <Prop name="iconClass"/></Props><ClientEvents> -<ClientEvent name="onClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="MenuItem" parents="TextMenuItem" label="MenuItem" type="com.bstek.dorado.view.widget.base.menu.MenuItem" icon="/com/bstek/dorado/view/widget/base/menu/MenuItem.png" clientTypes="desktop"><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="com.bstek.dorado.view.widget.base.menu.Separator" parents="BaseMenuItem" label="Separator" type="com.bstek.dorado.view.widget.base.menu.Separator" icon="/com/bstek/dorado/view/widget/base/menu/Separator.png" clientTypes="desktop,touch"></Rule><Rule name="ControlMenuItem" parents="TextMenuItem" label="ControlMenuItem" type="com.bstek.dorado.view.widget.base.menu.ControlMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/ControlMenuItem.png" clientTypes="desktop"><Children><Child rule="FloatControl" name="Control"></Child></Children></Rule><Rule name="FloatControl" abstract="true" type="com.bstek.dorado.view.widget.FloatControl"><Props> +<ClientEvent name="onClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="ControlMenuItem" parents="TextMenuItem" label="ControlMenuItem" type="com.bstek.dorado.view.widget.base.menu.ControlMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/ControlMenuItem.png" clientTypes="desktop"><Children><Child rule="FloatControl" name="Control"></Child></Children></Rule><Rule name="FloatControl" abstract="true" type="com.bstek.dorado.view.widget.FloatControl"><Props> <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> <Prop name="anchorTarget" visible="false"/> <Prop name="animateTarget" visible="false"/> @@ -862,7 +855,14 @@ <Prop name="shadowMode" enumValues="drop,sides,frame,none"/> <Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> <Prop name="top" type="int"/> -<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/></Props></Rule><Rule name="Section" parents="ClientEventSupportedElement" label="Section" type="com.bstek.dorado.view.widget.base.accordion.Section" icon="/com/bstek/dorado/view/widget/base/accordion/Section.png"><Props> +<Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/></Props></Rule><Rule name="CheckableMenuItem" parents="MenuItem" label="CheckableMenuItem" type="com.bstek.dorado.view.widget.base.menu.CheckableMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/CheckableMenuItem.png" clientTypes="desktop"><Props> +<Prop name="checked" type="boolean"/> +<Prop name="group"/></Props><ClientEvents> +<ClientEvent name="onCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="Separator" parents="BaseMenuItem" label="Separator" type="com.bstek.dorado.view.widget.base.menu.Separator" icon="/com/bstek/dorado/view/widget/base/menu/Separator.png" clientTypes="desktop,touch"></Rule><Rule name="Fill" parents="com.bstek.dorado.view.widget.Control" label="Fill" type="com.bstek.dorado.view.widget.base.toolbar.Fill" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Fill.png" clientTypes="desktop"></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Label" parents="com.bstek.dorado.view.widget.Control" label="Label" nodeName="ToolBarLabel" type="com.bstek.dorado.view.widget.base.toolbar.Label" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Label.png" clientTypes="desktop"><Props> +<Prop name="text"/></Props></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Button" parents="Button" label="ToolBarButton" nodeName="ToolBarButton" type="com.bstek.dorado.view.widget.base.toolbar.Button" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Button.png" clientTypes="desktop"><Props> +<Prop name="hideMenuOnMouseLeave" type="boolean"/> +<Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> +<Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Separator" parents="com.bstek.dorado.view.widget.Control" label="Separator" type="com.bstek.dorado.view.widget.base.toolbar.Separator" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Separator.png" clientTypes="desktop"></Rule><Rule name="Section" parents="ClientEventSupportedElement" label="Section" type="com.bstek.dorado.view.widget.base.accordion.Section" icon="/com/bstek/dorado/view/widget/base/accordion/Section.png"><Props> <Prop name="caption"/> <Prop name="className"/> <Prop name="disabled" type="boolean"/> @@ -938,14 +938,14 @@ <Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> <ClientEvent name="onGetCellEditor" parameters="self,arg"/> <ClientEvent name="onHeaderClick" parameters="self,arg"/> -<ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="IndicatorColumn" parents="AbstractDataColumn" label="IndicatorColumn" type="com.bstek.dorado.view.widget.grid.IndicatorColumn" icon="/com/bstek/dorado/view/widget/grid/IndicatorColumn.png"></Rule><Rule name="AbstractDataColumn" parents="Column" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractDataColumn"><Props> +<ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractDataColumn" parents="Column" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractDataColumn"><Props> <Prop name="filterBarRenderer"/> <Prop name="footerRenderer"/> <Prop name="renderer"/> <Prop name="resizeable" defaultValue="true" type="boolean"/> <Prop name="width"/></Props><ClientEvents> <ClientEvent name="onRenderFooterCell" parameters="self,arg"/> -<ClientEvent name="onRenderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowSelectorColumn" parents="AbstractDataColumn" label="RowSelectorColumn" type="com.bstek.dorado.view.widget.grid.RowSelectorColumn" icon="/com/bstek/dorado/view/widget/grid/RowSelectorColumn.png"></Rule><Rule name="DataColumn" parents="AbstractDataColumn" label="DataColumn" type="com.bstek.dorado.view.widget.grid.DataColumn" icon="/com/bstek/dorado/view/widget/grid/DataColumn.png" labelProperty="name,property"><Props> +<ClientEvent name="onRenderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="DataColumn" parents="AbstractDataColumn" label="DataColumn" type="com.bstek.dorado.view.widget.grid.DataColumn" icon="/com/bstek/dorado/view/widget/grid/DataColumn.png" labelProperty="name,property"><Props> <Prop name="align" enumValues="left,center,right"/> <Prop name="dataType" type="com.bstek.dorado.data.type.DataType"/> <Prop name="defaultFilterOperator"/> @@ -960,7 +960,7 @@ <Prop name="summaryType" enumValues="sum,average,count,max,min"/> <Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> <Prop name="typeFormat"/> -<Prop name="wrappable" type="boolean"/></Props><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/grid/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="RowNumColumn" parents="AbstractDataColumn" label="RowNumColumn" type="com.bstek.dorado.view.widget.grid.RowNumColumn" icon="/com/bstek/dorado/view/widget/grid/RowNumColumn.png"></Rule><Rule name="ColumnGroup" parents="Column" label="ColumnGroup" type="com.bstek.dorado.view.widget.grid.ColumnGroup" icon="/com/bstek/dorado/view/widget/grid/ColumnGroup.png"><Props> +<Prop name="wrappable" type="boolean"/></Props><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/grid/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="IndicatorColumn" parents="AbstractDataColumn" label="IndicatorColumn" type="com.bstek.dorado.view.widget.grid.IndicatorColumn" icon="/com/bstek/dorado/view/widget/grid/IndicatorColumn.png"></Rule><Rule name="RowNumColumn" parents="AbstractDataColumn" label="RowNumColumn" type="com.bstek.dorado.view.widget.grid.RowNumColumn" icon="/com/bstek/dorado/view/widget/grid/RowNumColumn.png"></Rule><Rule name="RowSelectorColumn" parents="AbstractDataColumn" label="RowSelectorColumn" type="com.bstek.dorado.view.widget.grid.RowSelectorColumn" icon="/com/bstek/dorado/view/widget/grid/RowSelectorColumn.png"></Rule><Rule name="ColumnGroup" parents="Column" label="ColumnGroup" type="com.bstek.dorado.view.widget.grid.ColumnGroup" icon="/com/bstek/dorado/view/widget/grid/ColumnGroup.png"><Props> <Prop name="align" enumValues="left,center,right" visible="false"/></Props><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="AbstractList" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.list.AbstractList" scope="protected" clientTypes="desktop"><Props> <Prop name="allowNoCurrent" type="boolean"/> <Prop name="dragMode" defaultValue="item" enumValues="item,control,itemOrControl"/> diff --git a/src/main/java/com/fzzy/gateway/GatewayRunner.java b/src/main/java/com/fzzy/gateway/GatewayRunner.java index e4827f5..9dbdcd8 100644 --- a/src/main/java/com/fzzy/gateway/GatewayRunner.java +++ b/src/main/java/com/fzzy/gateway/GatewayRunner.java @@ -1,7 +1,9 @@ package com.fzzy.gateway; import com.fzzy.gateway.hx2023.service.ApiInitService; +import com.fzzy.mqtt.MqttPublishService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; @@ -18,12 +20,12 @@ @Resource private ApiInitService apiInitService; - - + @Autowired + private MqttPublishService mqttPublishService; @Override public void run(String... args) throws Exception { + mqttPublishService.init(); //鎵ц鍒濆鍖栨柟妗� - apiInitService.init(); } diff --git a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java index 438b8d3..5e9b45c 100644 --- a/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java +++ b/src/main/java/com/fzzy/gateway/service/GatewayDeviceService.java @@ -1,5 +1,6 @@ package com.fzzy.gateway.service; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONObject; import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.annotation.DataResolver; @@ -18,6 +19,7 @@ import com.fzzy.gateway.hx2023.websocket.WebSocketDeviceReport; import com.fzzy.gateway.service.repository.GatewayDeviceRep; +import com.fzzy.mqtt.MqttPublishService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -45,7 +47,7 @@ @Resource private GatewayRemoteManager gatewayRemoteManager; @Resource - private WebSocketDeviceReport webSocketDeviceReport; + private MqttPublishService mqttPublishService; /** * gatewayDeviceService#listAll * @@ -125,8 +127,9 @@ * @return */ @Expose - public String ajaxTestWeight(Map<String, Object> parameter) { - double weigh = (double) parameter.get("weight"); + public String ajaxTestWeight() { + //double weigh = (double) parameter.get("weight"); + double weigh = Double.parseDouble("3500.0"); List<GatewayDevice> devices = listAll(); if(devices == null || devices.size()<= 0){ return "娌℃湁璁惧"; @@ -135,6 +138,8 @@ if(weights == null || weights.size()<= 0){ return "娌℃湁鑾峰彇鍒板湴纾呰澶�"; } + String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; + for (GatewayDevice device: weights) { WebSocketPacket packet = new WebSocketPacket(); @@ -161,8 +166,8 @@ packet.setTimestamp(System.currentTimeMillis()); - - webSocketDeviceReport.sendByPacket(packet); + topic = "/device/hx-weigh-big-01/"+device.getDeviceId()+"/message/property/report"; + mqttPublishService.publishMsg(topic, JSON.toJSONString(packet)); } return "SUCCESS"; } diff --git a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml index 4a77418..324c4ba 100644 --- a/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml +++ b/src/main/java/com/fzzy/gateway/view/GatewayConf.view.xml @@ -94,8 +94,6 @@ <Property name="label">閫夋嫨鏃堕棿</Property> </PropertyDef> <PropertyDef name="weight"> - <Property name="dataType">Double</Property> - <Property name="defaultValue">0.00</Property> <Property name="label">閲嶉噺</Property> </PropertyDef> </DataType> @@ -394,7 +392,7 @@ <Buttons> <Button> <ClientEvent name="onClick">var data = view.get("#dsQuery.data");
 -view.get("#ajaxTestWeight").set("parameter",data.toJSON()).execute(function(result){
 +view.get("#ajaxTestWeight").set("parameter",data.get("weight")).execute(function(result){
 self.get("parent").hide();
 $alert(result);
 });</ClientEvent> diff --git a/src/main/java/com/fzzy/mqtt/MqttPublishService.java b/src/main/java/com/fzzy/mqtt/MqttPublishService.java new file mode 100644 index 0000000..8191a33 --- /dev/null +++ b/src/main/java/com/fzzy/mqtt/MqttPublishService.java @@ -0,0 +1,63 @@ +package com.fzzy.mqtt; + +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.springframework.stereotype.Service; + +@Service +public class MqttPublishService { + private static MqttClient client ; + + + public void init() throws MqttException { + //String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; + String username = "admin"; + String password = "admin123321"; + String clientid = "FZZY-gateway"; + String broker = "tcp://127.0.0.1:1883"; + //String content = " { \"headers\":{ \"productId\":\"hx-weigh-big-01\", \"keepOnlineTimeoutSeconds\":600, \"keepOnline\":true, \"deviceName\":\"鍦扮绉伴噸\" }, \"messageType\":\"REPORT_PROPERTY\", \"deviceId\":\"91511424746940066Y001_91511424746940066Y0010000_002_004_002_001\", \"properties\":{ \"weightInfo\":\"{\\\"exceed\\\":false,\\\"grossWeight\\\":3000.0,\\\"netWeight\\\":3000.0,\\\"static\\\":false,\\\"tareWeight\\\":3000.0,\\\"weightUnit\\\":\\\"KG\\\"}\" }, \"timestamp\":1698336020044 }"; + int qos = 0; + try { + client = new MqttClient(broker, clientid, new MemoryPersistence()); + // 杩炴帴鍙傛暟 + MqttConnectOptions options = new MqttConnectOptions(); + // 璁剧疆鐢ㄦ埛鍚嶅拰瀵嗙爜 + options.setUserName(username); + options.setPassword(password.toCharArray()); + options.setConnectionTimeout(60); + options.setKeepAliveInterval(60); + // 杩炴帴 + client.connect(options); + + } catch (MqttException e) { + throw new RuntimeException(e); + } + + } + public void publishMsg(String topic,String content) { + + // String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; + //String content = " { \"headers\":{ \"productId\":\"hx-weigh-big-01\", \"keepOnlineTimeoutSeconds\":600, \"keepOnline\":true, \"deviceName\":\"鍦扮绉伴噸\" }, \"messageType\":\"REPORT_PROPERTY\", \"deviceId\":\"91511424746940066Y001_91511424746940066Y0010000_002_004_002_001\", \"properties\":{ \"weightInfo\":\"{\\\"exceed\\\":false,\\\"grossWeight\\\":3000.0,\\\"netWeight\\\":3000.0,\\\"static\\\":false,\\\"tareWeight\\\":3000.0,\\\"weightUnit\\\":\\\"KG\\\"}\" }, \"timestamp\":1698336020044 }"; + int qos = 0; + + try { + // 鍒涘缓娑堟伅骞惰缃� QoS + MqttMessage message = new MqttMessage(content.getBytes()); + message.setQos(qos); + // 鍙戝竷娑堟伅 + client.publish(topic, message); + System.out.println("Message published"); + System.out.println("topic: " + topic); + System.out.println("message content: " + content); + // 鍏抽棴杩炴帴 + //client.disconnect(); + // 鍏抽棴瀹㈡埛绔� + //client.close(); + } catch (MqttException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/fzzy/mqtt/PublishSample.java b/src/main/java/com/fzzy/mqtt/PublishSample.java new file mode 100644 index 0000000..765a81c --- /dev/null +++ b/src/main/java/com/fzzy/mqtt/PublishSample.java @@ -0,0 +1,48 @@ +package com.fzzy.mqtt; + +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; + +public class PublishSample { + + public static void main(String[] args) { + + String broker = "tcp://127.0.0.1:1883"; + String topic = "/device/hx-weigh-big-01/91511424746940066Y001_91511424746940066Y0010000_002_004_002_001/message/property/report"; + String username = "admin"; + String password = "admin123321"; + String clientid = "FZZY-gateway"; + String content = " { \"headers\":{ \"productId\":\"hx-weigh-big-01\", \"keepOnlineTimeoutSeconds\":600, \"keepOnline\":true, \"deviceName\":\"鍦扮绉伴噸\" }, \"messageType\":\"REPORT_PROPERTY\", \"deviceId\":\"91511424746940066Y001_91511424746940066Y0010000_002_004_002_001\", \"properties\":{ \"weightInfo\":\"{\\\"exceed\\\":false,\\\"grossWeight\\\":3000.0,\\\"netWeight\\\":3000.0,\\\"static\\\":false,\\\"tareWeight\\\":3000.0,\\\"weightUnit\\\":\\\"KG\\\"}\" }, \"timestamp\":1698336020044 }"; + int qos = 0; + + try { + MqttClient client = new MqttClient(broker, clientid, new MemoryPersistence()); + // 杩炴帴鍙傛暟 + MqttConnectOptions options = new MqttConnectOptions(); + // 璁剧疆鐢ㄦ埛鍚嶅拰瀵嗙爜 + options.setUserName(username); + options.setPassword(password.toCharArray()); + options.setConnectionTimeout(60); + options.setKeepAliveInterval(60); + // 杩炴帴 + client.connect(options); + // 鍒涘缓娑堟伅骞惰缃� QoS + MqttMessage message = new MqttMessage(content.getBytes()); + message.setQos(qos); + // 鍙戝竷娑堟伅 + client.publish(topic, message); + System.out.println("Message published"); + System.out.println("topic: " + topic); + System.out.println("message content: " + content); + // 鍏抽棴杩炴帴 + client.disconnect(); + // 鍏抽棴瀹㈡埛绔� + client.close(); + } catch (MqttException e) { + throw new RuntimeException(e); + } + } +} -- Gitblit v1.9.3