作者归档:admin

ML307R 中移动 AT指令HTTP GET请求AI读文档

下面的信息全部由AI 读取文档并解析出来,可以尝试,之前用的大夏龙雀的4G模块可以正常使用,想换一个新的模块。切入正题,未验证,谨慎。

要通过ML307R模块向 http://httpbin.org/get 发起GET请求并获取返回信息,需要完成以下步骤:

1. 串口连接与波特率

  • 波特率:ML307R模块的默认波特率为115200 bps。如果需要确认或修改波特率,可以使用以下AT命令:
  AT+IPR=115200

如果波特率已经是115200 bps,则无需修改。

  • 接线:使用CH340(USB转UART)模块连接ML307R时,接线方式如下:
  • TXD(CH340的发送端)连接到ML307R的 RXD(接收端)。
  • RXD(CH340的接收端)连接到ML307R的 TXD(发送端)。
  • GND(地线)连接到ML307R的 GND
  • VCC(电源正极)连接到ML307R的 3.3V 引脚(注意:ML307R的工作电压为3.3V,确保CH340模块的输出电压为3.3V,避免损坏模块)。

2. AT指令流程

以下是完成HTTP GET请求所需的AT指令步骤:

步骤 1:模块初始化

  • 确保模块已开机并初始化完成,等待模块返回 +MATREADY
  AT

如果返回 OK,则模块已就绪。

步骤 2:配置网络参数

  • 配置PDP上下文,设置为IPv4/IPv6双栈模式(默认即可)。
  AT+CGDCONT=1,"IPV4V6","cmnet"

步骤 3:建立网络连接

  • 激活PDP上下文,建立网络连接。
  AT+MIPCALL=1,1

如果连接成功,模块会返回类似以下信息:

  +MIPCALL: 1,1,"10.10.10.10","2001:db8::1"

步骤 4:创建HTTP实例

  • 创建HTTP实例,指定目标URL。
  AT+MHTTPCREATE="http://httpbin.org/get"

如果成功,模块会返回:

  +MHTTPCREATE: <httpid>

步骤 5:设置HTTP请求参数

  • 设置HTTP请求方法为GET。
  AT+MHTTPREQUEST=<httpid>,1,0,"/get"

其中 <httpid> 是上一步创建实例时返回的实例ID。

步骤 6:读取HTTP响应

  • 模块会通过URC(无响应命令)上报HTTP响应信息,格式如下:
  +MHTTPURC: "header",<httpid>,<code>,<header_len>,<header_data>
  +MHTTPURC: "content",<httpid>,<content_len>,<sum_len>,<cur_len>,<content_data>

如果需要主动读取缓存数据(如果启用了缓存模式),可以使用:

  AT+MHTTPREAD=<httpid>,0,<read_len>

步骤 7:删除HTTP实例

  • 完成请求后,删除HTTP实例以释放资源。
  AT+MHTTPDEL=<httpid>

步骤 8:断开网络连接

  • 断开PDP上下文,关闭网络连接。
  AT+MIPCALL=0,1

3. 完整示例

以下是完整的AT指令流程示例:

AT+IPR=115200 // 确保波特率为115200 bps
AT+CGDCONT=1,"IPV4V6","cmnet" // 配置PDP上下文
AT+MIPCALL=1,1 // 激活PDP上下文,建立网络连接
AT+MHTTPCREATE="http://httpbin.org/get" // 创建HTTP实例
AT+MHTTPREQUEST=<httpid>,1,0,"/get" // 发起GET请求
// 等待模块通过URC上报HTTP响应
AT+MHTTPDEL=<httpid> // 删除HTTP实例
AT+MIPCALL=0,1 // 断开网络连接

4. 注意事项

  • 确保CH340模块的输出电压为3.3V,以匹配ML307R模块的工作电压。
  • 如果模块返回错误码,可以参考《HTTP/HTTPS用户手册》中的错误码说明进行排查。
  • 如果需要频繁发起请求,建议在请求结束后保留HTTP实例,仅在必要时删除。

以上步骤和指令可以帮助你通过ML307R模块完成HTTP GET请求并获取返回信息。

如果需要在完成第一次HTTP GET请求后切换到另一个网址(假设为 http://example.com)并再次发起GET请求,可以通过以下步骤实现。以下是完整的AT指令流程:

步骤 1:删除当前HTTP实例

在切换到新的网址之前,需要先删除当前的HTTP实例,以释放资源。

AT+MHTTPDEL=<httpid>
  • <httpid> 是当前HTTP实例的ID,由 AT+MHTTPCREATE 返回。

步骤 2:创建新的HTTP实例

为新的网址创建一个新的HTTP实例。

AT+MHTTPCREATE="http://example.com"
  • 如果成功,模块会返回新的 <httpid>

步骤 3:设置新的HTTP请求

为新的网址设置GET请求。

AT+MHTTPREQUEST=<httpid>,1,0,"/get"
  • <httpid> 是新创建的HTTP实例ID。

步骤 4:读取HTTP响应

模块会通过URC上报HTTP响应信息。如果需要主动读取缓存数据(如果启用了缓存模式),可以使用:

AT+MHTTPREAD=<httpid>,0,<read_len>

步骤 5:删除新的HTTP实例

完成请求后,删除新的HTTP实例以释放资源。

AT+MHTTPDEL=<httpid>

完整示例

以下是完整的AT指令流程示例,包括切换到新的网址并发起GET请求:

// 删除当前HTTP实例
AT+MHTTPDEL=<httpid>

// 创建新的HTTP实例
AT+MHTTPCREATE="http://example.com"
+MHTTPCREATE: <httpid_new> // 模块返回新的实例ID

// 发起新的GET请求
AT+MHTTPREQUEST=<httpid_new>,1,0,"/get"

// 等待模块通过URC上报HTTP响应
+MHTTPURC: "header",<httpid_new>,<code>,<header_len>,<header_data>
+MHTTPURC: "content",<httpid_new>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除新的HTTP实例
AT+MHTTPDEL=<httpid_new>

注意事项

  1. 实例ID管理
  • 每次调用 AT+MHTTPCREATE 时,模块会返回一个新的 <httpid>。确保使用正确的 <httpid> 发起请求。
  • 删除实例后,该 <httpid> 将失效,不能再使用。
  1. 网络连接状态
  • 如果需要频繁切换网址,建议保持PDP上下文激活状态(即不关闭网络连接),以减少连接建立和断开的开销。
  • 如果需要断开网络连接,可以使用 AT+MIPCALL=0,1,并在需要时重新激活。
  1. 缓存模式
  • 如果启用了缓存模式(AT+MHTTPCFG="cached",<httpid>,1),可以通过 AT+MHTTPREAD 读取缓存数据。
  • 如果未启用缓存模式,数据将直接通过URC上报。
  1. 错误处理
  • 如果模块返回错误码,可以参考《HTTP/HTTPS用户手册》中的错误码说明进行排查。
  • 常见错误码包括:
    • 652:客户端未创建。
    • 653:客户端忙。
    • 656:连接失败。

通过以上步骤,你可以轻松地在完成一次HTTP请求后切换到另一个网址并再次发起GET请求。

合体::

// 确保波特率为115200 bps(如果需要修改波特率)
AT+IPR=115200

// 配置PDP上下文为IPv4/IPv6双栈模式
AT+CGDCONT=1,"IPV4V6","cmnet"

// 激活PDP上下文,建立网络连接
AT+MIPCALL=1,1

// 创建第一个HTTP实例(针对 http://httpbin.org/get)
AT+MHTTPCREATE="http://httpbin.org/get"
+MHTTPCREATE: <httpid1> // 假设返回的实例ID为 <httpid1>

// 发起第一个GET请求
AT+MHTTPREQUEST=<httpid1>,1,0,"/get"
// 等待模块通过URC上报HTTP响应
// +MHTTPURC: "header",<httpid1>,<code>,<header_len>,<header_data>
// +MHTTPURC: "content",<httpid1>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除第一个HTTP实例
AT+MHTTPDEL=<httpid1>

// 创建第二个HTTP实例(针对 http://example.com)
AT+MHTTPCREATE="http://example.com"
+MHTTPCREATE: <httpid2> // 假设返回的实例ID为 <httpid2>

// 发起第二个GET请求
AT+MHTTPREQUEST=<httpid2>,1,0,"/get"
// 等待模块通过URC上报HTTP响应
// +MHTTPURC: "header",<httpid2>,<code>,<header_len>,<header_data>
// +MHTTPURC: "content",<httpid2>,<content_len>,<sum_len>,<cur_len>,<content_data>

// 删除第二个HTTP实例
AT+MHTTPDEL=<httpid2>

// 断开网络连接
AT+MIPCALL=0,1

API openapi Python 简单类

from openai import OpenAI
import json

class Chat(object):
    def __init__(self,api_key,base_url,model_name="deepseek-ai/DeepSeek-V2.5",init_content="You are a helpful assistant.",):
        self.client = OpenAI(
            api_key=api_key, 
            base_url=base_url
        )
        self.messages=[
            {"role": "system", "content": init_content},
        ]
        self.model_name=model_name
    def add_message(self,content="hello world",role_type="user"):
        self.messages.append(
            {"role":role_type,"content":content}
        )
    def assistant(self,content=""):
        self.assistant_info={"role":"assistant","content":""}
        self.add_message(content,"assistant")
    def response(self,chat_message):
        self.add_message(chat_message)
        rep=self.client.chat.completions.create(
            model=self.model_name,
            messages=self.messages
        )
        end=rep.choices[0].message.content
        self.assistant(end)
        print(self.model_name,">>>: ",end)
        return end
    def init_message(self,init_content="You are a helpful assistant."):
        self.messages=[
            {"role": "system", "content": init_content},
        ]
    
api_key="sk-shanpdouituaxbqjscaymfviktf******"
base_url="https://api.siliconflow.cn/v1"
model_name="Pro/deepseek-ai/DeepSeek-R1"
chat=Chat(api_key,base_url,model_name)

# print(chat.messages)
chat.response("1+1等于几")
# print(chat.messages)
chat.response("再加1等于几")
# print(chat.messages)
chat.response("再加2等于几")
# print(chat.messages)



print("I am ",model_name,"!")
while 1:
    ask=input("You>>>: ")
    chat.response(ask)
    # time.sleep(1)

chat=Chat(api_key,base_url,model_name)
chat.response(“1+1等于几”)
#开始会话,保保存上下文的记忆
chat.init_message()
#重启会话

配置3个参数 ,直接就可以调用了,可以使用连续对话。

AI生产热点信息数据的模式的探索

事间的一切就是输入与输出。

输入:

具体执行,对新闻(今日头条)微博 知乎,及相对便于采集的文字信息作为输入。

处理:

对于热点信息的分析的原则:

1.探求事实,整合其余内容

2.做出总结。

输出:

总结+叙述

Mac上部署Qwen2.5-VL

环境准备:

torchvision安装(pytorch已安装的情况下,下面的是CPU版本,Mac无英伟达)

pip install torchvision -f https://mirrors.tuna.tsinghua.edu.cn/pytorch/wheels/cpu -i https://pypi.tuna.tsinghua.edu.cn/simple

安装qwen-vl-utils==0.0.8

pip install qwen-vl-utils==0.0.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

更新你的transformer

pip install --upgrade transformers -i https://pypi.tuna.tsinghua.edu.cn/simple

安装’accelerate>=0.26.0′

pip install 'accelerate>=0.26.0' -i https://pypi.tuna.tsinghua.edu.cn/simple

完蛋 CPU CUDA MPS(apple特有)每个都不一样

ollama 安装 linux

安装:

curl -fsSL https://ollama.com/install.sh | sh

默认是打开11434 端口 给本地应用使用(localhost:11434)

配置其他端口

vi ~/.ollama/config.json

修改配置文件,若没有则新创建;下面设置了50002 端口替换11434

{
    "OLLAMA_HOST": "0.0.0.0:50002"
}

修改完成后需要重启ollama服务,

systemctl restart ollama

或者临时解决 修改环境变export OLLAMA_HOST="0.0.0.0:50002" 重启失效,

然后运行 ollama serve

ollama通过脚本安装默认是开机自启动。

问题:内部应用RAGflow anythingLLM 无法访问