使用 Raspberry Pi Pico 和 Telegram 实时监控 GitHub 存储库

本文介绍了如何使用RaspberryPiPico和EVB-Pico-W5100模块,配合GitHubAPI和Telegram,创建一个实时监控GitHub存储库更新并发送警报的系统。通过简单设置和代码实现,用户能低成本地获取存储库更新通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

了解如何使用 EVB-Pico-W5100 监控 GitHub 存储库。 介绍性指南。

转发: Real-time GitHub Repository Monitoring with Raspberry Pi Pico and Telegram 


项目介绍

故事

在开源软件和协作开发的时代,跟踪 GitHub 存储库的更新变得比以往任何时候都更加重要。 无论您是开发人员、项目经理还是只是爱好者,您都会发现接收有关您最喜爱的 GitHub 存储库的实时更新非常有益。 这就是 EVB-Pico-W5100 的用武之地。该项目旨在结合 Raspberry Pi Pico、PC 服务器和 Telegram 的强大功能,创建一个实时 GitHub 存储库监控系统。


项目目的

该项目的主要目标是为 GitHub 存储库更新提供实时警报。 通过利用 Raspberry Pi Pico 和 Telegram 的即时消息服务的功能,每当受监控的 GitHub 存储库更新时,用户都可以立即收到通知。


预期效益

  • 实时 GitHub 存储库监控
  • 即时电报通知
  • 使用 Raspberry Pi Pico 的低成本解决方案
  • 易于设置和维护
  • 可扩展以监控多个存储库

要求

  • 树莓派 Pico
  • 微型 USB 电缆
  • 可上网的计算机
  • Github API 令牌
  • 电报机器人

树莓派 Pico 设置

将 evb-pico-w5100s 连接到以太网并准备与 PC 通信。

教程指南

  • 对于RP2040相关的固件和以太网通信代码,我参考了上面的GitHub来编写代码

基本示例

#pico test code
from usocket import socket
from machine import Pin,SPI
import network
import time

#W5x00 chip init
def w5x00_init():
    spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))
    nic = network.WIZNET5K(spi,Pin(17),Pin(20)) #spi,cs,reset pin
    nic.active(True)
    
    #None DHCP
    nic.ifconfig(('192.168.1.20','255.255.255.0','192.168.1.1','8.8.8.8'))
    
    #DHCP
    #nic.ifconfig('dhcp')
    
    print('IP address :', nic.ifconfig())
    while not nic.isconnected():
        time.sleep(1)
        print(nic.regs())
    
def server_loop(): 
    s = socket()
    s.bind(('192.168.1.20', 5000)) #Source IP Address
    s.listen(5)
    
    print("TEST server")
    conn, addr = s.accept()
    print("Connect to:", conn, "address:", addr) 
    print("Loopback server Open!")
    while True:
        data = conn.recv(2048)
        print(data.decode('utf-8'))
        if data != 'NULL':
            conn.send(data)
            
  def main():
    w5x00_init()
    
###TCP SERVER###
    #server_loop()

###TCP CLIENT###
    client_loop()

if __name__ == "__main__":
    main()

Pico服务器代码

from usocket import socket
from machine import Pin, SPI
import network
import time
import urequests  # MicroPython requests library

# Telegram Bot Token
TELEGRAM_TOKEN = "6552216859:AAGqDyzbGkxP6S7mEAbMdYsp-6BJX02DWtc"
CHAT_ID = "5795970252"

# Send message to Telegram
def send_telegram_message(message):
    url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
    data = {
        "chat_id": CHAT_ID,
        "text": message
    }
    urequests.post(url, json=data)

#W5x00 chip init
def w5x00_init():
    spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))
    nic = network.WIZNET5K(spi,Pin(17),Pin(20)) #spi,cs,reset pin
    nic.active(True)
    
    #None DHCP
    nic.ifconfig(('Your IP','255.255.255.0','Your IP gateway','8.8.8.8'))
    
    #DHCP
    #nic.ifconfig('dhcp')
    
    print('IP address :', nic.ifconfig())
    while not nic.isconnected():
        time.sleep(1)
        print(nic.regs())
    
def server_loop():
    s = socket()
    s.bind(('Your IP', 5000))
    s.listen(5)
    
    print("TEST server")
    conn, addr = s.accept()
    print("Connect to:", conn, "address:", addr)
    print("Loopback server Open!")
    
    while True:
        data = conn.recv(2048)
        repo_info = data.decode('utf-8')
        print(repo_info)
        
        if repo_info != 'NULL':
            conn.send(data)
            send_telegram_message(f"New update found in repo: {repo_info}")

def main():
    w5x00_init()
    server_loop()

if __name__ == "__main__":
    main()

电脑服务器

GitHub API

1. 登录Github并点击“设置”。

2.在您的个人帐户屏幕上,点击 Devpoer 设置

3.点击生成经典令牌。

4. 选择您想要使用 API 调用的范围并创建令牌。

基本示例

#Code to send from PC server to Pico
import socket

IP_ADDRESS = 'Your Server IP'
PORT = 5000  

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client_socket.connect((IP_ADDRESS, PORT))

client_socket.sendall("Hello Pico".encode())

data = client_socket.recv(1024)
print('Received:', data.decode())

PC GitHub监控并发送代码

import requests
import time

# GitHub Personal Access Token
TOKEN = "Your GitHub Token"

# GitHub API URL for searching repositories
SEARCH_API_URL = "https://api.github.com/search/repositories"

def fetch_recent_w5500_repo():
    headers = {
        'Authorization': f'token {TOKEN}',
        'Accept': 'application/vnd.github.v3+json',
        'User-Agent': 'My-App'
    }

    params = {
        'q': 'W5500', #your keyword
        'sort': 'updated',
        'order': 'desc'
    }

    response = requests.get(SEARCH_API_URL, headers=headers, params=params)

    if response.status_code == 200:
        data = response.json()
        if data.get('items'):
            return data['items'][0]
    else:
        print(f"Error: {response.content}")
        return None

def main():
    prev_repo = None

    while True:
        recent_repo = fetch_recent_w5500_repo()
        if recent_repo is None:
            print("Could not fetch data. Retrying in 60 seconds.")
            time.sleep(60)
            continue

        if prev_repo is None:
            prev_repo = recent_repo
            print(f"Initial repo is {prev_repo['full_name']}. Monitoring for updates.")
        elif prev_repo['updated_at'] != recent_repo['updated_at']:
            print(f"New update found. Previous: {prev_repo['full_name']} ({prev_repo['updated_at']}), Current: {recent_repo['full_name']} ({recent_repo['updated_at']})")
            prev_repo = recent_repo

        time.sleep(10)  # 10seconds interval

if __name__ == "__main__":
    main()

步骤

  1. 安装依赖项:使用 pip 安装所需的 Python 包。
  2. 运行服务器代码:执行提供的 Python 脚本来启动服务器。
  3. 测试连接:确保服务器可以与 Raspberry Pi Pico 通信并从 GitHub 获取数据。

Telegram

Telegram Bot make

参考

# Telegram Bot Token
TELEGRAM_TOKEN = "Your Token"
CHAT_ID = "Your ID"

# Send message to Telegram
def send_telegram_message(message):
    url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
    data = {
        "chat_id": CHAT_ID,
        "text": message
    }
    urequests.post(url, json=data)

步骤

  1. 创建机器人:使用 Telegram BotFather 创建一个新机器人。
  2. 获取令牌:获取机器人的 API 令牌。
  3. 配置代码:使用 Telegram 机器人的 API 令牌更新 Raspberry Pi Pico 代码。
  4. 测试通知:确保您可以从 Raspberry Pi Pico 接收 Telegram 通知。

沟通

Raspberry Pi Pico 和 PC 服务器通过本地网络进行通信。 服务器从 GitHub 获取最新更新并将此信息发送到 Raspberry Pi Pico。 然后 Pico 将这些更新转发到 Telegram。


结果

Github Monitoring

GitHub 报警检查

成功设置后,只要受监控的 GitHub 存储库有更新,您就会开始接收实时 Telegram 通知。 该项目提供了一种经济有效且简单的方式来保持您最喜爱的 GitHub 项目的更新。

您可以通过添加更多功能来随意扩展该项目,例如监视多个存储库或与其他消息传递平台集成。

与 Pico 一起发现开源存储库的宝藏

更多代码

wiznetmaker · GitHub 创客网站 github

jh941213 (JaeHyun KIM) · GitHub 本人 github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值