Это зависимое дополнение к потоку «Сохранение телеметрии в Node-RED», рассчитывающее барическую тенденцию и подготавливающую данные, поступающие с датчика BME680, к сохранению в базу SQLite.
Для работы цепочки необходимо, чтобы название таблицы в узле «Подготовка запроса» совпадало с соответствующим названием, указанным в узле «Именование таблиц».
[ { "id": "c23c9680.557e48", "type": "mqtt in", "z": "551f568e.e62c18", "name": "Датчик на балконе", "topic": "barometer_XXXXXX/tele/SENSOR", "qos": "2", "datatype": "json", "broker": "8745b931.133868", "x": 150, "y": 100, "wires": [ [ "bd9802f4.d7072" ] ] }, { "id": "bd9802f4.d7072", "type": "change", "z": "551f568e.e62c18", "name": "Подготовка запроса", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "SELECT pressureSt FROM balcony WHERE timestamp <= datetime('now', '+10 hours', '-3 hours') ORDER BY timestamp DESC LIMIT 1", "tot": "str" }, { "t": "move", "p": "payload", "pt": "msg", "to": "originalpayload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 420, "y": 100, "wires": [ [ "cfb7d3fb.f8c07" ] ], "info": "Запрашиваем из базы данных только одну запись, сделанную 3 часа назад -- отнимаем от текущего времени 3 часа.\n\nТ.к. данные в базу пишутся в UTC+10:00, необходимо эту разницу компенсировать -- для этого добавляем 10 часов." }, { "id": "cfb7d3fb.f8c07", "type": "sqlite", "z": "551f568e.e62c18", "mydb": "dbb6e10a.23844", "sqlquery": "msg.topic", "sql": "", "name": "Запрос к базе данных", "x": 700, "y": 100, "wires": [ [ "d7825b78.bbf818" ] ] }, { "id": "d7825b78.bbf818", "type": "change", "z": "551f568e.e62c18", "name": "Расчет тенденции", "rules": [ { "t": "set", "p": "originalpayload.pressure_bt", "pt": "msg", "to": "( originalpayload.pressure_st - ( $type(payload[0].pressureSt) = \"number\" ? payload[0].pressureSt : originalpayload.pressure_st ) ) ~> $round(2)", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "_topic", "tot": "msg" }, { "t": "set", "p": "topic", "pt": "msg", "to": "_topic", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 150, "y": 160, "wires": [ [ "20b71be1.6e7934" ] ], "info": "Считаем барическую тенденцию за 3 предшествующих часа. Если данных нет, возвращаем 0." }, { "id": "20b71be1.6e7934", "type": "link out", "z": "551f568e.e62c18", "name": "", "links": [ "ec90713c.79299" ], "x": 305, "y": 160, "wires": [] }, { "id": "8745b931.133868", "type": "mqtt-broker", "name": "localhost", "broker": "localhost", "port": "1883", "clientid": "", "usetls": false, "compatmode": false, "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "closeTopic": "", "closeQos": "0", "closePayload": "", "willTopic": "", "willQos": "0", "willPayload": "" }, { "id": "dbb6e10a.23844", "type": "sqlitedb", "db": "c:\\noderedDB\\telemetry.db", "mode": "RWC" } ]
Обсуждение