手机app连接智能硬件配置wifi方案

市面上已经有的关于手机app配置智能硬件主要有以下几种,
1、手机连接智能硬件的软ap,再配置
这个方式相信没有难度,手机连接上了智能硬件后,手机app和智能硬件就可以建立socket通信,然后两者之间就可以进行数据的交互,不管是设置还是传输都没有问题了。
接着手机app配置智能硬件需要连接的路由的ssid和密码,然后智能硬件就可以自行连接路由了。再接着,手机连接路由,智能硬件也连接着路由,至此以后两者就可以交互了。如果加上互联网上的服务器的话。手机通过4g网络也可以控制智能硬件。
2、 神奇的smart config
这种方式我最早知道的应该是出自TI的单片机加wifi模块之中,手机端app只需要输入ssid和密码,然后广播udp包。接着智能硬件就可以知道需要连接的路由和密码,然后就可以主动去连接路由,接着就和1中一样。
其实所谓的smart config的原理也很简单,首先app端发送带有ssid和密码的经过加密的udp广播包。其次wifi模块拥有monitor模式,也就是所谓的监听模式,可以抓取空中的包,当然,wifi必须扫描出当前的可以连接的所有路由处于哪个信道,并对这些信道分别监听,然后收到了经过加密的app端发送的包后,解密出来就是ssid和密码,接着可以通过wpa_supplicant进程来进行连接路由。
3、声波配置
这种方式现在应用挺广的,支付宝,微信等都有应用,其主要的原理就是手机放出经过编码加密的声音,智能硬件通过麦克风录音,解码解密,然后配置成功。接着就和上述基本类似
一个简单的配置可以通过很多方式,最终的目的不约而同,就是为了使用户更方便地体验产品。加上APP上的人性化设置,让用户体验十分舒服。相比而言,后面两中方式更加值得拥有,也就是所谓的一键配置功能。

Git上传过大文件时错误处理

问题:使用gogs配置的git服务器,git提交时提示文件超限

解决:通过配置nginx的文件上传限制

http {
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 100m;     //配置限制100m

 

React Native启动 android例子的问题

Mac OX

1、没有找到 ANDROID_HOME

配置环境变量 vi ~/.bash_profile添加:

export ANDROID_HOME=/Users/liwf/Library/Android/sdk

使生效:source ~/.bash_profile

2、failed to find Build Tools revision 23.0.1

>cd  /Users/liwf/Library/Android/sdk/tools

查看:

     >android list sdk -a

   安装

    >android update sdk -a -u -t 12

3、No connected devices!

原因:没有启动虚拟机,先启动虚拟机即可 (我使用的Genymotion)

React Native试用中遇到的一些问题

MAC OS

1、问题:NSInternalInconsistencyException: bundleURL must be non-nil when not implementing loadSourceForBridge

原因:因为系统开了ss代理工具,关闭即可

2、问题:Cannot find entry file index.ios.js in any of the roots…

解决方案:
rm -rf node_modules  (删掉原来的重新来一遍即可)
   npm install
   react-native run-ios

3、问题:Could not connect to development server.  (ERROR Error watching file for changes: EMFILE)

解决:安装 brew install watchman

4、antd-mobile does not exist in the module map (react-native)

解决方法:[“import”, { “libraryName”: “antd-mobile”, “style”: “css” }]

改成:[“import”, { “libraryName”: “antd-mobile”}]

5、”:CFBundleIdentifier”, Does Not Exist

解决:react-native upgrade

6、no bundle url present

解决:(由于开了代理服务器SS),关闭SS

Sublime Text 3配置React IDE

 

安装Package Control:

一、自动安装(亲测可用)

使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码:

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())

如果顺利的话,此时就可以在Preferences菜单下看到Package Settings和Package Control两个菜单了。

二、手动安装(未测试)

可能由于各种原因,无法使用代码安装,那可以通过以下步骤手动安装Package Control:

1.点击Preferences > Browse Packages菜单

2.进入打开的目录的上层目录,然后再进入Installed Packages/目录

3.下载Package Control.sublime-package并复制到Installed Packages/目录

4.重启Sublime Text。

安装React Native 需要用到的插件

React Native 开发推荐的一些插件:
  • ReactJS:支持React开发,提供JSX代码提示,高亮显示,ReactJS官方介绍
  • Emmet:前端开发必备,能够存储和重用开发代码块,Emmet介绍
  • Terminal:在Sublime中打开终端并定位到当前目录,(快捷键cmd+shift+T
  • react-native-snippets:react native 代码片段,react-native-snippets官方介绍
1> 打开Package Control:点击菜单栏Preferences-->Package Control 或者使用快捷键 Ctrl + Shift + T
2> 输入install选中:Package Control:install package
3> 等待几秒,在弹出的终端中输入想要安装的插件

 

websocket使用nginx作为反向代理

需要nginx作为websocket的反向代理,没有nginx反向代理时候没有问题,通过nginx反向代理后会报400错误,查后台调试信息:

tornado.general – DEBUG – Can “Upgrade” only to “WebSocket”.

通过分析原来是需要nginx做如下配置:

upstream wsbackend {
server 127.0.0.1:10003;
}

server {
listen 3000;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

# location / {
# root html;
# index index.html index.htm;
# }

location / {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
}

如果有多层反向代理的话需要在每一层都加上该信息!