false true false srv 127.0.0.1 = rest_port 9081 = mqtt_srv 127.0.0.1 = continue false 1 1 1 false true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true false false ${mqtt_srv} 1883 3.1 10 false 10 TCP false conn_ true 300 0 0 true true false { "id": "rule1", "name": "混合规则", "graph": { "nodes": { "demo": { "type": "source", "nodeType": "mqtt", "props": { "datasource": "devices/+/messages", "timestamp": "ts" } }, "myfilter": { "type": "operator", "nodeType": "filter", "props": { "expr": "temperature > 20" } }, "logfunc": { "type": "operator", "nodeType": "function", "props": { "expr": "log(temperature) as log_temperature" } }, "sinfunc": { "type": "operator", "nodeType": "function", "props": { "expr": "sin(temperature) as sin_temperature" } }, "window": { "type": "operator", "nodeType": "window", "props": { "type": "slidingwindow", "unit": "ss", "size": 1 } }, "winfilter": { "type": "operator", "nodeType": "filter", "props": { "expr": "humidity > 20" } }, "aggfunc": { "type": "operator", "nodeType": "aggFunc", "props": { "expr": "avg(temperature) as avg_temperature" } }, "pick": { "type": "operator", "nodeType": "pick", "props": { "fields": ["log_temperature", "humidity"] } }, "mqtt1": { "type": "sink", "nodeType": "mqtt", "props": { "server": "tcp://${mqtt_srv}:1883", "topic": "result1", "sendSingle": true } }, "mqtt2": { "type": "sink", "nodeType": "mqtt", "props": { "server": "tcp://${mqtt_srv}:1883", "topic": "result2", "sendSingle": true } } }, "topo": { "sources": ["demo"], "edges": { "demo": ["myfilter", "sinfunc"], "myfilter": ["logfunc"], "logfunc": ["pick"], "pick": ["mqtt1"], "sinfunc": ["window"], "window": ["winfilter"], "winfilter": ["aggfunc"], "aggfunc": ["mqtt2"] } } } } = ${srv} ${rest_port} /rules POST true false true false Rule rule1 was created Assertion.response_data true 16 ${srv} ${rest_port} /rules/rule1/status GET true false true false $.source_demo_0_records_in_total 0 true false false false true 5 , iot_data_ts.txt false false true shareMode.thread false device_id,ts,temperature,humidity devices/${device_id}/messages 0 false String 1024 {"device_id":${device_id},"ts":${ts},"temperature": ${temperature}, "humidity" : ${humidity}} false ${srv} ${rest_port} /rules/rule1/status GET true false true false $.source_demo_0_records_in_total 5 true false false false $.sink_mqtt1_0_records_out_total 5 true false false false $.sink_mqtt2_0_records_out_total 5 true false false false ${srv} ${rest_port} /rules/rule1 DELETE true false true false Rule rule1 is dropped. Assertion.response_data false 16 500 continue false 5 1 1 false true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true , graph_mix_rule_result1.txt false false true shareMode.group false humidity,log ${mqtt_srv} 1883 3.1 10 false 10 TCP false conn_ true 300 0 0 true result1 0 false true number of received messages 1 $.humidity ${humidity} true false false false $.log_temperature ${log} true false false false continue false 5 1 1 false true false saveConfig true true true true true true true false true true false false false true false false false true 0 true true true true true , graph_mix_rule_result2.txt false false true shareMode.group false avg,sin ${mqtt_srv} 1883 3.1 10 false 10 TCP false conn_ true 300 0 0 true result2 0 false true number of received messages 1 $.avg_temperature ${avg} true false false false $.sin_temperature ${sin} true false false false