5月 10

定时检测网测速

安装测试工具。官网www.speedtest.net
pip install speedtest-cli

使用下面脚本,每天随机找3个服务器测试一下,发到指定用户的邮箱里。

#!/bin/env python
# -*- coding:utf-8 -*-
# Date:        2017-05-10
# Author:      simonzhang
# web:         www.simonzhang.net
# Email:       simon-zzm@163.com
### END INIT INFO
import os, sys
import random
from string import strip

import smtplib
from email.mime.text import MIMEText
 
#### 基础设置
mail_host = 'smtp.exmail.qq.com'
mail_user = 'warning'
mail_pwd = 'aaa'
mail_to = "simon-zzm@163.com"
mail_cc = "simon-zzm@"
 
 
####
def mail_send(text):
    content = '%s' % text
    msg = MIMEText(content)
    msg['From'] = mail_user
    msg['Subject'] = 'dsg net report'
    msg['To'] = mail_to
    msg['CC'] = mail_cc
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user, mail_pwd)
        s.sendmail(mail_user, [mail_to, mail_cc], msg.as_string())
        s.close()
    except Exception, e:
        print e

def speedTestStatus(serverId):
    getData = os.popen('/usr/local/bin/speedtest-cli --server=%s --share' % serverId).readlines()
    for oneData in getData:
        if oneData[-1] == '\n':
            oneData = oneData[:-1]
        if oneData.find('Download:') > -1:
            download = strip(oneData).split(' ')
            downStatus = "%s%s" % (download[1], download[2])
        if oneData.find('Upload:') > -1:
            upload = strip(oneData).split(' ')
            upStatus = "%s%s" % (upload[1], upload[2])
        if oneData.find('Share results:') > -1:
            pic = strip(oneData).split(' ')
            picStatus = "%s" % (pic[-1])
    return downStatus, upStatus, picStatus


def getChainServerList():
    getData = os.popen('/usr/local/bin/speedtest-cli --list|grep -i china').readlines()
    idList = []
    for oneData in getData:
        idList.append(strip(oneData.split(') ')[0]))
    return idList

def main():
    # 查找测试服务器中国服务器id
    # 并随机选出三个
    getID = random.sample(getChainServerList(), 3)
    # 进行测试,并返回结果。
    context = ""
    for oneId in getID:
        down, up, pic = speedTestStatus(oneId)
        context = "%s testId:%s down:%s up:%s pic:%s\n" % (context, oneId, down, up, pic)
    mail_send(context)

if __name__ == '__main__':
    main()
3月 03

raspberry pi apt失败

重装raspberry pi系统,将apt-get的源换成阿里云的。执行报错如下:

W: Duplicate sources.list entry http://mirrors.aliyun.com/raspbian/raspbian/ jessie/main armhf Packages (/var/lib/apt/lists/mirrors.aliyun.com_raspbian_raspbian_dists_jessie_main_binary-armhf_Packages)
W: Duplicate sources.list entry http://mirrors.aliyun.com/raspbian/raspbian/ jessie/non-free armhf Packages (/var/lib/apt/lists/mirrors.aliyun.com_raspbian_raspbian_dists_jessie_non-free_binary-armhf_Packages)
W: Duplicate sources.list entry http://mirrors.aliyun.com/raspbian/raspbian/ jessie/contrib armhf Packages (/var/lib/apt/lists/mirrors.aliyun.com_raspbian_raspbian_dists_jessie_contrib_binary-armhf_Packages)
W: You may want to run apt-get update to correct these problems

解决
直接删除/etc/apt/sources.list.d/下面的文件,再次更新。

2月 18

安装ta-lib问题记录

直接使用pip install Ta-LIB,报错如下:
talib/common.c:242:28: fatal error: ta-lib/ta_defs.h: No such file or directory
解决方案先下载0.4版进行编译
ta-lib-0.4.0-src.tar.gz
然后解压
./configure & make & make install

安装0.4版本完成在用pip安装最新版本就成拱了。但是运行程序有又报错:
ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory
在整个系统中搜索,发现在系统中有这个库。
find / -name libta_lib.so.0
/usr/local/lib/libta_lib.so.0
所以加载一下应该就可以了,在/etc/profile增加一行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
然后执行
source /etc/proflie
生效后再次运行py脚本既可成功。

2月 11

nodemcu esp8266 micropython 学习

购买esp8266学习python开发单片机。
esp6288板子

下载windows用的刷固件工具
https://github.com/nodemcu/nodemcu-flasher
下载编译文件的下载位置
http://micropython.org/download#esp8266

启动刷固件工具选择固件
esp8266选择固件
开始刷机
esp8266刷固件

使用串口调试工具或者putty连上后就可以写代码了。我的串口是com4。
esp6288串口配置1
esp6288串口配置2
esp6288串口连接

刷新完毕,直接用3三色led实验GPIO。
esp6288测试led
代码如下,板子上表示的序号有误,测试了多次才对上。

from machine import Pin
import time
ll = [0, 4, 5]
for oneline in ll:
    Pin(oneline, Pin.OUT, value=1)
    time.sleep(3)
    Pin(oneline, Pin.OUT, value=0)
    time.sleep(1)

代码测试正常。开始测试无线。

使用help()可以看到连接WiFi部分和ap部分
import network
sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
sta_if.scan() # Scan for available access points
sta_if.connect(““, ““) # Connect to an AP
sta_if.isconnected() # Check for successful connection
# Change name/password of ESP8266’s AP:
ap_if = network.WLAN(network.AP_IF)
ap_if.config(essid=”“, authmode=network.AUTH_WPA_WPA2_PSK, password=”“)

开启启动并上传文件。
将之前代码保存文件命名为main.py。使用http://www.w2bc.com/article/191374开发的小工据上传。
上传完毕,实验结果正常。查看系统main.py在系统中。
esp8266启动文件

收集文档
推荐站点
http://www.zhimadiy.top/

python的lib库
https://github.com/micropython/micropython-lib

固件
https://github.com/micropython/micropython

控制机械臂
http://forum.micropython.org/viewtopic.php?t=2441&p=14251

文档
http://docs.micropython.org/en/latest/esp8266/

开发图形 IDE

ESPlorer