把玩e-Buddy

TurnToJPG -->


状态

逆向工程得出的控制指令:

################
#Commands
################
# GLADNESS =        00
# FEAR =            01
# FIZZ =            02
# PLEASANTSURPRISE =03
# GRIEF =                       04
# FURY =                        05
# QUELL =                       06
# REDHEAD =             07
# GREENHEAD =           08
# BLUEHEAD =            09
# YELLOWHEAD =          10
# BLAME =                       11
# BLUEGREENHEAD =       12
# WHITEHEAD =           13
# HEART =                       14
# WINGS =                       15
# BODY =                        16
# NOEFFECT =            17
# ONLINE =                      18
# BUSY =                        19
# DAZE =                        20
# BACKSOON =            21
# AWAY =                        22
# PHONE =                       23
# LUNCH =                       24
# OFFLINE =             25

功能列表:

功能代码描述详细描述
00开心头灯变换彩色,翅膀扇动
01惊恐头灯变换彩色,心灯红色,翅膀扇动
02嘶嘶头灯变换彩色,心灯红色,翅膀扇动, 身体转动
03惊喜头灯变换彩色,心灯红色,翅膀扇动, 之后身体转动,头灯红
04酸溜溜头灯变换彩色,翅膀扇动, 之后头灯变幻
05愤怒头灯红色,翅膀扇动, 身体扭动
06扭动头灯蓝色,翅膀扇动, 身体平缓扭动
07红头头灯红色, 闪烁
08绿头头灯绿色,闪烁
09蓝头头灯蓝色,闪烁
10黄头头灯黄色,闪烁
11责骂头灯蓝色,闪烁
12绿色->蓝色头头灯绿色到蓝色变换
13白头闪头灯白色变换
14心跳心灯红色闪烁后,身体转动
15挥翅翅膀不停挥动
16身体转动身体转动
17无效果无任何效果
18在线心灯一直闪动,不会停止,除非转为其他效果
19忙碌心灯一直快速闪动,不会停止,除非转为其他效果
20发呆心灯一直慢速闪动,不会停止,除非转为其他效果
21马上回来心灯三短闪烁后停止一会,不会停止,除非转为其他效果
22离开心灯三短闪烁后停止一会,不会停止,除非转为其他效果
23离开心灯持续跳动,不会停止,除非转为其他效果
24离开心灯两短后持续跳动,不会停止,除非转为其他效果
25离开心灯四短后,永久沉默

e-buddy本地服务器

有人已经实现了e-buddy的python库,直接拷贝到本地并运行:

$ git clone git@github.com:purplepalmdash/pybuddy-dx.git
$ virtualenv2 venv2 --python=python2.7
 ✗ . ~/venv2/bin/activate
(venv2) ➜  _posts git:(master) ✗ python
Python 2.7.11 (default, Dec  6 2015, 15:43:46) 
[GCC 5.2.0] on linux2
$ pip install pyusb
$ python pybuddyDX1.py
2016-02-23 15:51:39,242 INFO     Searching e-buddy...
2016-02-23 15:51:39,399 INFO     DX e-buddy found!
2016-02-23 15:51:39,962 INFO     Starting daemon...

py文件运行后将监听127.0.0.1的8888端口,通过往该端口输入状态码,e-buddy将呈现不同的状态 。

操纵e-buddy

用python操控e-buddy的命令如下:

python
Python 2.7.11 (default, Dec  6 2015, 15:43:46) 
[GCC 5.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> UDP_IP = "127.0.0.1"
>>> UDP_PORT = 8888
>>> sock = socket.socket(socket.AF_INET,  socket.SOCK_DGRAM)
>>> sock.sendto("07",(UDP_IP, UDP_PORT))
2

或者,直接用bash来操作udp socket:

#!/bin/bash
while true
do
echo 07 > /dev/udp/127.0.0.1/8888
sleep 3
done

以上的脚本就可以直接将e-buddy的头像置为红色,且一直闪烁。