通过socket获取klipper模块的属性值
- 启用API服务器
klipper.py运行时应加上 -a 参数, -a /tmp/klippy_uds - 建立tcp连接
使用/tmp/klippy_uds - 请求
使用json
json末尾加0x30
请求字必须包含一个”method”字段,其值应包含一个可用的Klipper端点”endpoint”名称字符串 - objects/subscribe订阅后,如果数据有变化,klipper主动发json数据
- 添加字段
在load_config模块对应类中添加get_status方法
def get_status(self, eventtime):
return {‘aaa’: self.a}
总结:建立socket -> 发json -> 根据method的值找到endpoint -> 遍历所有订阅的模块,调用get_status方法 -> 返回json
参见Moonraker项目,该项目是一个流行的工具,可以将HTTP请求转发到Klipper的API服务器Unix域插座。
python3 /home/lhgcs/klipper/scripts/whconsole.py /tmp/klippy_uds
import socket
import time
import json
"""
ip = "127.0.0.1"
port = 80
# 创建一个socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 定义服务器的IP地址和端口号
server_address = (ip, port)
# 连接到服务器
client.connect(server_address)
"""
uds_filename = "/home/lhgcs/printer_data/comms/klippy.sock"
# uds_filename = "/tmp/klippy_uds


1339

被折叠的 条评论
为什么被折叠?



