Giter Site home page Giter Site logo

ztc1's Introduction

zTC1 a1版

斐讯TC1智能排插个人固件.

github无法打开查看的可在gitee查看:https://gitee.com/a2633063/zTC1

排插TC1因为服务器关闭,无法使用.

为此,开发供自己使用的FW及对应app,确保自己能够正常使用此排插.取名为zTC1.

注意:

​ TC1排插硬件分a1 a2两个版本,本固件仅支持a1版本.

​ a1 a2两个版本仅主控不同,除此之外其他无任何区别

​ 区分硬件版本见区分硬件版本

建立了个QQ群,有问题可以加入来讨论:459996006 点这里直接加群 备注 zTC1 群内有免费的mqtt服务器分享,实现远程控制功能!

也可以发送邮件给我:[email protected]

注意:所有咨询我文档已经写清楚的问题等等,都不再做任何回复

注意: 固件增加了激活码的功能,所以提供完整固件包 已经发现有人使用的我的固件在我未授权的情况下在pdd转转等上加价售卖,所以之后不再提供完整刷机包,仅提供ota包,需要完整包刷机的请加群索要,或是发送邮件给我并能够证明你不是店铺卖家也会单独提供给你完整固件

作者声明

注意: 本项目主要目的为作者本人自己学习及使用TC1排插而开发,本着开源精神及造福网友而开源,仅个人开发,可能无法做到完整的测试,所以不承担他人使用本项目照成的所有后果.

严禁他人将本项目用户用于任何商业活动.个人在非盈利情况下可以自己使用,严禁收费代刷等任何盈利服务.

有需要请联系作者:[email protected]

不定时重启断电!!! 已修复重启问题(0.10.3),此版本开始需要使用激活码才能使用,激活码原则上免费提供给个人使用.详细见激活码

特性

本固件使用斐讯TC1排插硬件为基础,实现以下功能:

  • 4个USB充电(3个普通和1个快充接口)(硬件直接实现,与软件无关)
  • 按键控制所有插口通断
  • 控制每个接口独立开关
  • 每个接口拥有独立的5组定时开关
  • ota在线升级
  • 无服务器时使用UDP通信
  • MQTT服务器连接控制
  • 通过mqtt连入homeassistant
  • app实时显示功率
  • 根据功率自动开关(未做此功能)

后续计划及当期正在处理的见TodoProject

目录

前言(必看)

区分硬件版本

开始

激活码说明

拆机接线及烧录固件相关

开始使用/使用方法

接入home assistant

其他内容

代码编译

通信协议

FAQ

文档更新日志

前言(必看)

  • 除非写明了如果你不是开发人员,请忽略此项之类的字眼,否则,请一个字一个字看清楚看完整后再考虑动手及提问!很可能一句话就是你成功与否的关键!
  • 烧录固件需要专用的烧录器:支持swd的jlink烧录器,目前已知便宜的价格为不到20元包邮.(本人不做烧录器的售卖,所有提供的链接或推荐都为第三方卖家,和本人无关).
  • 使用此固件,需要app端配合,见SmartControl_Android_MQTT.
  • app只有android,因ios限制,本人不考虑免费做ios开发.(不要再问是否有ios端).

虽然没有ios端,但固件支持homeassistant,可以使用安卓APP配置完成后,连入homeassistant后,使用ios控制. APP主要仅为第一次使用配对网络及配置mqtt服务器时使用,之后可以用homeassistant控制不再使用app.

如果你不知道什么是mqtt或homeassistant,所有有关的内容可以跳过.

如果你有任何问题,可以直接在此项目中提交issue,或给我发送邮件:[email protected],邮件标题中请注明[zTC1].

区分硬件版本

硬件版本在外包装底部,如图所示:

hardware_version

如果没有包装,只能拆开分辨,如图,左侧为不支持的a2版本,右侧为支持的a1版本

a1_a2

开始

整体流程如下:拆开TC1,将固件/烧录器/pc互相连接,在pc运行烧录软件进行烧录,烧录固件.

烧录完成后,首次使用前配对网络并配置mqtt服务器,之后就可以使用了.

激活码说明

为防止被不良商用,增加了必须使用激活码激活的功能.对于一般个人申请激活码限额免费获取

自助获取激活码

激活方式见开始使用中的激活

拆机接线及烧录固件相关

固件烧录

烧录固件完成后,即可开始使用

开始使用/使用方法

开始使用

接入home assistant

homeassistant接入

其他内容

代码编译

此项为专业开发人员准备,如果你不是开发人员,请跳过此项

TC1使用的主控为EMW3031,基于MiCO(MCU based Internet Connectivity Operating System)开发.MiCO简介点这里

需要按照官方说明才能保证此项目能够编译成功:

  1. 安装MiCO Cube编译工具
  2. 配置MICoder IDE环境
  3. 配置Jlink下载工具
  4. check out 此项目,按照从一个现有的 Git 仓库克隆导入确认项目编译/下载正常

通信协议

此项为专业开发人员准备,如果你不是开发人员,请跳过此项

所有通信协议开源,你可以自己开发控制app或ios端

通信协议

FAQ

FAQ

Stargazers over time

Stargazers over time

文档更新日志

20200506

修改文档图库地址

20191224

增加FAQ跳转链接

2019年10月10日

更新文档适用于v1.0.2版本固件:通信协议、homeassistant接入

2019年9月23日17:18:10

更新文档适用于v1.0.0版本固件:开始使用、通信协议、homeassistant接入

ztc1's People

Contributors

a2633063 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ztc1's Issues

修改TC1名字问题

通过UDP指令发送
publishMessage String -> {"name":"三楼房间","mac":"d0bae463c9a0"}
硬件返回数据:
{
"name" : "zTC1_C9A0",
"mac" : "d0bae463c9a0"
}
无法修改name,请问是插座的name是不允许修改的吗?

功率显示不准确,而且还会一直变化

我这边刚刷的固件最新版本,手机app端也是最新版本,刷完固件后目前发现功率显示不准确,一直在变化,不插设备的时候显示2.4,一会变成3.2,一会儿又变,插上设备显示也是不准确。是我在刷固件的时候出的问题吗?还是哪里问题?求指教

nmap扫描插排地址导致插排重启

固件版本(必填):v1.0.0

App版本(与app控制有关时必填):

Android版本(与app控制有关时必填):

是否使用服务器(必填):
路由器搭建内网的mosquito mqtt server

问题描述(包含复现issue方式):

无聊尝试nmap扫描插排地址,结果nmap运行过程中,插排断电重启

复现:对插排ip使用nmap必复现 nmap 192.168.1.105

如果作者大大觉得这问题太无聊没有修复的价值就Close吧)

膜大佬给设备开发固件 tql

配置MQTT服务后,如果MQTT服务器短暂时间失联,则会永久不能连MQTT服务

固件版本(必填):0.10.4 升级1.0.2

App版本(与app控制有关时必填):最新

Android版本(与app控制有关时必填):10

是否使用服务器(必填):是

问题描述(包含复现issue方式):配置MQTT服务后,如果MQTT服务器短暂时间失联(网络故障或者是mqtt服务重启),则会永久不能连MQTT服务,需要使用android app再次配置刷新使用mqtt服务才能连上。

能否定时检测mqtt状态,连接不正常就重连

  • 固件版本(必填):v1.0.2

  • 是否使用服务器(必填): 使用mqtt

  • 问题描述(包含复现issue方式):

    不知为何,mqtt服务器上过一段时间会出现invalid message,
    然后需要重启mqtt服务, 并手动断电重启tc1排插 (就是重新连接mqtt服务器,固件貌似不会自动重连)方能解决问题。
    所以希望大佬能加上自动重连功能,辛苦了!

固件没有发布power和total_time信息

固件版本(必填):v1.0.2

App版本(与app控制有关时必填):
v0.12.2
Android版本(与app控制有关时必填):
android9/miui 11
是否使用服务器(必填):
本地openwrt mosquito mqtt server
问题描述(包含复现issue方式):

如题。app中不显示功率和开机时间。我自己写的一个简易的mqtt client demo显示,固件会定时发出插座信息的消息,但是不再像之前版本每隔几秒发出功率和开机时间的信息。

通过手动发布这两个字段的查询命令,可以正确返回字段。

固件为刚刚从app设置中升级

Screenshot_2019-10-08-22-47-26-080_com zyc zcontrol

MQTT服务器地址长度限制

固件版本(必填):所有

App版本(与app控制有关时必填):无关

Android版本(与app控制有关时必填):无关

是否使用服务器(必填):是

问题描述(包含复现issue方式):过长都mqtt地址配置失败。看起来是接收数据的时候接收不完整。
至少百度云都mqtt地址超长了,域名+端口号长度37字符

OTA升级,废了

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):0.10.4 升级1.0

App版本(与app控制有关时必填): 新版APP

Android版本(与app控制有关时必填): ANDROID 9, EMUI 9.1

是否使用服务器(必填):
使用自己的MQTT服务器
问题描述(包含复现issue方式):
手机在外面(非局域网),通过APP能正常显示开关状态,用的是新的APP,勾选了里面的使用旧版通信协议,然后看到有固件更新,点了一下,显示1分钟左右能完成,然后等好长时间,刷新,无法更新开关状态。回家发现开关插口全掉,指示灯不亮,按logo重插无反应。上次好像也是因为手贱点OTA升级崩掉的,OTA升级还是不稳定。上次那个拆开重刷,接JLINK指示灯有反应,能听到继电器动作的声音,但是刷玩还是起不来。估计跟上次一样,砖了,跪求救砖方法,已有两个砖头了。

掉ip

固件版本(必填):v1.0.0

App版本(与app控制有关时必填):v0.11.6

Android版本(与app控制有关时必填):9

是否使用服务器(必填):否

问题描述(包含复现issue方式):更新固件到1.0.0版本后出现与路由器断连的问题,ztc1从路由器设备列表消失,导致无法控制,即使重启路由器ztc1仍然连接不上路由器,初步考虑不是路由器的问题,出现该问题只能重新插拔tc1的插头才能重新连接路由热点,路由器就放在插座旁边,与信号强度无关。刷完机后我从未拔过tc1插头关过机,该问题仅在v1.0.0版本出现,之前的版本从未出现该问题,故考虑是固件的问题。

复现方法:开机几十小时后就会出现

ota升级不了

APP版本0.8,固件是0.9。点击升级更新能检测到0.91点升级以后没有升级进度什么的就看到tc1灯闪几下。用APP检查结果一样还是0.9好像没有升级一样。是我操作问题还是怎样?

断网之后强电口全掉

请先搜索确认没有重复后再提交issue

固件版本:0.10.3

App版本:

Android版本:

问题描述(包含复现issue方式):断网或者网络不通,强电口全掉,这种思路不合理,如果它的智能部分(脑子)坏掉了,至少能当个普通插排用吧,好比电动车没电了,至少还要留一个脚踏板,当个普通自行陈凑活着用,总不能下来推着走吧。之前无意中不知道操作什么了,强电口全掉,导致插在强电口的路由器关机了,好了,死循环了,路由器现在只能插在墙壁独立插口了。
昨天一个TC1不知道怎么回事,现在只有USB口有电,手机APP里面查看不了状态,路由器里也看不到它的IP地址,按那个状态指示按钮没反应,很可能是wifi模块烧坏了。

ota升级之之后原配网信息消失

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):0.10.4 升级1.0.2

App版本(与app控制有关时必填):最新

Android版本(与app控制有关时必填):10

是否使用服务器(必填):是

问题描述(包含复现issue方式):从旧版本升级到最近1.0.2,原来的中文名的配网信息消失,直接处于配网状态,但是还是使用原来中文名的网络配网,页面返回成功,但是插座几个电源口开启之后又断开,配网并没有成功

死活连不上,可不可以提供一个默认可以当普通插排的固件?

点击配网,要么就是灯常亮毫无闪烁的变化;要么就是会闪烁个不停,然后就没有然后了。

现在一直配网不成功。

一切都是按描述做的。甚至wifi名字密码都改成很简单的都试过几次,还是不行。完全配网不成功。

能不能提供一个设置或修改的固件,默认可以当作普通插排来使用器?现在这样,插上电除了USB其他的插孔完全不能用,废了,真是太糟心了。请务必解决一下。

源码现在不公开了?

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):

App版本(与app控制有关时必填):

Android版本(与app控制有关时必填):

是否使用服务器(必填):

问题描述(包含复现issue方式):

闭合插口6,突然全部接口都崩了。。。

固件版本:0.10.4

App版本:0.11.5

homeassistant 0.97.2

问题描述(包含复现issue方式):
tc1已经接入hass,从昨晚用到现在无任何故障。
插口状态
1、开 负载中
2、开 负载中
3、关 无负载
4、开 负载中
5、开 负载中
6、开 负载中,接音箱
总功率约为100W,平稳

现象,在 hass 页面闭合6口,试图关音箱
突然,所有接口都关了,logo灯也不亮了(所有强电接口断开)。。。

打开APP看,上次开机时间、运行时间都是正常的,说明wifi模块应该没断,只是强电掉了。

翻看issues,有人提交过 打开强电接口,导致其他断开的问题。而我这里是 关闭强电接口,导致的问题。

如何主动获取排插整体状态

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):1.0.2

App版本(与app控制有关时必填):

Android版本(与app控制有关时必填):

是否使用服务器(必填):是

问题描述(包含复现issue方式):

想问下如何主动查询排插整体状态 wiki里没有找到 只找到了被动接受这些信息的

还有就是 设置时 value为null 会返回此key的状态...

于是我
const info = {name,mac,plug_0:{on:null},plug_1:{on:null}}
mqtt的message是
{topic: 'device/ztc1/${mac}/set', payload: Buffer.from(JSON.stringify(info))}
但请求后 返回来的并不是想要的排插插口状态
看了下wiki里写的 topic为 device/ztc1/MAC/state 是zTC1反馈的数据
但是把message的topic设为这个还是不行

所以想问下 是否存在一个方法,当我发送请求的时候,mqtt会返回排插的整体状态;如果有发送请求时需要发送什么数据。

最后 感谢大佬的无私奉献...

SmartControl_Android_MQTT配对问题

使用a大的软件进行配对 插排一直没什么反应 app也一直是在配对 使用另一个软件连接上网络 在app中添加局域网设备也始终无反应 不知道a大能否解答这个问题

Please adapt the A2 version

As we all konw,the TC1 has two different versions and you have adapt the A1 version. However,at the same time, the majority of consumers have the A2 version, especially, most of the consumers came from “Big cousin's shop”.For the benefit of our comrades,I kneel to request our author to adapt the A2 version.
Thanks a lot.

0.10.3版本功率问题

刷固件过程全部按照教程进行,手机app控制功能正常,但是功率一直显示0w...

PDD阿木商城是作者么

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):

App版本(与app控制有关时必填):

Android版本(与app控制有关时必填):

是否使用服务器(必填):

问题描述(包含复现issue方式):

定时任务异常

插口4设置成电脑,周一到周五7:50开,18:00关。插口6设置成手机充电,每天9:30开,11:00关。现在的BUG是,每天9:30手机充电不会打开,反而电脑插口到9:30会自动关闭.希望修复BUG,固件版本0.10.1,APP版本0.9

设置了MQTT之后,UDP功率数据没返回

通过查看zTC1的源码,以下写法是否存在BUG?
类名:user_function.c
Line:22行

void user_send( int udp_flag, char *s )
{
if ( udp_flag || !user_mqtt_isconnect( ) )
user_udp_send( s ); //发送数据
else
user_mqtt_send( s );
}

重大BUG : 路由器外网故障(可能是DNS相关查询异常)导致tc1闪断

更新故障重现步骤:
测试步骤1 :

  1. 正确配置TC1 WIFI ,并确保手机可控。
  2. 修改路由器DNS地址,比如配置192.168.3.3 此类不可达IP,注意LAN口的DNS和WAN的DNS可同步修改。我测试的时候顺便拔除了WAN的网线,注意,此路由器非PPPOE拨号路由器
  3. 重启路由器。
  4. 观察TC1, 此时状态LED灯,跳闪并重复连接正常,LED常亮。
  5. 等待约一分钟后,开始闪断,此后每50秒左右闪断。
    6 重启TC1电源,故障一样。
    7 恢复路由器DNS配置,问题没有解决
    8 恢复路由器WAN口的外网链接,问题解决。

进一步测试2:
只要拔出WAN口的网线,让路由器没有外网访问就可以重现问题,我的天啊,太可怕了。

======================

猜测TC1需要查询DNS的记录,但是没有返回结果,就会导致故障
不方便抓取网络包查看其DNS查询的信息,最好有个LEDE的路由,方便查询DNS

路由器偶然重启 dnsmaq服务没法启动,发现会导致tc1持续闪断。虽然是路由器故障 但是我的理解不应该导致tc1反复闪断。
手动修复路由器dnsmaq服务后tc1恢复正常
望大神检查下dns相关的代码逻辑

homeasistant接入代码有误?

请先搜索确认没有重复后再提交issue,以下内容若未按照模板填写,不做任何回复,3天后若未更新直接关闭issue.

固件版本(必填):V1.0.2

App版本(与app控制有关时必填):V0.12.4

Android版本(与app控制有关时必填):9

是否使用服务器(必填):
使用的是homeasistant自带的mqtt服务器
问题描述(包含复现issue方式):
现有两个tc1插排,一个使用的旧版V0.10.3固件,接入HA也是用的原来的代码,在HA里面能看到功率,也能对开关进行控制。
另一个插排刷的最新的V1.0.2版本固件,接入HA采用的你最新的代码,但是在HA里面无法获取功率和时间,点击改变开关状态没有效果,且过几秒又回到off态。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.