目录
前言
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807
fly-iot飞凡物联专栏:
https://blog.csdn.net/freewebsys/category_12219758.html
未经博主允许不得转载。
博主CSDN地址是:https://blog.csdn.net/freewebsys
博主掘金地址是:https://juejin.cn/user/585379920479288
博主知乎地址是:https://www.zhihu.com/people/freewebsystem
视频演示地址
https://www.bilibili.com/video/BV1Ze411q7fS/
【fly-iot】(2):重启开源项目Actorcloud项目,切换MySQL数据库,使用flask deploy防守方,初始化数据库表
1,关于actorcloud项目,重新整理开源项目代码
原始项目: https://github.com/actorcloud/ActorCloud
项目都是采用 apache协议开源的。
之前的项目也是apache 协议开源的。
ActorCloud 是一个面向低功耗IoT网络,为企业提供一站式平台服务的物联网平台。ActorCloud 在安全可靠的基础上,为设备提供多种协议接入的通信能力,设备数据与消息流管理功能。
平台提供基础设备管理功能以连接、管理海量设备,实现设备的消息通信与数据采集持久化;集成规则引擎与数据可视化管理,灵活开放多种权限级别的管理、控制 API,通过 API 可快速开发上层应用,实现多端接入、设备远程控制。
IoT Hub:为终端上云建立可靠双向连接通道,进行认证鉴权、协议解析与消息路由;
设备管理:终端注册开通与生命周期管理,提供状态、故障、流量的不间断监控;
数据引擎:对获取的终端消息高速持久化、实时解析、规则事务处理与可视化展示;
应用使能:提供终端SDK、APP SDK,开放丰富的 REST API 接口,集成消息推送接口。
项目地址:
前端项目地址:
https://gitee.com/fly-iot/fly-iot-frontend
后端项目地址:
https://gitee.com/fly-iot/fly-iot-backend-python
docker-compose 项目地址:
https://gitee.com/fly-iot/docker-compose
2,安装驱动使用 pymysql==1.0.2
pymysql==1.0.2
对应的SQL 连接:
mysql+pymysql://root:mysqliot@mysql-iot:3306/fly_iot
即可
3,解决SQL 问题,切换 to_char 成 date_format
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1305, 'FUNCTION fly_iot.to_char does not exist')
[SQL: SELECT to_char(device_count_hour.`countTime`, %(to_char_2)s) AS to_char_1, sum(device_count_hour.`deviceCount`) AS sum_1
FROM device_count_hour
WHERE device_count_hour.`tenantID` = %(tenantID_1)s AND device_count_hour.`countTime` > %(countTime_1)s GROUP BY to_char(device_count_hour.`countTime`, %(to_char_3)s) ORDER BY to_char(device_count_hour.`countTime`, %(to_char_4)s)]
[parameters: {
'to_char_2': 'HH24:00', 'tenantID_1': 'PghAoyPJ9', 'countTime_1': datetime.datetime(2023, 12, 31, 16, 10, 37, 632378), 'to_char_3': 'HH24:00', 'to_char_4': 'HH24:00'}]
报错:FUNCTION .to_char does not exist(to_char与date_format)
4,解决判断数据库是否存在表
# https://database.guide/5-ways-to-check-if-a-table-exists-in-mysql/#:~:text=Another%20way%20to%20check%20whether%20a%20table%20exists,TABLE_TYPE%20LIKE%20%27BASE%20TABLE%27%20AND%20TABLE_NAME%20%3D%20%27Artists%27%3B
# SELECT * FROM `system_info` ;
table_check_sql = """
SHOW TABLE STATUS FROM fly_iot WHERE Name = 'system_info';
"""
is_exist = db.engine.execute(
text(table_check_sql).execution_options(autocommit=True)
).first()
然后替换不标准的字段:
db.String, 替换成 db.String(200),
db.Column(db.String) 替换成 db.Column(db.String(200))
db.Column(JSONB) 替换成 db.Column(db.JSON)
db.Column(JSONB, 替换成 db.Column(db.JSON,
5,PostgreSQL插件之TimescaleDB
TimescaleDB是一个开源的PostgreSQL的时序数据库扩展。基于PostgreSQL的强大能力,TimescaleDB能够提供跨时间和空间的自动分区以及完整的SQL支持。
TimescaleDB既像传统的关系型数据库一样支持全量SQL,又像NoSQL型数据库一样可扩展。它具有如下的优势:
简单易用
PostgreSQL原生支持的所有的SQL接口(包括二级索引,基于非时间的聚合,子查询,JOIN,窗口函数)
无需更改任何连接和使用PostgreSQL的客户端和工具
面向时间的功能、API函数以及优化
强大的数据保存策略的支持
链接:https://juejin.cn/post/7004641103320203301
3,总结
重启开源项目Actorcloud项目,并使用docker-compose启动成功。
原始项目: https://github.com/actorcloud/ActorCloud
整个项目不是我写的,我只是整理资料,然后折腾环境,把项目跑起来了。
使用docker-compose 把相关的前端,后端,数据库都跑起来了,但是目前还没有MQTT服务。
继续折腾,把修改的项目代码,和部署文件已经放到gitee上面开源了。
我是这个项目的搬运工,大家可以一起学习研究。项目都是采用 apache协议开源的。
之前的项目也是apache 协议开源的。
本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/108971807