cnk700i 发表于 2019-4-25 09:30:48

精简下斐讯TC1固件

本帖最后由 cnk700i 于 2019-4-25 10:23 编辑


#备注
1. 排版不细调整了,如有问题可以去博客看。
2. 把某大佬的根据自己使用习惯做了些(没什么用的)精简,当作部署开发环境教程看吧。
: https://github.com/a2633063/zTC1 "zTC1"

***
#提醒回复用
并没有隐藏内容,如果觉得有用回复下帮忙顶贴。

**** Hidden Message *****
***
## 1. 改动说明 ##
基于原固件v0.10进行修改:
- 设定WIFI和MQTT设置直接烧录,懒得再装APP了
- 去掉UDP通信功能,只保留MQTT通信功能
- 去掉插座命名、定时功能,这块用Home Assistant来管理
- MQTT通信协议根据自己使用习惯进行了调整:调整topic、增加上线下线通知、使用qos
- 把编译的warning警告基本去掉了

> __WARING:因为精简掉UDP通信协议,使用上会造成不方便,精简带来的好处实际也不明显,请自行权衡。__

***
## 2. 编译环境 ##
使用docker,docker安装方法[传送门]。

- 拉一个python2.7的镜像
```bash
docker pull python:2-slim
```

- 启动容器并进入容器
```bash
#自己调整主机映射目录/home/mico;容器内工程目录设置为/workdir,可根据喜好调整,但注意后续命令也要调整。
docker run -it --name mico -v /home/mico:/workdir python:2-slim bash
```
> __DEBUG:后续进入容器可以用命令docker exec -it mico bash,更多docker命令介绍[传送门]。__

- 更新源、安装软件
```bash
#容器bash
apt update && apt install git wget lib32ncurses5
```
> __INFO:一个坑,不安装lib32ncurses5库编译会报"arm-none-eabi-gcc: not found"错误。__

- python bin
```bash
ln -s /usr/local/bin/python /usr/bin/python
```
> __INFO:一个坑,不设置软链接编译会报"/usr/bin/python: not found"错误。__

- 安装MiCo编译环境(mico-cube、MiCoder)
```bash
#容器bash
pip install mico-cube && \
cd /workdir && \
wget http://firmware.mxchip.com/MiCoder_v1.1.Linux.tar.gz && \
tar -zxf MiCoder_v1.1.Linux.tar.gz && \
rm MiCoder_v1.1.Linux.tar.gz && \
mico config --global MICODER /workdir/MiCoder
```
> __DEBUG:mico-cube是MXCHIP的MiCO项目开发管理工具包;MiCoder是MiCO编译和调试系统必须的工具软件包。__

***
## 3.编译固件 ##
- 创建一个空项目,名为TC1,自己开发则自定义
```bash
#容器bash
cd /workdir && \
mico new TC1 --create-only
```
> __INFO:命令执行完后,会在当前目录生成名称为TC1项目目录。__

- 添加mico-os组件
```bash
#容器bash
cd /workdir/TC1 && \
mico add https://code.aliyun.com/mico/mic ... e400ec54a06530dd476
```
> __INFO:需要在项目目录下执行。__

- 添加项目代码,代码目录在项目目录下的`项目同名目录`,/workdir/TC1/TC1,自己开发则自定义
```bash
#容器bash
git clone https://github.com/cnk700i/tc1_mqtt.git && \
mv tc1_mqtt/TC1 . && \
rm tc1_mqtt -r
```
> __DEBUG:下载zip解压后再拷贝进去也可以。__

- 设置WiFi及MQTT,修改项目代码main.h文件
```c
//自定义
#define CONFIG_SSID "wifi_ssid"               //WiFi名称
#define CONFIG_USER_KEY "wifi_password"         //WiFi密码
#define CONFIG_MQTT_IP "mqtt_ip"                //MQTT服务器IP
#define CONFIG_MQTT_PORT 1883                   //MQTT服务器端口   
#define CONFIG_MQTT_USER "mqtt_user"            //MQTT用户名
#define CONFIG_MQTT_PASSWORD "mqtt_password"    //MQTT密码
#define STATE_UPDATE_INTERVAL 10000             //功率上报间隔,单位ms
#define MQTT_CLIENT_SUB_TOPIC   "cmnd/%s"       //命令控制接收topic,%s代表名称,默认tc1_xxxxxxxxxxxx(xxx为mac地址)
#define MQTT_CLIENT_PUB_TOPIC   "stat/%s"       //状态信息topic,%s代表名称,默认tc1_xxxxxxxxxxxx(xxx为mac地址)
```

- 编译项目代码
```bash
#容器bash
#/workdir/TC1
mico make TC1@MK3031@moc
```
***
## 4.刷固件 ##
- 编译成功后的固件文件
- `/workdir/TC1/build/TC1@MK3031@moc/binary/TC1@[email protected]`,用于线刷
- `/workdir/TC1/build/TC1@MK3031@moc/binary/TC1@[email protected]`,用于OTA

> __INFO:主机映射目录/home/mico/TC1/build/TC1@MK3031@moc/binary内可找到固件。__

- 线刷方法见原固件教程的[固件烧录]
- OTA方法见原固件教程的[通信协议]
***
## 5.小结 ##
- MiCo开发平台比之前DC1用的ESPHome容易上手好多,搭建环境也简单些,遇到一些小坑还是比较快就解决了。
- C语言看着真的头大,又感觉到了被指针支配的恐惧,还好原固件作者代码的业务逻辑还是比较清晰,于是就简单地改一改。


: https://ljr.im/articles/docker-i ... g-nodered-practice/ "docker安装使用Node-RED实践"
: https://ljr.im/articles/the-four ... -from-entry-to-pit/ "docker从入门到入坑的四个阶段"
: https://github.com/a2633063/zTC1 ... 6%E7%83%A7%E5%BD%95 "固件烧录"
: https://github.com/a2633063/zTC1 ... 1%E5%8D%8F%E8%AE%AE "通信协议"


zyp0209 发表于 2019-5-10 21:28:52

作为一名一直以来的伸手党回复一下 :lol,感谢大神制作精简固件


建议增加配置NTP服务器的地方,且尽量使用自己的(大部分人的路由器应该都有NTP服务吧)或者阿里、腾讯的NTP服务器 【我自己测试编译通过,因为比较晚了没刷机,喜欢玩的可以参考试试,等明天有时间我自己刷机测一下】

附代码修改:
    main.h:在“STATE_UPDATE_INTERVAL”后增加一行“#define NTP_SERVERS "ntp1.aliyun.com,ntp6.aliyun.com,time1.cloud.tencent.com,time2.cloud.tencent.com,cn.ntp.org.cn"”
    user_rtc.c:修改程序逻辑,从“ NTP_SERVERS”内读取NTP服务器地址
附图:







再次强调,我只是测试编译通过了,还没刷,等明天有时间刷了试试,不喜勿喷。请自行评估风险。祝各位折腾愉快。 :lol

whxciotw 发表于 2019-4-25 09:50:08

大神又发帖子了,这波TC1给力!

[email protected] 发表于 2019-4-25 09:59:57

请问 大雕 HASS 可以跟手机APP 一样有定时或倒计时功能吗?

lff520520 发表于 2019-4-25 10:06:42

看看 感谢大佬提供相应教程

发表于 2019-4-25 10:09:46

亲,mico平台我一直没搞定,有空请教下:lol:lol

发表于 2019-4-25 10:10:57

貌似本贴就有环境搭建,厉害厉害,我来学习~

cnk700i 发表于 2019-4-25 10:16:27

[email protected] 发表于 2019-4-25 09:59
请问 大雕 HASS 可以跟手机APP 一样有定时或倒计时功能吗?

定时用自己做的插件,不过高版本插件用不了的。定点执行用自动化也够了。

cnk700i 发表于 2019-4-25 10:37:01

Jones 发表于 2019-4-25 10:10
貌似本贴就有环境搭建,厉害厉害,我来学习~

冏大准备开发什么新产品;P

发表于 2019-4-25 10:46:34

cnk700i 发表于 2019-4-25 10:37
冏大准备开发什么新产品

先学习下庆科芯片,产品还木有想好:D:D

killadm 发表于 2019-4-25 11:49:51

感谢分享,原版用了很长时间了,挺稳定
建议把主键单击逻辑也删了,用处也不大,接入ha还能多个按钮:lol
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 精简下斐讯TC1固件