Code Monkey home page Code Monkey logo

esp_dc1's Introduction

ESP DC1

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

WHY

众所周知的原因,斐讯服务器已经不能正常访问,插座的APP控制已经无法正常实现,需要有另外的方式实现插座的控制。

已有的方法为内网劫持实现,具体可参考这里

这次要实现的是通过一个自定义的固件,来完整实现DC1联网控制。

作者声明

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

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

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

特性

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

  • 4个USB充电
  • 按键控制所有插口通断
  • 控制每个接口独立开关
  • OTA在线升级
  • WEB配置页面
  • MQTT服务器连接控制
  • 通过MQTT连入Home Assistant
  • 电压/电流/功率/视在功率/无功功率/功率因数/用电量统计(不做任何精度保证)
  • 过载保护

拆机接线及烧录固件相关

固件烧录

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

总开关控制USB

1、抖音 搜索 DC1 按照李老师的硬件改造

2、WEB页面 分开关联动 设置为不联动

如何配网

1、第一次使用自动进入配网模式

2、以后通过长按【总开关】进入配网模式

如何编译

Visual Studio Code + PlatformIO ID 开发 安装

已支持接入的开源智能家居平台

以下排序随机,不分优劣。合适自己的就好。

1、Home Assistant

Home Assistant 是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。

接入方法

WEB页面开启MQTT自动发现

2、ioBroker

ioBroker是基于nodejs的物联网的集成平台,为物联网设备提供核心服务、系统管理和统一操作方式。

接入方法

ioBroker相关接入问题可以加QQ群776817275咨询

3、其他支持mqtt的平台

理论上来说,只要是支持MQTT的平台都可以实现接入。

接入方法

添加对应的topic

固件截图

image image image image

致谢

以下排名不分先后,为随机。

  • killadm:导出原始固件,提供WiFi芯片对比图,主控制板WiFi模块、U7移除后的PCB照片,U7逻辑分析数据采集
  • 老妖:U7驱动编写,U7逻辑分析
  • 实验幼儿园小二班扛把子:测试引脚走向
  • Heller、巴山耗子:初期资料整理
  • 风中的summer:提供清晰的电路板照片、拆机过程照片

感谢各位使用本方法的玩家,欢迎加入QQ群776817275

免责申明

以上纯属个人爱好,因为使用上述方法造成的任何问题,不承担任何责任。

部分图片来源于网络,如果涉及版权,请通知删除。

esp_dc1's People

Contributors

gitercn avatar qlwz 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

esp_dc1's Issues

能否增加备用wifi连接设置

有时候一个wifi出问题了,设备连不上,会自动连接到第2个wifi.
另外项目更新了怎么不发布release啊,不会自己编译...

固件WEB端可以控制,接入HA后无法控制,电压等sensor正常

esp_dc1固件是最新版
HA版本是0.113
WEB端一切功能都正常,,按照从web端下载的homeassistant配置接入HA后,显示均正常,包括在固件web端开关后,HA里的开关状态及sensor信息均正常变化反映.
但就是无法在HA里控制开关.
开关时提示
"调用服务switch/turn_on失败"
不是我的HA的问题,,因为我还有2个刷的tasmota固件mqtt接入HA的开关,还有个刷espeasy固件mqtt的灯均可正常控制.

然后通过mqtt.fx的windows客户端看到topic:dc1/dc1_04afa7/stat/power1的提示有错误如下:

*** PAYLOAD IS NOT VALID JSON DATA ***

Unexpected character ('o' (code 111)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.StringReader@355f45eb; line: 1, column: 2]

烦请大佬看看

有没有兴趣添加几个http API和mdns广播以支持OpenIoTHub

Http API:
(1)https://github.com/IoTDevice/phicomm_dc1/blob/master/src/main.cpp#L247
(2)https://github.com/IoTDevice/phicomm_dc1/blob/master/src/main.cpp#L249
(3)https://github.com/IoTDevice/phicomm_dc1/blob/master/src/main.cpp#L251
(重新命名的api可以不用实现,由app处理重命名,现在https://github.com/IoTDevice/phicomm_dc1/blob/master/src/main.cpp#L248不需要支持)
MDNS广播:
https://github.com/IoTDevice/phicomm_dc1/blob/master/src/main.cpp#L233
(用于声明服务,这样app和网关就能自动发现dc1并知道使用的模型)

我维护的项目比较多,如果你能支持的话我可以更加把精力放到APP上

对了,qq群:251227638(验证信息:斐讯) 有很多玩斐讯插排刷机的

关于无法在ui界面编辑名字的解决方法

需要增加 unique_id 到mqtt发现。

源码src/dc1.cpp

大概在180行左右的位置,参照下面改吧

        sprintf(topic, PSTR("%s/switch/%s_%d/config"), globalConfig.mqtt.discovery_prefix, UID, (ch + 1));
        if (isEnable)
        {
            cmndTopic[strlen(cmndTopic) - 1] = ch + 49;           // 48 + 1 + ch
            powerStatTopic[strlen(powerStatTopic) - 1] = ch + 49; // 48 + 1 + ch
            sprintf(message,
                    PSTR("{\"name\":\"%s_%d\","
                         "\"cmd_t\":\"%s\","
                         "\"stat_t\":\"%s\","
                         "\"pl_off\":\"off\","
                         "\"pl_on\":\"on\","
                         "\"avty_t\":\"%s\","
                         "\"pl_avail\":\"online\","
                         "\"unique_id\":\"%s_%d\","
                         "\"pl_not_avail\":\"offline\"}"),
                         
                    UID, (ch),
                    cmndTopic,
                    powerStatTopic,
                    availability.c_str(),
                    UID, (ch));
            Mqtt::publish(topic, message, true);
            //Debug::AddInfo(PSTR("discovery: %s - %s"), topic, message);
        }
        else
        {
            Mqtt::publish(topic, "", true);
        }
    }

have fun

如何编译

Executing task in folder esp_dc1-master: C:\Users\Administrator.platformio\penv\Scripts\platformio.exe run --environment dc1 <

Processing dc1 (framework: arduino; board: esp01_1m; platform: [email protected])
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/esp01_1m.html
PLATFORM: Espressif 8266 (2.4.0) > Espressif Generic ESP8266 ESP-01 1M
HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash
PACKAGES:

  • framework-arduinoespressif8266 3.20603.200130 (2.6.3)
  • tool-esptool 1.413.0 (4.13)
  • tool-esptoolpy 1.20800.0 (2.8.0)
  • toolchain-xtensa 2.40802.200502 (4.8.2)
    LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Library Manager: Installing git+https://github.com/nanopb/nanopb.git#nanopb-0.3.9.5
    FileNotFoundError: [WinError 2] 系统找不到指定的文件。:
    File "C:\Users\Administrator.platformio\penv\Lib\site-packages\platformio\builder\main.py", line 177:
    env.SConscript("$BUILD_SCRIPT")
    File "C:\Users\Administrator.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Script\SConscript.py", line 591:
    return _SConscript(self.fs, *files, **subst_kw)
    File "C:\Users\Administrator.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Script\SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
    File "C:\Users\Administrator.platformio\platforms\espressif8266\builder\main.py", line 203:
    target_elf = env.BuildProgram()
    File "C:\Users\Administrator.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Util.py", line 658:
    return self.method(*nargs, **kwargs)
    File "C:\Users\Administrator.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 62:
    env.ProcessProjectDeps()
    File "C:\Users\Administrator.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Util.py", line 658:
    return self.method(*nargs, **kwargs)
    File "C:\Users\Administrator.platformio\penv\Lib\site-packages\platformio\builder\tools\platformio.py", line 140:
    project_lib_builder = env.ConfigureProjectLibBuilder()
    File "C:\Users\Administrator.platformio\packages\tool-scons\scons-local-4.1.0\SCons\Util.py", line 658:
    return self.method(*nargs, **kwargs)
    File "C:\Users\Administrator.platformio\penv\Lib\site-packages\platformio\builder\tools\piolib.py", line 1062:
    project.install_dependencies()
    File "C:\Users\Administrator.platformio\penv\Lib\site-packages\platformio\builder\tools\piolib.py", line 898:
    lm.install(spec)
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\manager_install.py", line 48:
    pkg = self._install(
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\manager\library.py", line 81:
    return super(LibraryPackageManager, self).install(
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\manager_install.py", line 97:
    pkg = self.install_from_url(spec.url, spec, silent=silent)
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\manager_install.py", line 141:
    vcs = VCSClientFactory.new(tmp_dir, url)
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\vcsclient.py", line 54:
    obj = getattr(sys.modules[name], "%sClient" % type
    .title())(
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\vcsclient.py", line 137:
    self.configure()
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\package\vcsclient.py", line 146:
    result = proc.exec_command([cls.command, "--exec-path"])
    File "c:\users\administrator.platformio\penv\lib\site-packages\platformio\proc.py", line 117:
    p = subprocess.Popen(*args, **kwargs)
    File "C:\Users\Administrator.platformio\python3\lib\subprocess.py", line 951:
    self._execute_child(args, executable, preexec_fn, close_fds,
    File "C:\Users\Administrator.platformio\python3\lib\subprocess.py", line 1420:
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
    ========================================================================== [FAILED] Took 0.74 seconds ==========================================================================
    终端进程“C:\Users\Administrator.platformio\penv\Scripts\platformio.exe 'run', '--environment', 'dc1'”已终止,退出代码: 1。

终端将被任务重用,按任意键关闭。

配置无法保存

日志输出
CAT9554 digitalWrite Error2
问题表现
点击保存WiFi或mqtt等配置后,dc1重启,重新进入AP模式,且配置恢复为空(初始状态),日子输出错误如上。
硬件信息
dc1 ESP芯片型号里有b的那一款…

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.