使用 Motion 为树莓派实现局域网监控

安装 Motion 最新版本

这里不建议使用 apt 命令安装,详情请见 Motion: Raspberry Pi cameras

设置 Motion

  1. 首先修改 motion 文件来设置守护进程

    sudo nano /etc/default/motion

    start_motion_daemon 参数改为 yes,然后按快捷键Ctrl+X后输入y,回车确认保存

    start_motion_daemon=yes
  2. 其次需要修改配置文件 motion.conf

    sudo nano /etc/motion/motion.conf

    找到并分别修改下面内容并保存
    开启守护、开启视频流和Web管理页面外部访问

    daemon on
    stream_localhost off
    webcontrol_localhost off

    酌情修改分辨率

    width 640
    height 480

    如果使用树莓派的摄像头,需要删掉 mmalcam_name 前面的 ;,并设置参数 vc.ril.camera

    mmalcam_name vc.ril.camera

启动 Motion

sudo systemctl start motion

- 阅读剩余部分 -

20行代码实现右Shift(任意按键)切换输入法中英文

废话不说直接上干货

1、安装keyboard

pip install keyboard

2、保存下面的代码到py文件中

import keyboard

MAX_TIME = 0.5  # 最大切换间隔单位(秒)
MY_LOVE_TOGGLE_KEY = 'right shift'  # 想要设置的切换输入法的按键
SYS_IME_TOGGLE_KEY = 'ctrl+space'  # 原始的切换输入法的按键

if __name__ == '__main__':
    target_key = False
    press_time = None
    while True:
        key = keyboard.read_event()
        if target_key is False and key.name == MY_LOVE_TOGGLE_KEY and key.event_type == 'down':
            target_key = True
            press_time = key.time
            continue
        if target_key is True and key.name == MY_LOVE_TOGGLE_KEY and key.event_type == 'up':
            target_key = False
            if key.time < press_time + MAX_TIME:
                keyboard.press_and_release(SYS_IME_TOGGLE_KEY)

3、运行刚刚保存的文件,感受效果吧!

Golang TCP UDP

创建TCP连接

func createTcpServer(host string, port int) (*net.TCPListener, error) {
    logger.Debug("create tcp listener")
    tcpListener, err := net.Listen("tcp", host+":"+strconv.Itoa(port))
    if err != nil {
        logger.Error("listen error: ", err)
        return nil, err
    }
    return tcpListener.(*net.TCPListener), nil
}

创建TCP连接2

func createTcpServer(host string, port int) (*net.TCPListener, error) {
    logger.Debug("create udp listener")
    udpAddr, err := net.ResolveTCPAddr("udp", host+":"+strconv.Itoa(port))
    if err != nil {
        logger.Error("", err)
        return nil, err
    }
    //监听端口
    udpConn, err := net.ListenTCP("tcp", udpAddr)
    if err != nil {
        logger.Error("", err)
        return nil, err
    }
    return udpConn, nil
}

创建UDP连接

func createUdpServer(host string, port int) (*net.UDPConn, error) {
    logger.Debug("create udp listener")
    udpAddr, err := net.ResolveUDPAddr("udp", host+":"+strconv.Itoa(port))
    if err != nil {
        logger.Error("", err)
        return nil, err
    }
    //监听端口
    udpConn, err := net.ListenUDP("udp", udpAddr)
    if err != nil {
        logger.Error("", err)
        return nil, err
    }
    return udpConn, nil
}

最新文章

最近回复

  • muumlover: 你好
  • 测试人: 你好呀
  • ww: 看了这么多就这个有用,牛逼
  • 未知狐: 啊确实,话说,博主博客好像没有评论回复邮件提醒,可以试试Comm...
  • Skogen: 系统的差异,不同的Linux发行版集成的包也不一样,安装难度也就...
  • Skogen: 系统是 Debian9,理论上Debian系的系统应该通用的。
  • 2247: 请问用的是什么系统?
  • 未知狐: 受教了,我比博主运气好点,是因为不理解命令参数等设定而频繁失败,...
  • Skogen: 23
  • Skogen: asd

分类

标签

归档

其它