2021-4-7 17:58:15 [显示全部楼层]
2099浏览
查看: 2099|回复: 9

[入门教程] 【物联网】通过花生壳内网穿透让SIOT具备外网访问功能

[复制链接]
本帖最后由 Forgotten 于 2021-4-8 17:27 编辑

SIoT

SIoT是一个针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困扰。
与Mind+结合可以让小学生到高中生都可以轻松上手物联网。

https://mindplus.dfrobot.com.cn/siot

原因

SIoT可以让我们在内网搭建服务器,降低了物联网的使用门槛,但是如果遇到想通过手机远程控制、查看数据,或者多人使用没有局域网环境只有手机的时候还是想要有外网访问功能。

如何解决这个问题呢?这个时候一般都会想到内网穿透,内网穿透比较简单易用的工具当然就是花生壳

因此测试了一下是否可以通过花生壳内网穿透将SIoT的端口映射出去从而实现外网访问,测试结果是可行,而且整个过程都是免费的(貌似现在监管严格了,创建http端口需要花6块做一个实名认证)。

原理

用一张示意图说明(以下为收集各种信息之后简单说明,仅供参考理解,不一定是真实情况):

  • 因为我们常用的网络都是通过运营商的网络再连接互联网的;

  • 而IP地址有限,因此我们一般使用的都是有很多层局域网;

  • 要访问一个siot的服务器,就要知道他的IP地址,如果要访问的设备和siot不再一个局域网里面(例如连接的不是同一个路由器)就可能访问不到。

因此:图中右侧的microbit或者手机想访问左边网络里面的SIoT服务器就访问不到。

那么如何进行内网穿透呢?

  • 花生壳的原理大概是有一台服务器在互联网中,这个服务器会把收到的消息转发给设定的内网服务器;

  • 然后左边局域网里面安装花生壳的软件,这个软件会连接花生壳的服务器;

  • 而这个服务器是可以直接通过互联网访问的;

  • 因此其他能联网的设备只需要连接到花生壳的服务器,跟这个服务器交换信息,就相当于跟左边局域网里面的SIoT服务器进行通信了。

以上就是原理,简单了解即可,实际操作起来因为花生壳提供了一键转发功能,因此非常简单

操作步骤

SIoT准备

运行SIoT

首先电脑上下载SIoT客户端并运行起来。

https://mindplus.dfrobot.com.cn/siot

SIoT提供了多种平台的版本,还有树莓派的版本,所以你还可以把siot服务放在一个树莓派上运行以便24小时低功耗的使用。

测试

浏览器输入siot管理网址,查看是否运行起来了。

127.0.0.1:8080

如下图出现SIoT管理页面说明正常运行。

  • 账号:siot

  • 密码:dfrobot

这个时候在同一个局域网的设备已经可以通过ip访问了,接下来我们使用花生壳内网穿透实现外网访问。

花生壳内网穿透

账号注册

  1. 打开花生壳官网,下载对应客户端版本。

https://hsk.oray.com/download/

这里花生壳也提供了多种平台的版本,同样也有树莓派版本。

  1. 下载完成之后安装后打开,使用花生壳手机APP扫码注册登录。

  1. 点击加号,添加一个端口映射

    登录完成后为免费账户,免费账号有2个映射端口数,每个月1G流量,对于SIoT的使用来说完全够了。

  1. 按下图做两个端口映射,其中外网域名是随机生成的,直接选择即可,如果想更换可以在花生壳购买其他名字的域名(收费服务,自行选择),内网主机填写127.0.0.1表示当前客户端运行的主机。

    注意:TCP对应1883端口,HTTP对应8080端口

    对于SIoT来说,有两个端口,一个是8080端口,http协议,用来通过网页访问,另外一个是1883端口,tcp协议,用来进行MQTT通信,因此我们映射这两个端口。

设置完成后可以看到两个访问地址:

至此,花生壳这边的设置就完成了,非常的简单。

测试

管理页面测试

  1. 首先我们测试通过外网访问SIoT的页面,将上一步8080端口映射后生成的访问地址复制到浏览器里面即可打开SIoT的页面,另外一台电脑也可以打开。

  1. 通过手机也可以访问,注意此时手机使用的是流量没有连接wifi,说明处于外网状态:

注意:这个链接被微信屏蔽了,不能直接在微信打开,需要复制到手机浏览器打开

Mind+实时模式MQTT测试

Mind+实时模式有MQTT功能,可以用来进行测试:

  1. 打开Mind+,打开扩展,加载网络服务里面的MQTT扩展

  1. 编写如下程序

  1. 其中服务器地址处填写花生壳客户端中1883端口映射过去的tcp网址即可(不包含tcp://)> 也可以使用IP:端口的形式,在cmd中ping这个地址即可获取对应的服务器IP

  1. 点击绿旗,运行程序,提示连接成功说明服务器端口映射成功。

  1. 通过刚才手机打开的页面发送消息

  1. 可以看到Mind+这边能收到,可以远程控制了

掌控板

掌控板通过设置服务器地址也可以正常使用,切换到上传模式,加载WiFiMQTT扩展,编写如下程序:

其中MQTT服务器填入花生壳1883端口映射出来的网址(不包含tcp://)

也可以使用IP:端口的形式,在cmd中ping这个地址即可获取对应的服务器IP

上传程序,通过前面手机发送消息控制开关灯:

Python库

siot提供了一个python库,因此也可以通过Python代码访问siot。

  1. 在Mind+中切换到Python模式库管理中在PIP模式输入siot即可安装。

  2. 输入如下示例代码,其中SERVER和PORT为1883对应地址和端口

import siot
import time

SERVER = "2eb1216724.qicp.vip"            #MQTT服务器IP
PORT = 13293           #MQTT服务器端口
CLIENT_ID = ""                  #在SIoT上,CLIENT_ID可以留空
IOT_pubTopic  = 'xzr/001'       #“topic”为“项目名称/设备名称”
IOT_UserName ='siot'            #用户名
IOT_PassWord ='dfrobot'         #密码

print("start")
siot.init(CLIENT_ID, SERVER, user=IOT_UserName, password=IOT_PassWord,port=PORT)
siot.connect()
print("connected")
tick = 0
while True:
  siot.publish(IOT_pubTopic, str(tick))
  print(str(tick))
  time.sleep(1)           #隔1秒发送一次
  tick = tick+1
  1. 在SIOT后台即可看到数据:


一个免费的可以内网或者外网随时访问的私有MQTT即搭建完成。
另:SIoT的后台管理html页面在安装目录下,可以通过修改这个页面达到自定义页面效果,实现远程遥控也很方便了。  

完。



image-20210407154824091.png
kaiguandeng.gif
image-20210407173937362.png

汤果  初级技神

发表于 2021-4-7 18:39:53

这个赞~~~~
回复

使用道具 举报

rzegkly  版主

发表于 2021-4-8 07:37:29

万物互联的时代越来越近,喜欢
回复

使用道具 举报

rzyzzxw  版主

发表于 2021-4-8 09:08:41

必须赞赞
回复

使用道具 举报

hockel  初级技匠 来自手机

发表于 2021-4-8 12:30:21

Forgotten 发表于 2021-4-7 17:58
[md]# SIoT

SIoT是一个针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困 ...

老哥,稳
回复

使用道具 举报

Forgotten  版主
 楼主|

发表于 2021-4-8 17:27:53

回复

使用道具 举报

gray6666  初级技神

发表于 2021-4-9 08:38:34

打通最后一公里,这个厉害了
回复

使用道具 举报

微笑的rockets  NPC

发表于 2021-4-9 11:32:50

测试了一下,这个羊毛可以薅,给siot打call,给花生壳打call
回复

使用道具 举报

gray6666  初级技神

发表于 2021-4-21 16:36:40

HTTP需要认证为啥收费?
回复

使用道具 举报

Forgotten  版主
 楼主|

发表于 2021-5-14 10:23:34

gray6666 发表于 2021-4-21 16:36
HTTP需要认证为啥收费?

网络管理严格了吧,好像要花5块钱实名认证一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail