ESP32设备——监测股票交易价格拨打电话提醒(后附代码)

功能概述:

**事件:**监控沪深两市某股票的实时交易情况

(确保该股票在列表http://api.biyingapi.com/hslt/list/biyinglicence里,ctrl+f查询关键词)

以**"国华网安"** 为例,"dm":"000004","mc":"国华网安","jys":"sz"

https://api.biyingapi.com/hsrl/ssjy/**000004**/52F1AC58-A19D-4C24-BDAA-2C8506610C93

**时间间隔:**5分钟(代码运行,每隔5分钟自动发送http请求查询相关数据)

**返回值:**每查询一次就返回一次该时间的p值(当前价格)

4G模自动拨打电话**条件:**当前返回p值>上一次返回p值


代码的一个概要(大佬可忽略这部分):

1.导入库:导入python的requests库(http客户端库),用于发送各种http请求

2.发送请求:使用requests库的get方法向指定的URL(API接口)发送一个HTTP GET请求

定义一个变量response来存储这个请求响应

3.获取响应内容:发送http请求返回格式为标准json格式

将响应内容赋值给变量jsstr

4.打印响应内容:打印获取的原始字符串数据jsstr

5.json 格式转换:将JSON格式的字符串jsstr转换为Python的字典对象,赋值给变量data,使用Python的json模块中的loads函数

6.获取p :打印出字典对象data中键为'p'的值

7.循环该请求操作间隔时间为5分钟

8.每次获取的当前p值与上次进行比较,如果当前p值大于上次p值,则自动拨打电话号为111****1111的11位电话号,拨打过去持续十秒然后挂断电话。

9.一次循环操作操作:查询p,比较p,符合条件拨打电话,拨打未接听状态时间持续十秒,然后自动挂断。


功能实现步骤:

  1. 连接板子
  2. 修改代码中的json内容:路由器账号及密码,拨打的手机号等内容,修改完成保存
  3. 给4G模块上传文件中的代码
  4. 使用串口调试工具,连接后,可查看每次返回的数据,达到上述指定条件将自动拨打电话,响铃6s后自动挂断
  5. 可根据自己需求修改代码

代码

主程序main.py

python 复制代码
#main.py

import requests
import json
import time
from machine import UART
from wificonnect import wifi_connect

uart1 = UART(2, baudrate=115200, tx=16, rx=17, timeout=10)

def load_config():
    with open('config.json', 'r') as f:
        return json.load(f)

config = load_config()
PHONE_NUMBER = config['phone_number']
STOCK_API_URL = config['stock_api_url']

def send_cmd(command):
    print(f"Sending command: {command}")
    uart1.write(command + '\r\n')

def ping():
    send_cmd('AT')

def call_phone(phnum=PHONE_NUMBER):
    if len(phnum) != 11:
        print("Wrong phone number, not 11 digits long")
        return
    print(f"Making a call to: {phnum}")
    send_cmd(f'ATD{phnum};')
    time.sleep(30)
    off_call()

def off_call():
    send_cmd('AT+CHUP')
    print("Phone call ended")

def fetch_stock_price():
    try:
        response = requests.get(STOCK_API_URL)
        data = response.json()
        p_value = float(data['p'])
        print(f"Current price: {p_value}")
        return p_value
    except Exception as e:
        print(f"Error fetching stock price: {e}")
        return None

last_p_value = None

def monitor_stock():
    global last_p_value
    while True:
        current_p_value = fetch_stock_price()
        if current_p_value is not None:
            if last_p_value is not None and current_p_value > last_p_value:
                call_phone()
            last_p_value = current_p_value
        time.sleep(300)

if __name__ == "__main__":
    print("Connecting to Wi-Fi...")
    if wifi_connect():
        print("Wi-Fi connected. Monitoring stock prices...")
        ping()
        monitor_stock()
    else:
        print("Wi-Fi connection failed.")

联网代码wificonnect.py

python 复制代码
#联网
# wificonnect.py


import network
import time
import json

def load_config():
    with open('config.json', 'r') as f:
        return json.load(f)

def wifi_connect():
    config = load_config()
    ssid = config['wifi_ssid']
    password = config['wifi_password']

    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)

    if not wlan.isconnected():
        print(f'Connecting to network {ssid}...')
        wlan.connect(ssid, password)
        start_time = time.time()

        while not wlan.isconnected():
            if time.time() - start_time > 10:
                print("WiFi connection timeout")
                return False
            time.sleep(1)

    print('Network connected:', wlan.ifconfig())
    return True

if __name__ == "__main__":
    wifi_connect()

配置文件config.json

javascript 复制代码
{
    "wifi_ssid": "wifi名字",
    "wifi_password": "wifi密码",
    "phone_number": "接收来电提醒的手机号",
    "stock_api_url": "https://api.biyingapi.com/hsrl/ssjy/000004/52F1AC58-A19D-4C24-BDAA-2C8506610C93"
}

Gitee 源码地址:

mage (woodcol) - Gitee.com

相关推荐
星哥说事19 小时前
Python自学25 - Django快速上手
开发语言·python·django
码界奇点19 小时前
2025时序数据库选型指南从架构基因到AI赋能的深度解析
人工智能·ai·架构·时序数据库
IT_陈寒19 小时前
Python 3.11性能翻倍秘诀:7个你从未注意过的隐藏优化点!
前端·人工智能·后端
aneasystone本尊20 小时前
深入 Dify 应用的会话流程之文件上传
人工智能
学习编程的Kitty20 小时前
算法——位运算
java·前端·算法
不吃鱼的羊20 小时前
Autosar OS简介
人工智能
斑点鱼 SpotFish20 小时前
用Python可视化国庆期间旅游概况与消费趋势
开发语言·python·旅游
小兔崽子去哪了20 小时前
Python 学习记录
python
Kingsdesigner20 小时前
从AI画稿到3D虚拟时装:Illustrator与Substance 3D的服装设计工作流
人工智能·3d·illustrator·substance 3d·sampler·stager·数字时尚
ezl1fe20 小时前
RAG 每日一技(十九):当文本遇上表格,如何拿下“半结构化”PDF
人工智能·后端·算法