91 lines
2.5 KiB
Python
91 lines
2.5 KiB
Python
|
|
"""
|
|||
|
|
向本地 InfluxDB 写入测试数据
|
|||
|
|
url: http://127.0.0.1:8086
|
|||
|
|
bucket: PCM
|
|||
|
|
measurement: PCM_Measurement
|
|||
|
|
token: 用户提供
|
|||
|
|
org: 这里假设也是 PCM,如果你的组织名不是 PCM,请改成真实 org 名字
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from influxdb_client import InfluxDBClient, Point, WriteOptions
|
|||
|
|
import random
|
|||
|
|
import datetime
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
URL = "http://127.0.0.1:8086"
|
|||
|
|
TOKEN = "gDWhyQlxdW3VN3VZIY_D13yA0ZUp7hV7QeXrxRbWqVNfakL73Ltz18lZ9rLS0lp1UcD_5t2u6_Io9YrdSiVODA=="
|
|||
|
|
ORG = "MEASCON" # 如果你的 org 不是 PCM,这里要改
|
|||
|
|
BUCKET = "PCM"
|
|||
|
|
|
|||
|
|
MEASUREMENT = "PCM_Measurement"
|
|||
|
|
DATA_TYPE = "LSDAQ" # 对应你图里的 data_type 列
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 一些示例字段名,按你截图里大致的含义写的
|
|||
|
|
NUMERIC_FIELDS = [
|
|||
|
|
"减速箱小轴承1",
|
|||
|
|
"十字头#1",
|
|||
|
|
"环境温度",
|
|||
|
|
"减速箱小轴承2",
|
|||
|
|
"减速箱小轴承4",
|
|||
|
|
"减速箱大轴承#3",
|
|||
|
|
"主轴承#3",
|
|||
|
|
"主轴承#4",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
WARNING_FIELDS = [
|
|||
|
|
"主轴承#3.warning",
|
|||
|
|
"主轴承#4.warning",
|
|||
|
|
"主轴承#5.warning",
|
|||
|
|
"减速箱小轴承1.warning",
|
|||
|
|
"减速箱小轴承2.warning",
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
def build_point() -> Point:
|
|||
|
|
"""构造一条 PCM_Measurement 测试数据"""
|
|||
|
|
now = datetime.datetime.utcnow()
|
|||
|
|
|
|||
|
|
p = (
|
|||
|
|
Point(MEASUREMENT)
|
|||
|
|
.tag("data_type", DATA_TYPE)
|
|||
|
|
.time(now)
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 数值类字段:写入随机浮点
|
|||
|
|
for f in NUMERIC_FIELDS:
|
|||
|
|
p = p.field(f, round(random.uniform(-50.0, 300.0), 3))
|
|||
|
|
|
|||
|
|
# 告警字段:写入 0/1
|
|||
|
|
for f in WARNING_FIELDS:
|
|||
|
|
p = p.field(f, random.randint(0, 1))
|
|||
|
|
|
|||
|
|
return p
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main_once():
|
|||
|
|
"""只写入一批数据"""
|
|||
|
|
with InfluxDBClient(url=URL, token=TOKEN, org=ORG) as client:
|
|||
|
|
write_api = client.write_api(write_options=WriteOptions(batch_size=1))
|
|||
|
|
point = build_point()
|
|||
|
|
write_api.write(bucket=BUCKET, record=point)
|
|||
|
|
print("wrote one point to bucket=PCM, measurement=PCM_Measurement")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main_loop(interval_sec: float = 1.0):
|
|||
|
|
"""每 interval_sec 秒写入一批数据,方便做实时测试"""
|
|||
|
|
with InfluxDBClient(url=URL, token=TOKEN, org=ORG) as client:
|
|||
|
|
write_api = client.write_api(write_options=WriteOptions(batch_size=1))
|
|||
|
|
while True:
|
|||
|
|
point = build_point()
|
|||
|
|
write_api.write(bucket=BUCKET, record=point)
|
|||
|
|
print("wrote point at", datetime.datetime.now().isoformat())
|
|||
|
|
time.sleep(interval_sec)
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
# 只写一组就用 main_once()
|
|||
|
|
main_once()
|
|||
|
|
|
|||
|
|
# 如果想持续写入做实时测试,改成:
|
|||
|
|
# main_loop(1.0)
|