HomeAssistant+HomeBridge+Siri+树莓派+ESP8266+传感器+摄像头+内外网穿透+VPS

HomeAssistant+HomeBridge+Hassio+Docker-CM+Siri+MQTT+Padavan+Breed+Shairplay+HiFiDAC+Xshell+Xftp+DHT22+树莓派+ESP8266+传感器+Arduino+继电器+摄像头mjpgstreamer+内外网穿透frp+VPS+公网转发+域名+阿里云虚拟主机+owncloud+VNC+SSH+OpenSSHforWindows+iterm2+PlayerXtreme+MSTSC+RD Client+Termius+小米系传感器网关灯+……

一个大系统,都实现了。有时间整理出来文字和图
慢慢填。
先放几个猫片,趁人不在家的时候…



Python爬取朋友圈数据并用大数据可视化软件进行分析

 
1.安装itchat包:pip install itchat
2.执行itchat.py
3.屏幕出现二维码。用手机微信扫描,登录网页版微信。
4.程序自动把微信朋友信息写入到json文件中。
5.将json文件保存为csv格式文件。
6.使用Excel2016三维地图或Microsoft PowerBI进行数据处理。
7.程序最后会基于朋友签名中文字出现的频率生成词云。词云所基于的图片和字体要在程序里指定位置和名称。

树莓派+Python温湿度传感器监控

  1. 所需材料:
  • 树莓派卡片电脑
  • 安装在sd卡中的基于Linux的树莓派操作系统
  • 电源
  • 显示器
  • 视频线
  • 键盘、鼠标
  • DHT-11温湿度传感器
  • 1 pin 母对母杜邦线3根
  1. 操作步骤:
  • 传感器连接树莓派

使用杜邦线将DHT-11传感器的VCC针脚和树莓派的3.3V PWR相连。(示例代码连接1针脚)

使用杜邦线将DHT-11传感器的DATA针脚和树莓派的GPIO相连。(示例代码连接4针脚)

使用杜邦线将DHT-11传感器的GND针脚和树莓派的GND相连。(示例代码连接6针脚)

  • 将树莓派卡片电脑连接输出设备和电源,进入操作系统。
  • 在PC端或树莓派端的文本编辑器中编写Python代码
  • 运行代码
    • 在该文件的位置处打开命令行工具
    • 执行命令: python 代码名称.py ,观察输出
    • 按Ctrl + C 结束

 

  1. 原理说明

DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。在工业上有着广泛的应用。

代码:

# coding: utf-8

#!/usr/bin/python

 

import RPi.GPIO as GPIO

#导入树莓派的GPIO(General Purpose Input Output,通用输入/输出)库

import time

#导入时间库

 

def getTempandHum():

#定义一个函数来获取温湿度

channel = 4

#定义一个变量channel,代表第四个GPIO引脚

data = []

#定义一个数组变量data来获取温湿度

j = 0

#计数器

 

GPIO.setmode(GPIO.BCM)

#GPIO采取BCM编码格式

 

GPIO.setup(channel, GPIO.OUT)

#将引脚设置为OUTPUT模式,以便树莓派向传感器发送起始信号

GPIO.output(channel, GPIO.LOW)

#将引脚设置低电平,树莓派向传感器发送起始信号

time.sleep(0.02)

#低电平的时间需要保持至少18us,以保证传感器能检测到起始信号

GPIO.output(channel, GPIO.HIGH)

#树莓派输入起始信号过程结束,将引脚设置高电平(主机拉高20-40us)

GPIO.setup(channel, GPIO.IN)

#将引脚设置为INPUT模式,以便传感器向树莓派发送温湿度数据

 

while GPIO.input(channel) == GPIO.LOW:

continue

#等待传感器低电平结束(DHT响应信号80us)

 

while GPIO.input(channel) == GPIO.HIGH:

continue

#等待传感器高电平结束(DHT拉高80us)

 

 

#接下来的代码用于传送和处理数据:

开始正式传输40bit的二进制数据(0或1)。每一个bit的数据(0或者1)总是由一段持续50us的低电平信号开始,

#再由一段持续26us-28us(数据0)或者持续70us(数据1)的高电平结束。一直到40位数据传输完毕。这40位的数据内容是:

#8bit湿度整数数据 + 8bit湿度小数数据 + 8bi温度整数数据 + 8bit温度小数数据 + 8bit校验和。

#校验和数据应该等于“湿度整数数据+湿度小数数据+温度整数数据+温度小数数据”所得结果的末8位。

数字0的表示

数字1的表示

while j < 40:

k = 0

while GPIO.input(channel) == GPIO.LOW:

continue

#等待每一位开始时50us的低电平

 

while GPIO.input(channel) == GPIO.HIGH:

k += 1

if k > 100:

break

#变成高电平后,计数器k增加1。如果高电平时间为26-28us,则代表0。如果高电平时间为70us,则代表1。

if k < 8:

data.append(0)

else:

data.append(1)

j += 1

 

humidity_bit = data[0:8]

#8bit湿度整数数据

humidity_point_bit = data[8:16]

#8bit湿度小数数据

temperature_bit = data[16:24]

#8bit温度整数数据

temperature_point_bit = data[24:32]

#8bit温度小数数据

check_bit = data[32:40]

#8bit校验和

 

humidity = 0

humidity_point = 0

temperature = 0

temperature_point = 0

check = 0

for i in range(8):

humidity += humidity_bit[i] * 2 ** (7-i)

humidity_point += humidity_point_bit[i] * 2 ** (7-i)

temperature += temperature_bit[i] * 2 ** (7-i)

temperature_point += temperature_point_bit[i] * 2 ** (7-i)

check += check_bit[i] * 2 ** (7-i)

#将二进制转化为十进制

 

tmp = humidity + humidity_point + temperature + temperature_point

 

if check == tmp:

print “温度 :”, temperature, “湿度 :”, humidity, “%”

else:

print “–本次测量数据可能不准确,请重试–“

print “温度 :”, temperature, “湿度 :”, humidity, “%”

 

GPIO.cleanup()

 

#主函数,

if __name__==”__main__”:

while 1:

getTempandHum()

print

time.sleep(3)

程序运行界面:

树莓派+Python+OpenCV实现人脸识别及自定义打标

效果如图:

1.使用安装了Python及OpenCV的树莓派。连接usb摄像头。

2.在FaceRecShowName文件夹下打开命令行。

3.用文本编辑器打开文件“face_datasets.py”。

4.修改文件的第11行,id数为想要识别的人脸的数目。例如本教程只需识别我和另一个人打标,则此处只需要设置为2。

5.修改文件的第48行,此处含义为摄像头采集人脸识别素材数目,需要越精确则此处设置值相应更大一些。本教程改为50。

5.执行本文件:在命令行输入python face_datasets.py,并将摄像头对准第一个人脸。

6.将face_datasets.py的第11行修改为2,再次执行此文件,并将摄像头对准第二个人脸。

7.执行training.py文件:在命令行输入python training.py

8.用文本编辑器打开文件:face_recognition.py,找到第45-53行。

将Jacky和Jenifer修改为实际对应的名字。

9.最后,执行face_recognition文件:在命令行输入python face_recognition.py,对着不同的人脸,观察效果。