玩一把物联网:手机控制电梯

疫情严重,不能出门,只能闲赋在家。如果出门,必带这几样东西,口罩,纸巾,小瓶洗手酒精。
每次按电梯按钮的时候,我都觉得电梯按钮上有亿万的病毒留在上面,按完后酒精洗一下手。后来我就又多带了一样东西,钥匙,专门按电梯用的。
后来我看到别人的电梯是这样的,我才明白这才是高手,根本不用手按,用脚踢。

几天前,好友Siko说有个做电梯的朋友想搞一个无接触操作的解决方案,问我和Troy能不能搞。就是用手机操作电梯,在小程序里实现,详细了解了一下,只要能发布消息到MQTT服务器上就可以了。搜了一下MQTT有JS版,这都不用后端,纯前端就能搞定的事情。立马答应下来,可以搞。
看着很简单的需求,真正搞起来的时候,还是很多坑的。

  1. uniApp生成二维码
    做一个电梯按钮面板,用户按键后自动生成二维码让电梯识别。开始用了Start很多的q310550690的uni-app-qrcode自定义组件,与uniapp深度整合,开发起来很好用,但是生成的二维码不能识别,怎么调参数也不行,就是不能识别。然后用了Sansnn的uQRCode,生成二维码,轻轻一扫就能识别。好用。
  2. MQTT.js发送message到MQTT服务器
    测试客户端:MQTT.fx
    提到MQTT服务器,肯定会找到Mosquitto这个软件,开源的,直接用它安装服务器,安装在阿里云服务器上有点问题,用客户端测试没问题,但是用MQTT.js已连接上websocket就占用巨量资源,浏览器直接崩溃。切换到腾讯云才可以。
    再就是阿里云有提供MQTT服务,包月200左右,挺贵的,但是服务挺稳定,推荐选择这个。而且阿里云官网有js版本的demo。直接copy过来就可以用。
    总结一下:目前MQTT前端(js)有两个开源的解决方案,一个叫Paho,就是调用mqttws31.js的那个,这个对小程序支持比较差,不推荐。另外一个就是MQTT.js。支持各种浏览器,微信小程序,支付宝小程序,百度小程序。。。。。。推荐用这个。
    中间还出了一个小插曲,因为前端一直调试不成功,请大神Troy搞了一个后端服务器发信息到MQTT服务器,前端调用后端API,发送用户按键信息到后端服务器,然后再发送信息到MQTT服务器,MQTT服务器再发送消息到电梯。
    后来发现是自己装的MQTT服务器有问题,换成阿里云的MQTT服务,重新纯前端发送消息。完美解决问题。
    微信小程序里的信息能够完美和电梯面板上的信息同步。按电梯按钮,电梯会把信息同步显示到微信小程序;按微信小程序的按钮,会同步显示到电梯上的显示面板。
    一点经验:同一个页面,MQTT连接用同一个客户端ID,重新进入页面或者监测到离线了,重新连接一下。离开页面,或者onHide的时候强制end一下:client.end({force: true})。
    贴一小段订阅的代码:

this.client.subscribe(topic, function(err) {
if (!err) {
console.log(‘订阅成功’);
} else {
console.log(‘订阅失败’);
}
});

看着很小的项目,折腾了一周。但是也积累了不少经验,再有这种小程序控制物联网的项目,应该得心应手,快速搞定。
像快递柜,共享单车,电动汽车。。。。。。可以想象的空间蛮大的。
最后来一张截屏:

540081584@qq.com
Tony老师@上海

如何搭建私有云

最近有个Team共享文档的需求。包括大文件,有个access文件超过500m。开始用百度网盘,发现只能分享,不能共享。试了几个其它网盘,广告超级多,但是都没有共享这个功能。
基于此,找了几个私有云程序。最后选择了可道云。完美解决云共享。

可道云

分享一下自己采坑经验:
1. NextCloud
支持 Windows, Mac, Linux, iOS, Android 平台,是OwnCloud的衍生版本,很不错的产品
2. Cloudreve
支持离线下载,支持可牛云等异地存储
3. Seafile
支持 Windows, Mac, Linux, iOS, Android 平台
4. DzzOffice-大桌子办公
可以与私有云存储合并管理
还有很多其它开源程序:Zdir, h5hai, Directory Lister, Tiny File Manager, Evoluted Directory Listing, 极简云盘, iBarn
每个产品都有自己的侧重点,解决不同方面的需求。
我的核心需求是共享。最后我采用的解决方案是可道云。
完美取代FTP
可批量上传,批量下载
不需要数据库
免费版有15人的限制

安装过程:
1. 准备服务器或虚拟主机
2. 下载安装程序并上传到服务器(https://kodcloud.com/download/)
3. 把域名指向服务器或虚拟主机的文件夹
4. 在浏览器输入域名一键安装

以上是我在搭建私有云的过程中踩过的坑
如果你也有类似的需求,可以联系我,帮你搭建私有云。

540081584@qq.com
Tony老师@上海

FlowPortal 连接服务器”127.0.0.1″失败

今天早上FlowPortal系统突然出现如下报错:
连接服务器”127.0.0.1″失败。
原因:
No connection could be made because the target machine actively refused it 127.0.0.1:1590

经过一系列查询发现是角色表里有重复值造成的,如果有重复值,不重启服务,系统可以继续使用,如果有重复值,服务无法启动。
说一下查询思路:

  • 是不是服务器down掉了?发现服务器可以登录。
  • 是不是FlowPortal服务死掉了?登录查看,果然是服务没启动。尝试手动启动,结果:失败,提示如下:

提示不太明确,貌似和其它服务有关系,尝试重启服务器。结果:服务并没有自动重启,再次尝试手动启动,还是报同样的错误。

电话咨询了FlowPortal专家Troy Cui,建议先看日志,然后根据日志找原因,发现问题及时联系。

查看服务器日志,到底发生了什么。
把过去3小时的,System和Application中所有的Error和Warning日志依次查看,并没有发现和FlowPortal有关的内容。

然后查看YZSoft的日志,有很多Waring,但都没有导致服务down掉的信息。

剩下的都是Information,有三条貌似有关系。

Create connection failed(data source:Default)!reason:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 – The specified network name is no longer available.)
Create connection failed(data source:Default)!reason:
Cannot open database “BPMDB” requested by the login. The login failed.
Login failed for user ‘sa’.
OUProvider BPMOUProvider.OrgProvider failed during loading! detail:
Loading BPMOU organization fialed, System exit, Reason
Object with the same name “5/GCM Actives” already exists.
看起来前两条比较严重,都是连接数据库出了问题。

  • 基于现在的查询,猜想:系统连接数据库出了问题,应该是程序出错了,丢失了什么文件,或者数据库出错了,不能打开。然后在错误的道路上一路狂奔,搞了接近6个小时。才发现方向错了。
  • 先验证数据库是否损坏,发现未损坏,完全可以打开。
  • 那说明FlowPortal系统出了问题,把数据和所有文件全部备份,然后重新装一下。
    重新建了个数据库,重新装,装完,发现可以打开。把老程序覆盖掉新程序,发现照样可以打开。不祥的感觉,程序没问题,数据库的问题。或者说数据的问题,那么多表,怎么找到错误的数据?
  • 下载了一个Data Delta,试用14天,然后对比两个数据库,先对比结构,发现没异常,然后对比数据,把能转移的表全部转移到新数据库。有主键的数据库都可以转移过去。转移完,发现数据库还是可以使用。

手动转移那些不包含主键的表。当转移到BPMSysOURoles时,突然报错。
删掉表BPMSysOURoles,系统可以正常访问。
查看BPMSysOURoles,里面竟然有两行同样的数据。所以系统报错。删掉其中一行,系统正常访问。突然想到前面的第三个报错,里面提示的就是表里面重复行的内容信息。

回顾整个过程,如果数据有重复行,不重启服务的情况下,是可以继续使用的。如果重启,则不能启动服务。这里面也包含了系统的一个Bug,维护角色的时候,系统应该提示,不能维护相同名称的角色。

总结:对系统日志要认真读,认真思考,然后再采取行动,有的放矢。

我使用过的聊天工具

今早突然不小心打开了Skype,看到仍有几个在线的好友。想了一下,应该有2年没打开Skype了。曾经,Skype占据了我社交生活的很大一部分。如今已经不登录了。
回忆了一下,曾经用过的聊天工具。
QQ,沿用至今
UC,昙花一现
MSN,上面都是同事 – 已经不存在了
Skype,上面都是同事 – 现在基本不联系了
WhatsApp,曾是跟欧洲人联系的工具
Wechat,现在成为生活工作的一部分

回顾我使用过的聊天工具的变迁过程,小小的自己就像被夹裹在历史的滚滚洪流中的一片小树叶,顺流而下。