|
|
导航: |
论坛 -> 移动应用开发
斑竹:flyers,iamdream |
|
作者: |
|
2018/12/10 13:40:59 |
标题: |
[分享]中移动[OneNet IOT]物联网平台智能控制插座(附送HTTP API封装源码) |
浏览:3400 |
|
加入我的收藏 |
楼主: |
[分享]中移动[OneNet IOT]物联网平台智能控制插座(附送HTTP API封装源码)
这个把月,捣腾了一个利用OneNet物联网平台控制的智能开关。 1、硬件:AC220v转DC5电源模块、DC5v转DC3v IC、5v继电器模组、ESP8266芯片 2、ROM:刷入NodeMcu,采用Lua脚本编写 3、连接:MQTT协议接入OneNet平台 4、采集与控制:OneNet平台HTTP API 5、模式: 1)初始化时候采用AP模式,状态灯开始以0.5秒频闪; 手机WiFi连接以Setup-xxx的SSID,免密码; 连接后,网页访问:192.168.1.1后,输入可以上网的WIFI SSID及密码。 2)系统由AP模式转为终端模式,尝试连接输入的WIFI,连接成功后状态灯熄灭 配置完成,可以通过OneNet控制。如果有微信公众号,亦可在公众号中控制 3)单独使用:如果不想互联网控制,可以长按“Reset”按钮6秒后,系统恢复 到AP模式。在192.168.1.1网页的下方,有本地控制功能按钮。
碰到的难点: 1、本来编程就是一个爱好,一句:聪明的程序员用Delphi,所以只会Delphi! 但捣腾的时候,您必须要学习: Lua脚本语言 WEB前端框架(轻量的CSS框架:spectre、milligram;轻量的JS框架:zepto) HTML语法
2、ESP8266运行内容好像才32k,在用HTTP SERVER时很容易爆内存重启 代码必须检查清楚,而且精炼
3、OneNet的MQTT与一般开源MQTT SERVER不同,它不能在后台手动创建TOPIC, 但可以在设备端用MQTT加入到一个TOPIC时,自动会创建。 另外MQTT上传数据时候TOPIC必须使用系统的:$dp 这样数据才会关联到创建的“数据流”中反映出状态。 切记:MQTT TOPIC 不是 OneNet的“数据流”
为什么选择OneNet呢? 无他,对于个人来说免费(会有设备上限,但对比百度来说松动很多)。
为什么采用双模式方式切换(AP和终端模式)? 1、市场上有很多是采用高通方案:IOT设备上电后,手机APP直接往广播或组播地址发WIFI的SSID和密码。IOT设备就去截获,然后登陆。但此模式与路由器会产生兼容问题,在 转发广播包/或组播包会不全导致加入不成功; 2、IOT设备永远在终端模式,不能本地控制。部分厂家做到本地控制都是通过广播/或 组播截获实现,兼容性参考第1点。
----------------------------------------------
- |
作者: |
|
2018/12/10 13:41:58 |
1楼: |
废话少说,上图:
此帖子包含附件:
大小:442.4K |
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:42:23 |
2楼: |
内部:
此帖子包含附件:
大小:365.6K |
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:43:33 |
3楼: |
AP模式下HTTP SERVER输出的控制页面:
此帖子包含附件:
大小:105.2K |
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:51:19 |
4楼: |
中移动OneNet平台HTTP API控制代码:
unit Main;
interface
uses NE.OneNet, //引用单元 ... protected //定义回调 procedure OnOnline(const AisOnline: Boolean); procedure OnDebugMsg(const ADebugMsg: string); end;
var MainForm: TMainForm;
implementation
{$R *.dfm}
//回调 procedure TMainForm.OnOnline(const AisOnline: Boolean); begin Button2.Enabled := AisOnline; Button3.Enabled := AisOnline; end;
procedure TMainForm.OnDebugMsg(const ADebugMsg: string); begin if not ADebugMsg.IsEmpty then Memo1.Lines.Add(ADebugMsg); end;
//输入APIKey和DeviceID procedure TMainForm.FormCreate(Sender: TObject); begin OneNet.APIKey := 'xxxxxxxxx'; //<--输入您申请的APIKey(可以是设备的,亦可以是全局的) OneNet.DeviceID := 'xxxxxxx'; //<--输入您的设备ID //关联事件 OneNet.OnOnline := Self.OnOnline; OneNet.OnDebugMsg := Self.OnDebugMsg; end;
procedure TMainForm.Button1Click(Sender: TObject); begin OneNet.Online; end;
procedure TMainForm.Button2Click(Sender: TObject); begin OneNet.DeviceData; end;
procedure TMainForm.Button3Click(Sender: TObject); begin OneNet.RunCmds('xxxx', 'xxx'); end;
使用就这么简单
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:53:40 |
5楼: |
附送HTTP API封装源码及DEMO
封装单元:NE.OneNet
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:56:55 |
6楼: |
检测设备是否在线:
此帖子包含附件:
大小:47.8K |
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:57:11 |
7楼: |
控制命令下发:
此帖子包含附件:
大小:67.6K |
----------------------------------------------
-
|
作者: |
|
2018/12/10 13:57:26 |
8楼: |
本来还有个视频,但是。。。算了。
----------------------------------------------
-
|
作者: |
joman (joman) |
▲▲▲▲▲ |
-
|
普通会员 |
|
2018/12/10 14:44:57 |
9楼: |
不错😊
----------------------------------------------
DelphiWeb开发方案(开源):https://gitee.com/pearroom/DelphiWebMVC
|
作者: |
|
2018/12/10 15:06:55 |
10楼: |
good,软硬件结合
----------------------------------------------
-
|
作者: |
xjia (xjia) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2018/12/10 16:07:41 |
11楼: |
不错,感谢分享。 btw: 想不通为什么那么多的设备都不支持断网(互联网)使用
----------------------------------------------
-
|
作者: |
|
2018/12/10 16:10:26 |
12楼: |
不错
----------------------------------------------
-
|
作者: |
|
2018/12/10 16:53:48 |
13楼: |
不错....
----------------------------------------------
delphi|vue|golang hnysoft|hnyerp+mes+srm
|
作者: |
|
2018/12/10 17:32:30 |
14楼: |
不错,这小东西有点意思
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
|
作者: |
|
2018/12/10 18:12:07 |
15楼: |
@xjia 想不通为什么那么多的设备都不支持断网(互联网)使用
如果单纯从技术的角度来说,就算家里路由断网,也是可以局域网控制的,并不需要一定要连接互联网。但是从商业角度来说,各个厂家都在打造自己的生态圈,你要控制,就必须安装他们的APP。APP内有一堆广告推送的收入,另外还可以捆绑了用户。明白没。 技术角度解决: APP发起控制命令,首先先判断网络是否正常,如果网络正常则云平台方式操作,如果网络异常,将采用广播/组播方式发送控制命令。 另外IOT硬件也必须实现在网络异常的情况下,检测广播/组播发过来的命令。
----------------------------------------------
-
|
作者: |
bjlg (蓝天) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2018/12/10 20:46:40 |
16楼: |
@ nickemma 是啊,就像是京东那个他们说的和实际的就不一样
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
|
作者: |
|
2018/12/11 10:29:39 |
17楼: |
这东西好,可以扩展下去~
----------------------------------------------
-
|
作者: |
|
2018/12/11 11:20:41 |
18楼: |
电弧 吸死 功耗。另外可以做网页版不必。。手机APP 框个浏览器就行 8266 很好的。
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
|
2018/12/11 13:05:16 |
19楼: |
@ keymark (keymark) 您说的话有点精简,理解不了。
1.电弧?吸死? 你想说的是不是继电器如果带负载太大的时候会产生电弧反馈?导致继电器永远吸死,无法再操作呢?如果这样可以加隔离元件。另外我的继电器模组输入端带光耦隔离保护的。 还有,也考虑过大负载会出现问题,所以我设计是控N,而不是控L。
2.功耗 如果不计算原件损耗,5v电压时候整体才100ma左右,约等于0.5w。一天0.5w*24/1000,等于0.012度电。
3.网页版 页面只是初始化时候使用,可以免app。而且带本地离线(互联网)操作。个人喜欢
----------------------------------------------
-
|
作者: |
|
2018/12/11 13:11:56 |
20楼: |
@blueflag (昆了) 如果有时间,将会加入计量模块和计划任务。
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:23:40 |
21楼: |
更新:智能插排1
此帖子包含附件:
大小:222.3K |
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:23:51 |
22楼: |
更新:智能插排2
此帖子包含附件:
大小:348.0K |
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:24:15 |
23楼: |
更新:APP控制界面1
此帖子包含附件:
大小:59.7K |
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:24:26 |
24楼: |
更新:APP控制界面2
此帖子包含附件:
大小:71.9K |
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:24:51 |
25楼: |
更新:AP模式下加入WIFI的页面
此帖子包含附件:
大小:172.8K |
----------------------------------------------
-
|
作者: |
|
2018/12/19 12:28:20 |
26楼: |
虽然到捣腾一下,但是也耗时两个多月,现在已经接近量产的产品了。
也做了几个插座给朋友使用(朋友用来控制鱼池、鱼缸的增氧水泵),效果非常满意。
----------------------------------------------
-
|
作者: |
aq031 (清风明月) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2018/12/29 14:04:47 |
27楼: |
不会电路, 楼主能说下, 怎么样入门吗
----------------------------------------------
-
|
作者: |
|
2018/12/29 14:25:35 |
28楼: |
不用懂电路,可以直接买点儿各种模块用用,比如红外模块(控制电视、空调)、继电器模块(控制各种开关)、wifi(蓝牙、zigbee)模块(可以遥控各种设备)、各种传感器模块(温度、气体、火焰等等),玩两下就上手了,剩下的就是通讯和管理了。 其实,大规模管理才是比较难的。
----------------------------------------------
Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!我去WC吐一会儿去!
|
作者: |
|
2018/12/31 11:57:01 |
29楼: |
楼主nickemma是本论坛软硬皆通第一人!
----------------------------------------------
-
|
作者: |
|
2018/12/31 12:31:23 |
30楼: |
有思想和创意,赞!!!!!!!!!!
----------------------------------------------
你梦我圆
|
作者: |
|
2018/12/31 21:32:37 |
31楼: |
楼主好厉害,软硬皆通,全面发展,这才是科研人员能够将思想转化成实际的基本功
----------------------------------------------
-
|
|