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

相关推荐
悟能不能悟几秒前
Spring Boot 中处理跨域资源
java·spring boot·后端
郝学胜-神的一滴1 分钟前
机器学习特征选择:深入理解移除低方差特征与sklearn的VarianceThreshold
开发语言·人工智能·python·机器学习·概率论·sklearn
qq_12498707532 分钟前
基于springboot+vue的无人机共享管理系统(源码+论文+部署+安装)
java·vue.js·spring boot·后端·毕业设计·无人机·计算机毕业设计
松涛和鸣3 分钟前
60、嵌入式定时器深度解析:EPIT与GPT
c语言·arm开发·单片机·嵌入式硬件·gpt·fpga开发
HySpark3 分钟前
智能语音识别基于模型优化与部署技术的轻量化方案
人工智能·语音识别
却道天凉_好个秋4 分钟前
Tensorflow数据增强(一):图片的导入与显示
人工智能·python·tensorflow
一行注释也不写5 分钟前
【循环神经网络(RNN)】隐藏状态在序列任务中的应用
人工智能·rnn·深度学习
多多*6 分钟前
计算机网络相关 讲一下rpc与传统http的区别
java·开发语言·网络·jvm·c#
源码获取_wx:Fegn08957 分钟前
计算机毕业设计|基于springboot + vue网上超市系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·spring·课程设计
屹立芯创ELEADTECH7 分钟前
CoWoS封装技术全面解析:架构、演进与AI时代的基石作用
人工智能·架构