app和硬件交互的几种方式:zigbee,蓝牙,wifi、nfc交互、声波。https://www.jianshu.com/p/aaf963fd6ebe

手机访问硬件的几种模式:https://blog.csdn.net/zoomdy/article/details/51594977

https://blog.csdn.net/qq_33570093/article/details/81567758

App连接外设的几种方式:https://www.jianshu.com/p/df5804b556ce

WiFi(短距离):主要还是硬件可以通过wifi连接到路由,通过路由连接上互联网。app连接硬件,通过socket通信,通过socket设置ssid和密码,在各式各样的硬件上植入软ap,再利用手机连接软ap配置路由的ssid和密码, 然后智能硬件就可以自行连接了路由器了,也就实现了上网的功能.硬件中的软ap连接路由器后,通过我们自己的服务器处理,手机通过4G网络也能够控制智能硬件了.

WIFI模块各种常见的配网方式说明及其比较:https://blog.csdn.net/changyourmind/article/details/78631357

蓝牙:coreblooth框架。

zigbee技术--------http://www.sohu.com/a/111730833_467791、https://blog.csdn.net/u014293306/article/details/46278401

ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。

主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。

云端模式(远程控制):手机与服务器交互,服务器与硬件交互。

方式一 红外转发:通过智能主机可以直接控制空调、电视、机顶盒等通过红外线遥控的产品
方式二 射频控制:通过智能主机发射射频信号(RF315/433MHZ、Zigbee、蓝牙等)去控制带有接受信号的开关、插座、窗帘控制器、开窗器、门锁、等;同时主机也能将被动的接受自红外传感器、门磁、烟雾报警、煤气报警、漏水检测等传过来的射频信号,转为手机app的推送消息告诉用户信息。
方式三 Wifi连接:内置wifi 模块,与用户家里的路由器相连
方式四 云端服务器:拥有云端服务器,拥有98%红外码库、市面中的空调、电视、机顶盒等红外产品都无需学习直接调用红外码库、即可直接使用。

物联网通讯协议:https://blog.csdn.net/wang_walfred/article/details/48802439、http://1472011440.spaces.eepw.com.cn/articles/article/item/124455:

zigbee技术-------http://www.sohu.com/a/111730833_467791、https://blog.csdn.net/u014293306/article/details/46278401

zigbee网络攻防:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=16143&highlight=iot

ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。

主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。

ZigBee网内使用ZigBee协议进行通讯,数据到ZigBee网关(可理解为协调器+以太网转换)转换为TCP报文发送给指定IP指定端口,远程服务器需要建立一个TCP Server对端口号进行监听,接收到报文后即可提取有效数据写入数据库。

单纯zigbee是无法将数据发往以太网的,你需要做一个Zigbee / TCP 网关。具体结构可以是用廉价的ESP8266wifi模块,和Zigbee协调器之间通过UART相连,ESP8266负责接受Zigbee协调器的数据,并通过wifi发往具体的TCP Server地址。

传感器通过ZigBee组网再通过网关发送数据给数据库。

ZigBee使用那种协议?

IEEE802.15.4协议,这是一种低传送速率的无限PAN的协议。在标准化方面,IEEE802.15.4工作组主要负责制定物理层和MAC层的协议,其余协议主要参照和采用现有的标准,高层应用、测试和市场推广等方面的工作将由ZigBee联盟负责。

在物联网中,设备与设备的通信存在两类协议。第一类协议是接入协议(传输协议):负责子网内设备间的组网及通信。这类协议包括:Zigbee,WiFi,蓝牙。第二类协议是通信协议,负责通过传统互联网与服务器、APP或设备进行交换数据,包括HTTP,MQTT,websocket、XMPP、COAP。

zigbee和intenet远程监控系统的设计:https://wenku.baidu.com/view/09223b17240c844768eaee09.html

zigbee和服务器的数据传输原理:服务器端的数据接收模块主要由串口接收程序和tcp服务构成,主要通过串口协议、tcp\ip协议和zigbee网络建立连接,通过zigbee协调器和intenet网关获取zigebee网络监测的数据,进行适当的编码传给后台。

监控摄像头--------

#import <Foundation/Foundation.h>
#import "Cvs2ResEntity.h"#define SP_ERROR_MSG                        2001    //错误的消息体格式
#define SP_ERROR_PARAM                      2002    //错误的参数
#define SP_ERROR_NOT_SUPPORT                2003    //不支持的操作
#define SP_ERROR_VERITY_FAILED              2004    //目标鉴权失败
#define SP_ERROR_EPID                       2006    //EPID鉴权失败
#define SP_ERROR_TIMEOUT                    2009    //命令超时
#define SP_ERROR_ROUTE                      2010    //路由失败
#define SP_ERROR_DISPATCHER                 2018    //没有可用的分发单元#define MC_ERROR_INTER_PARAM                3002    //函数参数错误
#define MC_ERROR_REQUEST_TIMEOUT            3003    //请求超时
#define MC_ERROR_ADDRESS                    -3002   //服务器地址或端口不可达
#define MC_ERROR_CONNECT_TIMEOUT            -3003   //命令连接超时
#define MC_ERROR_ROUTE                      -3008   //路由失败
#define MC_ERROR_CUI                        -3009   //服务为开启
#define MC_ERROR_CONNECT_ADDRESS            -3010   //地址不可达
#define MC_ERROR_USER                       -3301   //用户不存在
#define MC_ERROR_USER_DISABLED              -3302   //用户被禁用
#define MC_ERROR_PASSWORD                   -3306   //密码错误
#define MC_ERROR_CHECK_TIMEOUT              -3309   //认证超时
#define MC_ERROR_ROUTE_CUI                  -3310   //路由失败
#define MC_ERROR_NO_CUI                     -3503   //没有在线的用户接入服务
#define MC_ERROR_REDIRECT_CUI               -3504   //没有支持重定向的用户接入服务
#define DC_ERROR_DATA_TIMEOUT               -4005   //数据通道请求超时
#define DC_ERROR_CONNECT                    -4006   //连接错误
#define DC_ERROR_TCP_SEND                   -4007   //TCP发送出错
#define DC_ERROR_TCP_RECV                   -4008   //TCP接收出错typedef enum // 云台的转动的方向
{kCvs2PtzUp = 0,kCvs2PtzDown,kCvs2PtzLeft,kCvs2PtzRight,
}Cvs2PtzTurnDirection;@class Cvs2VideoView;
@protocol MCHelperDelegate;@interface MCHelper : NSObject@property (nonatomic, readonly) NSString *version;
@property (nonatomic, assign) id<MCHelperDelegate>delegate;/***  @brief              连接服务器**    @param     address     地址* @param     usPort      端口* @param     userName    用户名*    @param     password    密码* @param     epid        epid*   @param     fixedAddr   是否开启穿透网闸**  @return             返回的错误码 0表示登录成功*/
- (NSInteger)login:(NSString *)addressport:(unsigned short)usPortuser:(NSString *)userNamepsd:(NSString *)passwordepid:(NSString *)epidfixedAddr:(BOOL)fixed;/***   @brief 退出服务器*/
- (void)loginOut;/***   @brief 获取当前服务器下所有的设备, 确保之前已经调用了fetchDomainNode,获取成功以后可以在rootDomain的childrenArray集合中查找*          这个函数会去发网络远程命令,一般只需要调用一次,除非想刷新资源.*  @param     pDomain     域节点**   @return    错误码; 0表示成功*/
- (NSArray *)fetchPeerUnits:(NSInteger *)error;/*** @brief 获取摄像头资源,确保之前已经调用了fetchDomainNode和fetchPeerUnits。如果参数peerUnit为空,则获取所有的设备。*          获取成功以后,如果想要查找某个摄像头,应该用摄像头的PUID和cIdx在对应的Cvs2PeerUnit实例的childrenArray集合中查找**  @param    pPU     可为NULL或者域下某个具体的设备对象**   @return    错误码; 0表示成功*/
- (NSInteger)fetchCameras:(Cvs2PeerUnit *)peerUnit;/*** @brief 单独获取指定的PUID的设备和摄像头资源**  @param     puid*  @error  错误码*  @param   puid**  @return    Cvs2PeerUnit 返回的Cvs2PeerUnit需要上层调用者释放。*/
- (Cvs2PeerUnit *)fetchOnePU:(NSString *)puid error:(NSInteger *)err;/***   @brief 渲染视频接口.**   @param     puid    视频资源的PUID*  @param     ucIdx   视频资源的index* @param     type    流类型 0:高清 1:标清 注意:设备支持高清流,但标清不一定支持。* @param     renderView  播放窗口, renderView必须是Cvs2VideoView类的实例.** @return    0 成功*/
- (NSInteger)rend:(NSString *)puid index:(unsigned char)ucIdx streamType:(NSInteger)type target:(UIView *)renderView;/***   @brief 停止视频*/
- (void)stopRend;/***   @brief 转动摄像头,设备必须有云台才能转动** @param     pVideo  摄像头对象*  @param     direction   转动的方向** @return    0表示成功*/
- (NSInteger)ptzStartTurn:(Cvs2ResEntity *)pCamera direction:(Cvs2PtzTurnDirection)direction;/**s*  @brief 停止转动摄像头**   @param     pVideo  摄像头对象** @return    0 表示成功*/
- (NSInteger)ptzStopTurn:(Cvs2ResEntity *)pCamera;/**s* @brief 移动云台至预置位,设备必须有云台才能转动**   @param     pVideo  摄像头对象** @return    0 表示成功*/
- (NSInteger)moveToPresetPos:(uint)pos videoRes:(Cvs2ResEntity *)pCamera;- (UIImage *)currentImage;/**s*    @brief 录制当前正在播放的视频.**  @param     path文件全路径,需带上后缀如.mp4**   @return    0 表示成功*/
- (NSInteger)startRecord:(NSString *)path;
- (void)stopRecord;/**s*    @brief 抓拍.**   @param     path文件全路径,需带上后缀如.png**   @return    0 表示成功*/
- (BOOL)snapshot:(NSString *)path;
@end/***   @brief 代理类*/
@protocol MCHelperDelegate <NSObject>/***    @brief 这个代理方法是执行在子线程中,主要是侦测连接服务器,接受数据出错时返回的错误码**   @param     error   返回的错误码*/
- (void)connectError:(NSInteger)error;@end

iOS之app直接和硬件交互、wifi、红外、蓝牙、zigbee、监控摄像头相关相关推荐

  1. Python语言学习:Python语言学习之硬件交互应用(arduino、树莓派等)相关的简介、案例应用之详细攻略

    Python语言学习:Python语言学习之硬件交互应用(arduino.树莓派等)相关的简介.案例应用之详细攻略 目录 Python与硬件交互应用 1.适合运行python的嵌入式硬件系统 1.1. ...

  2. iOS原生App与H5页面交互 离线缓存 笔记

    //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法- (BOOL)webView:(UIWebView*)webView shouldStartLoadW ...

  3. iOS开发 App内自动连接指定Wi-Fi

    目前很多智能设备配置网络的时候都有app内部直连Wi-Fi的功能(iOS11之前需要用户跳到Wi-Fi设置界面去连),iOS11后苹果提供 NEHotspotConfigurationManager ...

  4. iOS直播app原理

    一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通 ...

  5. iOS:app直播---原理篇

    [如何快速的开发一个完整的iOS直播app](原理篇) 转载自简书@袁峥Seemygo:http://www.jianshu.com/p/7b2f1df74420 一.个人见解(直播难与易) 直播难: ...

  6. 开发一个完整的iOS直播app必须技能

    今年,直播行业火了,当然也诞生了一大批网红,甚至明星也开始直播了,因此现在都要搞直播了!由于第一次接触,花了很多时间了解直播,目前整理了直播的原理(因为项目汇报的需要就整理了一下),现在只是展示一下从 ...

  7. (转)【如何快速的开发一个完整的iOS直播app】(原理篇)

    原文链接:https://www.jianshu.com/p/bd42bacbe4cc [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](原理篇) ...

  8. 如何快速的开发一个完整的iOS直播app(原理篇)

    本文转自袁峥Seemygo的博客分享.觉得很不错.特意粘来给大家分享. 1.一个完整直播app功能(来自落影loyinglin分享) 1.聊天 私聊.聊天室.点亮.推送.黑名单等; 2.礼物 普通礼物 ...

  9. 如何快速开发一个完整的ios直播app

    如何快速开发一个完整的iOS直播app 一.个人见解(直播难与易) 直播难:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形 ...

最新文章

  1. 代码质量 重构 代码鸡汤
  2. 误码率matlab怎么计算,Matlab 仿真(7,4)汉明码 传输误码率
  3. 你需要简单了解JVM中的内存长什么样子
  4. MySql查询某列是否包含汉字
  5. linux 系统启动级别,LINUX系统启动级别介绍与解释
  6. 程序包管理之编译安装
  7. 国产在线三维云CAD:CrownCAD (在线建模CAD软件)
  8. java中怎么画弧线加粗,CAD中怎么把一段线、曲线或圆弧加粗
  9. 7-16 新浪微博热门话题 (30 分)
  10. 谷歌翻译 onebox 升级
  11. iOS10软件崩溃 Xcode8崩溃 打印/字体等问题汇总 韩俊强的博客
  12. 修改MTK平台Android P系统支持系统A/B分区升级
  13. iOS Swift 将公历日期转换为中国农历
  14. 手机epub阅读软件
  15. cognos 是什么?
  16. 二进制安装k8s v1.22.8集群
  17. 我的NVIDIA开发者之旅-Jetson Nano 2gb教你怎么训练模型(完整的模型训练套路)
  18. 如何系统地做产品规划(极简版)
  19. 2005年5月信息系统监理师
  20. 2-15 微信小程序array数据类型(附带方法解析)

热门文章

  1. 【C++ 程序】 sin(x)的泰勒展开
  2. androidstudio连接网易MUMU模拟器
  3. 第二课 如何在WINDOWS环境下搭建以太坊开发环境
  4. 【教程】用Python破解WiFi
  5. Dojo Learning: Dojo.data
  6. 只选对的,不选贵的,近期热门显卡导购
  7. 如何准备阿里的社招技术面试
  8. 怎么用计算机发出弹奏的声音,计算机发出刺耳的声音怎么了?[详细介绍]
  9. 滚动条响应鼠标滑轮事件实现上下滚动的js代码
  10. Java使用JestClient操作ElasticSearch