96SEO 2026-02-20 02:43 20
。

一般像嵌入式这类的#xff0c;MQTT协议会走的多一些#xff0c;走订阅和发布的策略#xff0c;网上走了一圈之后#xff0c;目前有几个实现方案。
这里对比一下几个物联网协议#xff0c;相对而言MQTT更合适物联网#xff0c;其它几个协议不是干这个…最近了解WEB大屏显示。
一般像嵌入式这类的MQTT协议会走的多一些走订阅和发布的策略网上走了一圈之后目前有几个实现方案。
这里对比一下几个物联网协议相对而言MQTT更合适物联网其它几个协议不是干这个的不过我推荐一下DDS这玩意还挺好用的。
(ps最近了解到一个团队的实现方案是tcp。
。
。
什么魔鬼设计想的啥呢)大屏实现方案1.买物联网网关附带WEB大屏服务这里就不打广告了自己找一圈蛮多有支持的。
优势是有些基础服务是免费的硬件是现成的有详细的指导文件。
缺点是高级一些的服务是要收费的不合适大批量生产毕竟从底层硬件到前端程序都是人家的要找到契合自己的网关也麻烦比如我遇到的几个都不支持MQTT协议接入。
还有就是数据都得去人家服务器多少有点膈应。
2.买云服务器比如阿里云的可视化数据服务我整了个15天试用。
优点是数据都是自己的。
缺点是要买一堆的配套服务比如协议转换服务器啥的死贵死贵的。
3.技术牛皮那就自己搭建服务器然后写前端后台嵌入式我能搞但这玩意费劲要时间而且中间肯定有那么两个环节自己得摸索一段时间。
优点啥都是自己的可定制化程度高省钱只要有个服务器就行。
缺点费时费力。
4.找个低代码平台看了一下网上这种公司有只是要掏钱优点省时省力不花多少钱。
缺点难找合适的。
推荐方案对比一圈之后还是选择了低代码平台仔细想想我是干嵌入式的后台前端这些对我来说是行业外的东西可以去了解但不需要深入关键省钱就行。
私有部署
(topthink.com)上面的方案个人觉得蛮合适哔哩哔哩有教程作者有个群现在对大家都有技术支持可以部署到局域网重点是对个人免费我觉得不花钱就可以打败一切了这些都是他的资料。
服务器搭建这部分其实是抄官方资料了自己可以去看我就抄linux搭建部分全新安装说明
(chudayun.com)1基础环境安装安装以下基础环境(参考各官网)NginxMysql
jdk-8u221-linux-x64.tar.gz修改数据库连接配置文件/app/chudy_visual_[版本号]
/etc/nginx/conf.d/重载Nginx配置使配置生效。
防火墙中配置放行端口
status7访问系统http://IP:18088/初始帐号
111111设备端实现目前测试我是找了个温湿度传感器在折腾实现方案是传感器-C#上位机-MQTT协议-云屏这里放出C#的代码(ps:反正是测试玩的不重要)代码using
Form1(){InitializeComponent();System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls
SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加事件处理程序}private
byte[ilen];serialPort1.Read(bytes,
(!radioButton6.Checked)//如果接收模式为字符模式{int
byte[ilen];serialPort1.Read(bytes,
System.Text.Encoding.Default.GetString(bytes);
//xx中文;//textBox1.AppendText(str);//添加内容}else{
(byte)serialPort1.ReadByte();//此处需要强制类型转换将(int)类型数据转换为(byte类型数据不必考虑是否会丢失数据//string
16).ToUpper();//转换为大写十六进制字符串//textBox1.AppendText(0x
}*/}catch{textBox1.AppendText(串口数据接收出错请检查!\r\n);}}private
comboBox1.Text;serialPort1.BaudRate
Convert.ToInt32(comboBox2.Text);serialPort1.Open();button1.Text
false;textBox1.AppendText(串口已连接\r\n);}catch{if
(serialPort1.IsOpen)serialPort1.Close();button1.Text
true;textBox1.AppendText(请检查串口连接\r\n);}}else
断开连接){try{serialPort1.Close();button1.Text
true;textBox1.AppendText(串口已断开\r\n);}catch
SearchAndAddSerialToComboBox(SerialPort
string[Convert.ToInt32(comboBox3.Text)];
Convert.ToInt32(comboBox3.Text);
//核心原理是依靠try和catch完成遍历progressBar1.Value
Convert.ToInt32(comboBox3.Text));Buffer
Buffer;MyBox.Items.Add(Buffer);
Buffer.ToString();MyPort.Close();
e){textBox1.AppendText(开始自动配置串口\r\n);//出错提示textBox1.AppendText(串口扫描\r\n);//出错提示SearchAndAddSerialToComboBox(serialPort1,
//扫描并讲课用串口添加至下拉列表textBox1.AppendText(端口扫描完毕\r\n);//出错提示textBox1.AppendText(正在配置波特率\r\n);//出错提示comboBox2.Text
comboBox4.Text;serialPort1.BaudRate
Convert.ToInt32(comboBox2.Text);progressBar1.Value
0;textBox1.AppendText(自动配置完成\r\n);//出错提示button1_Click(sender,
e){System.IO.File.WriteAllText(C:\Users\Administrator\Desktop\发送区数据.txt,
textBox1.Text);System.IO.File.WriteAllText(C:\Users\Administrator\Desktop\接收区数据.txt,
textBox3.Text);textBox1.AppendText(数据保存完成\r\n);}void
(serialPort1.IsOpen)//判断串口是否打开如果打开执行下一步操作{try{if
(!radioButton6.Checked)//如果发送模式是字符模式{try{//实现串口发送汉字Encoding
System.Text.Encoding.GetEncoding(gb2312);byte[]
gb.GetBytes(data);serialPort1.Write(bytes,
bytes.Length);}catch{textBox1.AppendText(串口数据写入错误\r\n);//出错提示serialPort1.Close();button1_Click(sender,
i)//取余3运算作用是防止用户输入的字符为奇数个{Data[0]
Convert.ToByte(data.Substring(i
1);//循环发送如果输入字符为0A0BB,则只发送0A,0B}if
Convert.ToByte(data.Substring(data.Length
16);//单独发送B0BserialPort1.Write(Data,
1);//发送}}}}catch{textBox1.AppendText(串口数据写入错误\r\n);//出错提示}}}private
MqttClientOptionsBuilder().WithTcpServer(textBox2.Text,
Convert.ToInt16(textBox4.Text))
要访问的mqtt服务端的用户名和密码.WithClientId(testclient02)
设置客户端id.WithCleanSession().WithTls(new
MqttClientOptionsBuilderTlsParameters{UseTls
optionsBuilder.Build();_mqttClient
MqttFactory().CreateMqttClient();_mqttClient.ConnectedAsync
客户端连接成功事件_mqttClient.DisconnectedAsync
客户端连接关闭事件_mqttClient.ApplicationMessageReceivedAsync
_mqttClient_ApplicationMessageReceivedAsync;
收到消息事件_mqttClient.ConnectAsync(clientOptions);}///
_mqttClient_DisconnectedAsync(MqttClientDisconnectedEventArgs
连接;textBox6.AppendText($客户端已断开与服务端的连接……\n);return
_mqttClient_ConnectedAsync(MqttClientConnectedEventArgs
断开;textBox6.AppendText($客户端已连接服务端……\n);//
最多一次接收者不确认收到消息并且消息不被发送者存储和重新发送提供与底层
保证一条消息至少有一次会传递给接收方。
发送方存储消息直到它从接收方收到确认收到消息的数据包。
一条消息可以多次发送或传递。
//
保证每条消息仅由预期的收件人接收一次。
级别2是最安全和最慢的服务质量级别保证由发送方和接收方之间的至少两个请求/响应四次握手。
_mqttClient.SubscribeAsync(sub,
MqttQualityOfServiceLevel.AtLeastOnce);return
_mqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs
arg){textBox6.AppendText($Topic主题【{arg.ApplicationMessage.Topic}】
消息{Encoding.UTF8.GetString(arg.ApplicationMessage.Payload)});string
Encoding.UTF8.GetString(arg.ApplicationMessage.Payload);if
str.Contains(off)){textBox6.AppendText(\r\n控制继电器\r\n);//出错提示byte[]
(serialPort1.IsOpen)//判断串口是否打开如果打开执行下一步操作{try{serialPort1.Write(Data,
8);//循环发送如果输入字符为0A0BB,则只发送0A,0B}catch{textBox1.AppendText(串口数据写入错误\r\n);//出错提示}}}//textBox6.AppendText($ApplicationMessageReceivedAsync客户端ID【{arg.ClientId}】接收到消息。
Topic主题【{arg.ApplicationMessage.Topic}】
消息【{Encoding.UTF8.GetString(arg.ApplicationMessage.Payload)}】
qos等级【{arg.ApplicationMessage.QualityOfServiceLevel}】);return
Encoding.Default.GetBytes(data),QualityOfServiceLevel
MqttQualityOfServiceLevel.AtLeastOnce,Retain
服务端是否保留消息。
true为保留如果有新的订阅者连接就会立马收到该消息。
};_mqttClient.PublishAsync(message);}private
)Publish(textBox7.Text,textBox8.Text);}private
e){textBox6.AppendText(\r\n读取温度\r\n);//出错提示byte[]
(serialPort1.IsOpen)//判断串口是否打开如果打开执行下一步操作{try{serialPort1.Write(Data,
8);//循环发送如果输入字符为0A0BB,则只发送0A,0B}catch{textBox1.AppendText(串口数据写入错误\r\n);//出错提示}}}string
zhongliang2;Publish(zhongliang,
100){textBox1.AppendText(uart_addr.ToString());//空位补“0”for
16).ToUpper();//转换为大写十六进制字符串textBox1.AppendText(0x
wendu.ToString();textBox10.Text
shidu.ToString();button11_Click(sender,
测试效果简化操作直接搞了几个按键去发当然实际项目不会这么干实际项目的构成应该是单片机接传感器以MODBUS/无线等方式提供数据访问接口linux网关实现数据转发比如NXP的IMX6上面实现MQTT客户端云服务器做MQTT服务器实现数据转发WEB云屏/微信小程序/桌面应用等订阅MQTT数据上面是我的微信和QQ群欢迎新朋友的加入。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback