树莓派可移动监控音视频+微信公众号(附源码)

树莓派可移动监控音视频+微信公众号(附源码)


小五游侠 2016-12-14 15:40:12

让树莓派科学上网

启动shadowsocks

安装好服务端后,在本地我们要用到sslocal ,终端输入sslocal –help 可以查看帮助,像这样

sshlocal -help

通过帮助提示我们知道各个参数怎么配置,比如 sslocal -c 后面加上我们的json配置文件,或者像下面这样直接命令参数写上运行。

比如 sslocal -s 11.22.33.44 -p 50003 -k “123456” -l 1080 -t 600 -m aes-256-cfb

-s表示服务IP, -p指的是服务端的端口,-l是本地端口默认是1080, -k 是密码(要加””), -t超时默认300,-m是加密方法默认aes-256-cfb,

为了方便我推荐直接用sslcoal -c 配置文件路径 这样的方式,简单好用。

我们可以在/home/mudao/ 下新建个文件shadowsocks.json (mudao是我在我电脑上的用户名,这里路径你自己看你的)。内容是这样:

{

​ “server”:”11.22.33.44”,

​ “server_port”:50003,

​ “local_port”:1080,

​ “password”:”123456”,

​ “timeout”:600,

​ “method”:”aes-256-cfb”

}

server 你服务端的IP
servier_port 你服务端的端口
local_port 本地端口,一般默认1080
passwd ss服务端设置的密码
timeout 超时设置 和服务端一样
method 加密方法 和服务端一样

确定上面的配置文件没有问题,然后我们就可以在终端输入 sslocal -c /home/mudao/shadowsocks.json 回车运行。
(如果继续请不要关闭这个终端)

screen常用命令详解

同类软件还有tmux 但是安装源较少 国外vps安装比较复杂

安装screen

sudo yum install screen

一般情况下centos自带screen命令,无需重新安装

常用命令之保持ssh会话
  • 新建会话窗口
    screen -S name #name为会话名称

  • 列出当前会话列表
    screen -ls或者screen -list

  • 链接到某一会话窗口
    screen -r name #name为会话名称

  • 断开当前会话
    Ctrl + a,d

  • 关闭当前会话
    exit或者Ctrl + a,k

常用命令之会话分屏

1.在终端输入screen命令,新建会话

2.Ctrl+a 然后shift+s 上下分屏,切换到下方Ctrl+a tab然后新建一个window(Ctrl+a c)

3.切换到上方,Ctrl+a tab,关闭window(Ctrl+a x或者输入exit),左右分屏在centos下好像不可以,据说要ubuntu、debian(Ctrl+a ,Shift + |

4.关闭焦点所在分屏 Ctrl+a x

搭建内网穿透环境ngrok

2016.10.27更新:

使用ngrok安装脚本安装,成功率高

github项目:https://github.com/ccw55ccw/ngrok

Forked from sunnyos/ngrok

由于我现在用的是国外VPS,ngrok好慢,后来改用付费的服务 natapp
https://natapp.cn/member/dashborad
经测试速度还可以

解析域名

使用自己的域名,把域名解析到VPS的地址,解析方式如下:

1
2
3
ngrok.pipa123.cn -------> A记录到你的VPS IP
*.ngrok -------> CNAME到ngrok.pipa123.cn

编译树莓派的客户端(需进入ngrok目录):

1
GOOS=linux GOARCH=arm make release-client

生成之后,在将ngrok/bin目录下面的linux_arm里面的ngrok拷贝到树莓派里面即可

启动服务端

参考脚本执行后的启动命令选项

启动客户端
1
2
3
4
5
#指定子域名为pi,采用http协议和使用80端口
./ngrok -subdomain pi -proto=http -config=ngrok.cfg 80
#指定子域名为pi,采用tcp协议和可外网ssh登陆内网linux
./ngrok -subdomain pi -proto=tcp -config=ngrok.cfg 22

微信公众号python框架

树莓派防火墙简单设置

ufw是一个主机端的iptables类防火墙配置工具,比较容易上手。如果你有一台暴露在外网的树莓派,则可通过这个简单的配置提升安全性。

安装方法
sudo apt-get ``install ufw

当然,这是有图形界面的(比较简陋),在新立得里搜索gufw试试……

使用方法
启用
sudo ufw enable
sudo ufw default deny

作用:开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)。

关闭
sudo ufw disable

查看防火墙状态
sudo ufw status

开启/禁用相应端口或服务举例

sudo ufw allow 80 允许外部访问80端口

sudo ufw delete allow 80 禁止外部访问80 端口

sudo ufw allow from 192.168.1.1 允许此IP访问所有的本机端口

sudo ufw deny smtp 禁止外部访问smtp服务

sudo ufw delete allow smtp 删除上面建立的某条规则

ufw deny proto tcp from 10.0.0.0 /8 to 192.168.0.1 port 要拒绝所有的流量从TCP的10.0.0.0 /8 到端口22的地址192.168.0.1

可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级):

sudo ufw allow from 10.0.0.0 /8

sudo ufw allow from 172.16.0.0 /12

sudo ufw allow from 192.168.0.0 /16

推荐设置

sudo apt-get install ufw

sudo ufw enable

sudo ufw default deny

这样设置已经很安全,如果有特殊需要,可以使用sudo ufw allow开启相应服务。

http://www.lovegeek.cn/?p=630

安装nginx
  • 安装 nginx web服务器 (约6MB)
    sudo apt-get install nginx

  • 启动 nginx
    sudo /etc/init.d/nginx start

nginx 的 www 根目录默认在 /usr/share/nginx/www 中 修改 nginx 的配置文件
sudo vi /etc/nginx/sites-available/default

  • 重新加载 nginx 的配置
    sudo /etc/init.d/nginx reload
配置nginx
server {
  listen 8081;
  server_name 127.0.0.1:8081;
  access_log /data/wwwlogs/access_nginx.log combined;
  location /app01 { #url匹配到app01则转发到80端口  有规则先定义
    proxy_pass http://127.0.0.1:80/;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  location / {
        proxy_pass   http://127.0.0.1:8080/;
        proxy_redirect  off;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

http://piwerobot.ngrok.cc

github地址:https://github.com/ccw55ccw/RasWxPublicNumberServer

树莓派视频监控(usb摄像头)方案

1.motion (延迟高、卡顿)

2.使用mjpg-streamer实现

  • 测试 YUV模式
    ./mjpg_streamer -i "./input_uvc.so -y -f 30 -r 640x480" -o "./output_http.so -w ./www"
  • 测试mjpeg模式
    ./mjpg_streamer -i "./input_uvc.so -f 30 -r 1280x720" -o "./output_http.so -w ./www"

来源:
http://blog.csdn.net/mstbate/article/details/52060111

  • 配置用户名和密码

mjpg-streamer 还可以使用用户名和密码来**访问。
修改 /etc/init.d/mjpg-streamer 中的
[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port" &

[ $enabled -gt 0 -a -c $device ] && sleep 3 && $SSD -S -m -p $PIDF -q -x $PROG -- --input "input_uvc.so --device $device --fps $fps --resolution $resolution" --output "output_http.so --port $port -c user:pass" &

最后添加的部分就是用户名和密码,中间用冒号分割。重新启动mjpg-streamer,保证配置生效。
/etc/init.d/mjpg-streamer restart

来源: http://www.cnblogs.com/hnrainll/archive/2011/06/08/2074909.html

  • 如果不想从8080端口访问(有些运营商把8080端口封掉了),修改脚本,把8080改成对应端口,我改的是8082

./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www -p 8082"

http://www.itdadao.com/articles/c15a731159p0.html

树莓派voice command

http://blog.csdn.net/zebra2011/article/details/24258065

https://diyhacking.com/best-voice-recognition-software-for-raspberry-pi/

安装完启动可能会报错

voicecommand: error while loading shared libraries: libboost_regex.so.1.49.0: cannot open shared object file: No such file or directory

因为没有正确安装libboost_regex

This command resolved a similar problem I was having with libboost not found that others report above.
I ran this “sudo apt-get install libboost-regex1.49.0” after I installed Voice Command following instructions here
http://stevenhickson.blogspot.com/2013/ … e-and.html
Works like a charm.

运行sudo apt-get install libboost-regex1.49.0正常安装之后即可正常启动

https://www.raspberrypi.org/forums/viewtopic.php?t=72570&p=522791

Raspberry Pi百度语音合成

# encoding=utf-8

import urllib
import urllib2
import json
import pygame
import time
import subprocess

## get access token by api key & secret key

def get_token():
    apiKey = "yourappkey"
    secretKey = "yourscrectkey"

    auth_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apiKey + "&client_secret=" + secretKey;

    res = urllib2.urlopen(auth_url)
    json_data = res.read()
    return json.loads(json_data)['access_token']

#24.15ff145dd6c623e9efa6cae142170c5a.2592000.1483444628.282335-8779558
#24.e78c9feb6ded277f644bc9f1da926c40.2592000.1483444662.282335-8779558

def play(tex):
    token = 'yourtoken' # expire in one month later
    url = 'http://tsn.baidu.com/text2audio?tex='+tex+'&tok='+token+'&ctp=1&cuid=4545&lan=zh'
    # data = urllib.urlopen(url).read()
    # filepath = 'tt'+str(time.time())+'.mp3'
    # f = file(filepath, 'wb')
    # f.write(data)
    # f.close()
    # pygame.mixer.init()
    # track = pygame.mixer.music.load(filepath)
    # pygame.mixer.music.play()
    try:
        subprocess.Popen(['pkill', 'mpg123'])
        time.sleep(.3)
    except:
        pass
    finally:
        subprocess.Popen(['mpg123', url])
        return url

if __name__ == "__main__":
    # token = get_token()
    token = '24.e78c9feb6ded277f644bc9f1da926c40.2592000.1483444662.282335-8779558'
    url = 'http://tsn.baidu.com/text2audio?tex=主人,你好&tok='+token+'&ctp=1&cuid=4545&lan=zh'
    data = urllib.urlopen(url).read()
    filepath = 'tt.mp3'
    f = file(filepath, 'wb')
    f.write(data)
    f.close()

    pygame.mixer.init()
    print("播放音乐1")
    track = pygame.mixer.music.load("tt.mp3")
    pygame.mixer.music.play()
    time.sleep(6)
    # print data

树莓派GPIO控制操作方向

#####

坚持原创技术分享,您的支持将鼓励我继续创作!