Skip to content

由 WildboarG 贡献,Ai-Thinker 进行整理

【wb2】http - get应用

[wb2]http - get应用


🧠 什么是 HTTP GET?

HTTP GET 是最常见的网页请求方式之一,作用是 向服务器请求信息,例如获取网页、查询数据、发起通知等。

请求格式一般像这样:

📜 点击展开完整代码
http
GET

/notify?title=警报&message=发现目标

HTTP/1.0

Host
:
192.168.0.233:8080

User-Agent
:
my-device

这个请求访问了 192.168.0.233:8080 上的 /notify 路径,并携带了两个参数:titlemessage

📟 应用场景

  • 嵌入式设备检测到异常,通过 HTTP GET 请求发出警报;
  • IoT 设备定时上传状态;
  • 控制服务端触发自动化流程(如通知机器人、记录日志等)。

🛠️ MCU 端实现(简版)

📜 点击展开完整代码
c
#
define
 WEB_SERVER
"192.168.0.233"

#
define
 WEB_PORT
"8080"

#
define
 WEB_PATH
"/notify?title=警报&message=发现目标"

static

const

char
 *REQUEST =
"GET "
 WEB_PATH
" HTTP/1.0\r\n"

"Host: "
 WEB_SERVER
":"
 WEB_PORT
"\r\n"

"User-Agent: wb2-device\r\n"

"\r\n"
;

void

notify_task
(
void
 *pvParameters)
 {

// ... DNS解析 + socket连接略

  write(sock, REQUEST,
strlen
(REQUEST));

// ... 接收响应略

  close(sock);
}

🖥️ 服务端 Python 示例

用 Flask 快速搭建一个 HTTP 接收服务:

📜 点击展开完整代码
python
from
 flask
import
 Flask, request
app = Flask(__name__)

@app.route(
"/notify"
)

def

notify
():
    title = request.args.get(
"title"
)
    message = request.args.get(
"message"
)

print
(
f"📢 来自设备的通知:
{title}
 -
{message}
"
)

return

"OK"

app.run(host=
"0.0.0.0"
, port=
8080
)

输出结果示例:

📜 点击展开完整代码
html
📢 来自设备的通知:警报 - 发现目标

🧪 测试方法

你可以在浏览器中直接输入:

📜 点击展开完整代码
c
http:
//192.168.0.14:8080/notify?title=测试&message=一切正常

应用测试


Bark 是一款非常方便的 iOS 推送通知工具,适合用来做 服务器/设备主动推送消息到手机。它背后的原理是:你通过一个 HTTP GET请求,把消息发送到 Bark 的服务器,Bark 会把这个消息通过 APNs 推送到你的 iPhone 上。


🔔 一句话解释:

Bark 就是一个“网页发消息 ➜ iPhone 收通知”的桥梁。


🛠️ 使用步骤:

1. 安装 Bark 应用(iOS)

去 App Store 搜索 Bark,图标是个狗头,下载安装。

2. 获取你的推送 URL

打开 Bark 后,应用会给你一个像这样的网址:

📜 点击展开完整代码
html
[https://api.day.app/你的设备Key](https://api.day.app/你的设备Key)

这是你专属的推送地址!

3. 发送推送消息(GET 请求)

直接用浏览器、curl、或代码请求下面这个 URL:

📜 点击展开完整代码
c
https:
//api.day.app/你的设备Key/标题/内容

例如:

📜 点击展开完整代码
c
https:
//api.day.app/AbCDefGHiJ/警报/发现异常数据

你会立刻在手机上收到一条通知。

bark需要自建服务器,保护数据隐私安全。别担心,接下来带大家用docker搭建bark服务器, docker镜像仅仅只有23M大小。非常适合小型设备。比之前给大家推荐的GOFITY小的多得多。还有一点惊喜是bark不需要常驻后台,即便不启动。苹果的APNS推送也能实时发送到手机上,这就非常省电啦。

4. bark服务器的docker安装

  • 拉取docker镜像
📜 点击展开:docker pull finab/bark-server
sh
docker pull finab/bark-server
  • 启动服务
📜 点击展开完整代码
c
docker run -dt \
--name bark \
-p
8080
:
8080
 \
-v /data/bark:/data \
finab/bark-server

运行成功后先测试一下

📜 点击展开完整代码
c
curl http:
//0.0.0.0:8080/ping

{
"code"
:
200
,
"message"
:
"pong"
,
"timestamp"
:
1621936667
}

5. 从wb2http get请求来将消息发到手机

在上次rd04雷达的demo(gotify [POST])上更改通知方式为(bark[GET],只需要修改NOTIFY代码的通知方式就可以了

📜 点击展开完整代码
c
#
define
 WEB_SERVER
"192.168.0.233"

#
define
 WEB_PORT
"8080"

#
define
 WEB_PORTI 8080

#
define
 WEB_PATH
"/你的令牌/rador?call=1"

void

notify_task
(
void
 *pvParameters)
;

static

const

char
 *REQUEST =
"GET "
 WEB_PATH
" HTTP/1.0\r\n"

"Host: "
 WEB_SERVER
":"
 WEB_PORT
"\r\n"

"User-Agent: aithinker wb2\r\n"

"\r\n"
;

void

notify_task
(
void
 *pvParameters)
 {

int
 sockfd;

struct

sockaddr_in

server_addr
;

char
 response[
512
];

  sockfd = socket(AF_INET, SOCK_STREAM,
0
);

if
 (sockfd <
0
) {

printf
(
"socket failed\n"
);
    vTaskDelete(
NULL
);
  }

  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(WEB_PORTI);
  server_addr.sin_addr.s_addr = inet_addr(WEB_SERVER);

if
 (connect(sockfd, (
struct
 sockaddr *)&server_addr,
sizeof
(server_addr)) <

0
) {

printf
(
"connect failed\n"
);
    close(sockfd);
    vTaskDelete(
NULL
);
  }

printf
(
"connected!\n"
);

  write(sockfd, REQUEST,
strlen
(REQUEST));

int
 n = read(sockfd, response,
sizeof
(response) -
1
);

if
 (n >
0
) {
    response[n] =
'\0'
;

printf
(
"Response:\n%s\n"
, response);
  }

  close(sockfd);
  vTaskDelete(
NULL
);
}

记得在wb2开启的网页中打开哨兵,不然雷达不工作。

6. 效果

根据我填写的rador ?call=1 除了弹窗通知,还有响铃报警。

Released under the MIT License. Build Time 2026-09-11 14:52:23