最新消息:重新回归WordPress,我要比较认真的开始更新我的博客了。

斐讯DC1智能插板折腾笔记

笔记 hanlei 2889浏览

斐讯还真是个神奇的存在,各种产品在其倒闭后开始发光发热。因为没有关注过矿业,所以对矿难的一些情况也只是看个新闻标题了事,完全没有注意到矿渣的存在,以至于错过了矿渣的黄金购入期,我买的时候价格已经翻了好几倍了。

购买及刷机

我买的时候别人都已经玩完了,所以各种因件也已经很成熟了,所以价格也差不多到顶了,花70多在某夕夕入手。固件用了很多人推荐的也是功能最完善的esp_dc1.

固件地址: https://github.com/qlwz/esp_dc1
烧录步骤:https://github.com/qlwz/esp_dc1/blob/master/%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%BD%95.md

然后

发现自己过于兴奋了,其实真没什么好说的。作者的说明里都写的很清楚了。我在自己的NAS上装了DOCKER,在DOCKER上装了 assistant ,在dc1上开启被动发现然后assistant也开启mqtt发现,总之最后就那么弄好了。手机上也用上了assistant的APP。

至于后来70块入手了一个猫盘,刷了黑辉,想撤了原来的NAS,猫盘的hass用不了,建了emqttd服务器,下载了mqtt手机端”MQTT Dash”,通过mqtt重新远程控制了家里的dc1的过程,突然也不想细说了。

EMQTTD安装

我是通过docker安装,虽便选了一个镜像,结果装完了不知道登录帐号密码,作者也没说明,最后在网上找到了,登录帐号:admin,密码:pulibc

docker地址: https://hub.docker.com/r/devicexx/emqttd

手机端APP “MQTT Dash”

在华为的应用市场搜mqtt的手机端APP,居然没有相关的应用。让我一度以为是不是我太自以为是了,根本不是这么个玩法。还好在google的应用市场可以找到很多这样的app,也印证了我的想发,mqtt就是这么玩的。

对比了几个热门的APP的截图,选了一个没广告的,看着还不错的,就是“MQTT Dash”。

大概就是这个样子

猫盘通过mqtt远程开机脚本

还有个事要记录一下,wol远程开机是hass自带的功能,我原来也一直在用。现在打算不用hass了,远程开机也想要找个别的方便的实现方法。

因为刚了解了mqtt的工作过程,就想在猫盘上运行一个mqtt客户端,然后在手机上发送开机命令,mqtt客户端接收到命令后执行脚本开机。

有想法后要做的事,当然是上网搜看有没有别人做好的,直接拿来用。还真找到了,下面的python代码可是我花了16积分在csdn上下载的。接收mac地址后唤醒主机。

需要先安装paho-mqtt包

import paho.mqtt.client as mqtt
import struct
import socket
import sys

def broadcast(magic):
  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
  s.sendto(magic, ('<broadcast>', 9))
  
def build_packet(mac_str):
  bytes = [255]*6 + [int(x,16) for x in mac_str.split(':')]*16
  magic = struct.pack('B'*102, *bytes)
  return magic

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe("/this/is/topic")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(str(msg.payload).split("'")[1])
    broadcast(build_packet(str(msg.payload).split("'")[1]))


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.username_pw_set("帐号", "密码")
client.connect("mqtt服务器地址", 端口号, 60)
client.loop_forever()

转载请注明:HANLEI'BLOG » 斐讯DC1智能插板折腾笔记