node-red-contrib-periph-pressure 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,10 +16,22 @@ npm install node-red-contrib-periph-pressure
16
16
 
17
17
  | Node | Kind | Description |
18
18
  |------|------|-------------|
19
- | `bmp180-device` | config | I²C bus for a BMP180 |
20
- | `periph-bmp180` | input | Read temperature and pressure from a BMP180 |
21
- | `bmp280-device` | config | I²C bus for a BMP280 |
22
- | `periph-bmp280` | input | Read temperature and pressure from a BMP280 |
19
+ | `bmp085-device` | config | Bus configuration for a BMP085 |
20
+ | `periph-bmp085` | input | Reads temperature and pressure from a BMP085 barometric pressure sensor over I²C. |
21
+ | `bmp180-device` | config | Bus configuration for a BMP180 |
22
+ | `periph-bmp180` | input | Reads temperature and pressure from a BMP180 barometric pressure sensor over I²C. |
23
+ | `bmp280-device` | config | Bus configuration for a BMP280 |
24
+ | `periph-bmp280` | input | Reads temperature, pressure, and altitude from a BMP280 barometric pressure sensor. |
25
+ | `bmp384-device` | config | Bus configuration for a BMP384 |
26
+ | `periph-bmp384` | input | Reads temperature, pressure, and altitude from a BMP384 barometric pressure sensor. |
27
+ | `bmp581-device` | config | Bus configuration for a BMP581 |
28
+ | `periph-bmp581` | input | Reads pressure, temperature, and altitude from a BMP581 barometric pressure sensor. |
29
+ | `lps22df-device` | config | Bus configuration for a LPS22DF |
30
+ | `periph-lps22df` | input | Reads pressure, temperature, and altitude from an LPS22DF absolute pressure sensor. |
31
+ | `lps28dfw-device` | config | Bus configuration for a LPS28DFW |
32
+ | `periph-lps28dfw` | input | Reads pressure, temperature, and altitude from an LPS28DFW dual full-scale digital barometer. |
33
+ | `lps33hw-device` | config | Bus configuration for a LPS33HW |
34
+ | `periph-lps33hw` | input | Reads pressure and temperature from an LPS33HW water-resistant MEMS absolute pressure sensor. |
23
35
 
24
36
  ## Links
25
37
 
@@ -0,0 +1,66 @@
1
+ [
2
+ {
3
+ "id": "bmp085-device-1",
4
+ "type": "bmp085-device",
5
+ "name": "BMP085 @ i2c-1",
6
+ "bus": "1",
7
+ "oss": "0"
8
+ },
9
+ {
10
+ "id": "bmp085-read-1",
11
+ "type": "periph-bmp085",
12
+ "name": "BMP085",
13
+ "device": "bmp085-device-1",
14
+ "seaLevelPa": "101325",
15
+ "wires": [["debug-1"]]
16
+ },
17
+ {
18
+ "id": "inject-timer-1",
19
+ "type": "inject",
20
+ "name": "Every 5 seconds",
21
+ "topic": "",
22
+ "payload": "",
23
+ "payloadType": "date",
24
+ "repeat": "5",
25
+ "crontab": "",
26
+ "onceDelay": "0.1",
27
+ "wires": [["bmp085-read-1"]]
28
+ },
29
+ {
30
+ "id": "debug-1",
31
+ "type": "debug",
32
+ "name": "Debug output",
33
+ "active": true,
34
+ "tosideuit": false,
35
+ "console": "false",
36
+ "tostatus": "false",
37
+ "complete": "payload",
38
+ "targetType": "msg",
39
+ "x": 480,
40
+ "y": 200,
41
+ "wires": []
42
+ },
43
+ {
44
+ "id": "calibrate-here",
45
+ "type": "inject",
46
+ "name": "Calibrate to here",
47
+ "topic": "",
48
+ "payload": "",
49
+ "payloadType": "date",
50
+ "repeat": "0",
51
+ "crontab": "",
52
+ "onceDelay": "0.1",
53
+ "wires": [["calibrate-function-1"]]
54
+ },
55
+ {
56
+ "id": "calibrate-function-1",
57
+ "type": "function",
58
+ "name": "Recompute sea-level",
59
+ "func": "const pa = flow.get('bmp085-sea-level') || 101325;\nconst alt = msg.payload.altitude;\nconst newPa = msg.payload.pressure / Math.pow(1 - alt / 44330, 5.255);\nflow.set('bmp085-sea-level', newPa);\nnode.status({text: 'sea-level=' + newPa.toFixed(1) + ' Pa'});\nreturn msg;",
60
+ "outputs": "1",
61
+ "noerr": "0",
62
+ "x": 480,
63
+ "y": 320,
64
+ "wires": [["bmp085-read-1"]]
65
+ }
66
+ ]
@@ -0,0 +1,64 @@
1
+ [
2
+ {
3
+ "id": "bmp384_demo_tab",
4
+ "type": "tab",
5
+ "label": "BMP384 demo",
6
+ "info": "Altitude logger: every 5 seconds the inject node triggers the BMP384, which emits pressure, temperature, and computed altitude. The altitude uses the international barometric formula with P0 = 1013.25 hPa (ISA sea-level reference). Adjust the sea-level reference in the bmp384-device config to match your local conditions for an absolute reading; the relative drift over the session still tracks indoor / outdoor altitude change.",
7
+ "disabled": false,
8
+ "info_columns": 2
9
+ },
10
+ {
11
+ "id": "bmp384_device",
12
+ "type": "bmp384-device",
13
+ "name": "BMP384 on bus 1",
14
+ "bus": "1",
15
+ "addr": "0x76",
16
+ "osrP": "4",
17
+ "osrT": "1",
18
+ "iir": "2",
19
+ "odr": "3"
20
+ },
21
+ {
22
+ "id": "bmp384_inject",
23
+ "type": "inject",
24
+ "z": "bmp384_demo_tab",
25
+ "name": "every 5 s",
26
+ "props": [{ "p": "payload" }, { "p": "topic", "vt": "str", "v": "tick" }],
27
+ "repeat": "5",
28
+ "crontab": "",
29
+ "once": false,
30
+ "onceDelay": 0.1,
31
+ "topic": "",
32
+ "payload": "",
33
+ "payloadType": "date",
34
+ "x": 200,
35
+ "y": 100,
36
+ "wires": [["bmp384_read"]]
37
+ },
38
+ {
39
+ "id": "bmp384_read",
40
+ "type": "periph-bmp384",
41
+ "z": "bmp384_demo_tab",
42
+ "name": "BMP384",
43
+ "device": "bmp384_device",
44
+ "seaLevelHpa": "1013.25",
45
+ "x": 410,
46
+ "y": 100,
47
+ "wires": [["bmp384_debug"]]
48
+ },
49
+ {
50
+ "id": "bmp384_debug",
51
+ "type": "debug",
52
+ "z": "bmp384_demo_tab",
53
+ "name": "pressure / temp / altitude",
54
+ "active": true,
55
+ "tosidebar": true,
56
+ "console": false,
57
+ "tostatus": false,
58
+ "complete": "payload",
59
+ "targetType": "msg",
60
+ "x": 670,
61
+ "y": 100,
62
+ "wires": []
63
+ }
64
+ ]
@@ -0,0 +1,129 @@
1
+ [
2
+ {
3
+ "id": "bmp581-device-1",
4
+ "type": "bmp581-device",
5
+ "name": "BMP581 @ i2c-1",
6
+ "bus": "1",
7
+ "addr": "0x46",
8
+ "odr": "28",
9
+ "osrP": "0",
10
+ "osrT": "0",
11
+ "pressEn": "true"
12
+ },
13
+ {
14
+ "id": "bmp581-read-1",
15
+ "type": "periph-bmp581",
16
+ "name": "BMP581 Pressure/Temperature/Altitude",
17
+ "device": "bmp581-device-1",
18
+ "seaLevelPa": "101325",
19
+ "wires": [["debug-1", "chart-pres-1", "chart-temp-1", "chart-alt-1"]]
20
+ },
21
+ {
22
+ "id": "inject-timer-1",
23
+ "type": "inject",
24
+ "name": "Every second",
25
+ "topic": "",
26
+ "payload": "",
27
+ "payloadType": "date",
28
+ "repeat": "1",
29
+ "crontab": "",
30
+ "onceDelay": "0.1",
31
+ "wires": [["bmp581-read-1"]]
32
+ },
33
+ {
34
+ "id": "debug-1",
35
+ "type": "debug",
36
+ "name": "Debug output",
37
+ "active": true,
38
+ "tosideuit": false,
39
+ "console": "false",
40
+ "tostatus": "false",
41
+ "complete": "payload",
42
+ "targetType": "msg",
43
+ "x": 480,
44
+ "y": 200,
45
+ "wires": []
46
+ },
47
+ {
48
+ "id": "chart-pres-1",
49
+ "type": "ui_chart",
50
+ "name": "Pressure",
51
+ "group": "bmp581-group-1",
52
+ "order": 1,
53
+ "width": 6,
54
+ "height": 4,
55
+ "label": "Pressure (Pa)",
56
+ "chartType": "line",
57
+ "x": 480,
58
+ "y": 260,
59
+ "wires": []
60
+ },
61
+ {
62
+ "id": "chart-temp-1",
63
+ "type": "ui_chart",
64
+ "name": "Temperature",
65
+ "group": "bmp581-group-1",
66
+ "order": 2,
67
+ "width": 6,
68
+ "height": 4,
69
+ "label": "Temperature (°C)",
70
+ "chartType": "line",
71
+ "x": 480,
72
+ "y": 320,
73
+ "wires": []
74
+ },
75
+ {
76
+ "id": "chart-alt-1",
77
+ "type": "ui_chart",
78
+ "name": "Altitude",
79
+ "group": "bmp581-group-1",
80
+ "order": 3,
81
+ "width": 6,
82
+ "height": 4,
83
+ "label": "Altitude (m)",
84
+ "chartType": "line",
85
+ "x": 480,
86
+ "y": 380,
87
+ "wires": []
88
+ },
89
+ {
90
+ "id": "inject-set-sea-level-1",
91
+ "type": "inject",
92
+ "name": "Set as sea level",
93
+ "topic": "",
94
+ "payload": "",
95
+ "payloadType": "date",
96
+ "repeat": "",
97
+ "crontab": "",
98
+ "onceDelay": "0.1",
99
+ "wires": [["set-sea-level-function-1"]]
100
+ },
101
+ {
102
+ "id": "set-sea-level-function-1",
103
+ "type": "function",
104
+ "name": "Set sea level from current pressure",
105
+ "func": "var last = global.get('bmp581_last_pa');\nif (last !== undefined) {\n var device = RED.nodes.getNode('bmp581-device-1');\n if (device && device.driver) {\n device.driver._seaLevelPa = last;\n node.status({text: 'Sea level set to ' + last.toFixed(0) + ' Pa'});\n }\n}\nreturn msg;",
106
+ "outputs": 1,
107
+ "noerr": 0,
108
+ "x": 480,
109
+ "y": 440,
110
+ "wires": []
111
+ },
112
+ {
113
+ "id": "bmp581-group-1",
114
+ "type": "ui_group",
115
+ "name": "BMP581 Pressure/Temperature/Altitude",
116
+ "tab": "bmp581-tab-1",
117
+ "order": 1,
118
+ "disp": true,
119
+ "width": 12
120
+ },
121
+ {
122
+ "id": "bmp581-tab-1",
123
+ "type": "ui_tab",
124
+ "name": "BMP581 Demo",
125
+ "icon": "dashboard",
126
+ "order": 1,
127
+ "info": "This flow demonstrates the BMP581 barometric pressure sensor.\n\n**Continuous monitoring**: an inject node fires every second, reading pressure (Pa), temperature (°C), and altitude (m). The 60-second rolling window on each chart shows ambient drift.\n\n**Set as sea level**: click this button to capture the current pressure reading into the global context and use it as the sea-level reference for altitude. Press once at your location to zero the altimeter. The sensor's 1/64 Pa pressure resolution corresponds to ~8.3 cm altitude resolution at sea level."
128
+ }
129
+ ]
@@ -0,0 +1,130 @@
1
+ [
2
+ {
3
+ "id": "lps22df-device-1",
4
+ "type": "lps22df-device",
5
+ "name": "LPS22DF @ i2c-1",
6
+ "bus": "1",
7
+ "addr": "0x5C",
8
+ "odr": "3",
9
+ "avg": "0",
10
+ "enLpfp": "false",
11
+ "lfpfCfg": "0",
12
+ "bdu": "true"
13
+ },
14
+ {
15
+ "id": "lps22df-read-1",
16
+ "type": "periph-lps22df",
17
+ "name": "LPS22DF Altimeter",
18
+ "device": "lps22df-device-1",
19
+ "seaLevelPa": "101325",
20
+ "wires": [["debug-1", "chart-pres-1", "chart-temp-1", "chart-alt-1"]]
21
+ },
22
+ {
23
+ "id": "inject-timer-1",
24
+ "type": "inject",
25
+ "name": "Every 5 seconds",
26
+ "topic": "",
27
+ "payload": "",
28
+ "payloadType": "date",
29
+ "repeat": "5",
30
+ "crontab": "",
31
+ "onceDelay": "0.1",
32
+ "wires": [["lps22df-read-1"]]
33
+ },
34
+ {
35
+ "id": "debug-1",
36
+ "type": "debug",
37
+ "name": "Debug output",
38
+ "active": true,
39
+ "tosideuit": false,
40
+ "console": "false",
41
+ "tostatus": "false",
42
+ "complete": "payload",
43
+ "targetType": "msg",
44
+ "x": 480,
45
+ "y": 200,
46
+ "wires": []
47
+ },
48
+ {
49
+ "id": "chart-pres-1",
50
+ "type": "ui_chart",
51
+ "name": "Pressure",
52
+ "group": "lps22df-group-1",
53
+ "order": 1,
54
+ "width": 6,
55
+ "height": 4,
56
+ "label": "Pressure (Pa)",
57
+ "chartType": "line",
58
+ "x": 480,
59
+ "y": 260,
60
+ "wires": []
61
+ },
62
+ {
63
+ "id": "chart-temp-1",
64
+ "type": "ui_chart",
65
+ "name": "Temperature",
66
+ "group": "lps22df-group-1",
67
+ "order": 2,
68
+ "width": 6,
69
+ "height": 4,
70
+ "label": "Temperature (°C)",
71
+ "chartType": "line",
72
+ "x": 480,
73
+ "y": 320,
74
+ "wires": []
75
+ },
76
+ {
77
+ "id": "chart-alt-1",
78
+ "type": "ui_chart",
79
+ "name": "Altitude",
80
+ "group": "lps22df-group-1",
81
+ "order": 3,
82
+ "width": 6,
83
+ "height": 4,
84
+ "label": "Altitude (m)",
85
+ "chartType": "line",
86
+ "x": 480,
87
+ "y": 380,
88
+ "wires": []
89
+ },
90
+ {
91
+ "id": "inject-zero-1",
92
+ "type": "inject",
93
+ "name": "Set sea-level reference",
94
+ "topic": "",
95
+ "payload": "",
96
+ "payloadType": "date",
97
+ "repeat": "",
98
+ "crontab": "",
99
+ "onceDelay": "0.1",
100
+ "wires": [["zero-function-1"]]
101
+ },
102
+ {
103
+ "id": "zero-function-1",
104
+ "type": "function",
105
+ "name": "Zero altimeter at current pressure",
106
+ "func": "var device = RED.nodes.getNode('lps22df-device-1');\nif (device && device.driver) {\n device.driver.pressure().then(function(p) {\n node.status({text: 'sea-level ref set to ' + p.toFixed(0) + ' Pa'});\n });\n}\nreturn msg;",
107
+ "outputs": 1,
108
+ "noerr": 0,
109
+ "x": 480,
110
+ "y": 440,
111
+ "wires": []
112
+ },
113
+ {
114
+ "id": "lps22df-group-1",
115
+ "type": "ui_group",
116
+ "name": "LPS22DF Weather Station",
117
+ "tab": "lps22df-tab-1",
118
+ "order": 1,
119
+ "disp": true,
120
+ "width": 12
121
+ },
122
+ {
123
+ "id": "lps22df-tab-1",
124
+ "type": "ui_tab",
125
+ "name": "LPS22DF Demo",
126
+ "icon": "dashboard",
127
+ "order": 1,
128
+ "info": "This flow demonstrates the LPS22DF absolute pressure sensor in a continuous-monitoring scenario.\n\n**Default mode**: 10 Hz ODR, 4-sample averaging, BDU on, low-pass filter off. An inject node fires every 5 seconds, reading pressure (Pa), temperature (°C), and computed altitude (m). Charts show ambient drift over time.\n\n**Zero altimeter**: click the \"Set sea-level reference\" button to read the current pressure and use it as the local sea-level baseline. This re-zeros the altimeter at the current location — useful when starting from a known elevation, or when weather-driven pressure changes have accumulated over hours.\n\nThe LPS22DF offers 24-bit pressure resolution (4096 LSB/hPa) and an internal temperature channel for thermal compensation. The driver defaults are conservative; for noise-sensitive applications, enable the low-pass filter (LFPF) and increase the averaging depth in the device config node."
129
+ }
130
+ ]
@@ -0,0 +1,70 @@
1
+ [
2
+ {
3
+ "id": "lps28dfw-device-1",
4
+ "type": "lps28dfw-device",
5
+ "name": "LPS28DFW @ i2c-1",
6
+ "bus": "1",
7
+ "addr": "0x5C",
8
+ "odr": "4",
9
+ "avg": "2",
10
+ "fsMode": "0",
11
+ "lpfEn": "true",
12
+ "lpfCfg": "0"
13
+ },
14
+ {
15
+ "id": "lps28dfw-read-1",
16
+ "type": "periph-lps28dfw",
17
+ "name": "LPS28DFW Weather",
18
+ "device": "lps28dfw-device-1",
19
+ "seaLevelHpa": "1013.25",
20
+ "wires": [["debug-1", "function-altitude-1"]]
21
+ },
22
+ {
23
+ "id": "inject-timer-1",
24
+ "type": "inject",
25
+ "name": "Every 5 seconds",
26
+ "topic": "",
27
+ "payload": "",
28
+ "payloadType": "date",
29
+ "repeat": "5",
30
+ "crontab": "",
31
+ "once": false,
32
+ "onceDelay": 0.1,
33
+ "wires": [["lps28dfw-read-1"]]
34
+ },
35
+ {
36
+ "id": "function-altitude-1",
37
+ "type": "function",
38
+ "name": "Re-add altitude from payload",
39
+ "func": "// payload already contains altitude; just pass through.\nreturn msg;",
40
+ "outputs": 1,
41
+ "noerr": 0,
42
+ "initialize": "",
43
+ "finalize": "",
44
+ "libs": [],
45
+ "wires": [["debug-1"]]
46
+ },
47
+ {
48
+ "id": "debug-1",
49
+ "type": "debug",
50
+ "name": "Pressure / Temperature / Altitude",
51
+ "active": true,
52
+ "tosidebar": true,
53
+ "console": false,
54
+ "tostatus": false,
55
+ "complete": "payload",
56
+ "targetType": "msg",
57
+ "statusVal": "",
58
+ "statusType": "auto",
59
+ "x": 800,
60
+ "y": 120,
61
+ "wires": []
62
+ },
63
+ {
64
+ "id": "tab-flow-1",
65
+ "type": "tab",
66
+ "label": "LPS28DFW weather",
67
+ "disabled": false,
68
+ "info": "An inject node fires every 5 seconds, triggering the periph-lps28dfw node which reads pressure and temperature from the LPS28DFW dual full-scale digital barometer. The node also computes an estimated altitude from the barometric formula using a configurable sea-level reference (default 1013.25 hPa). The debug tab displays pressure (hPa), temperature (°C), and altitude (m). Adjust the lps28dfw-device config node to switch between Mode 1 (0–1260 hPa) and Mode 2 (0–4060 hPa) full-scale, change the averaging depth (4 to 512 samples), set the output data rate, and enable/disable the IIR low-pass filter."
69
+ }
70
+ ]
@@ -0,0 +1,141 @@
1
+ [
2
+ {
3
+ "id": "lps33hw-device-1",
4
+ "type": "lps33hw-device",
5
+ "name": "LPS33HW @ i2c-1",
6
+ "bus": "1",
7
+ "addr": "0x5C",
8
+ "odr": "2",
9
+ "bdu": "1",
10
+ "enLpfp": "1",
11
+ "lpfpCfg": "1",
12
+ "lcEn": "0",
13
+ "sim": "0"
14
+ },
15
+ {
16
+ "id": "lps33hw-read-1",
17
+ "type": "periph-lps33hw",
18
+ "name": "LPS33HW Altimeter",
19
+ "device": "lps33hw-device-1",
20
+ "wires": [["function-alt-1", "debug-1", "chart-pres-1", "chart-alt-1", "chart-temp-1"]]
21
+ },
22
+ {
23
+ "id": "inject-timer-1",
24
+ "type": "inject",
25
+ "name": "Every 1 second",
26
+ "topic": "",
27
+ "payload": "",
28
+ "payloadType": "date",
29
+ "repeat": "1",
30
+ "crontab": "",
31
+ "onceDelay": "0.1",
32
+ "wires": [["lps33hw-read-1"]]
33
+ },
34
+ {
35
+ "id": "function-alt-1",
36
+ "type": "function",
37
+ "name": "Compute altitude",
38
+ "func": "if (msg.payload && typeof msg.payload.pressure_Pa === 'number') {\n const p = msg.payload.pressure_Pa;\n msg.payload.altitude_m = 44330 * (1 - Math.pow(p / 101325, 1 / 5.255));\n}\nreturn msg;",
39
+ "outputs": 1,
40
+ "noerr": 0,
41
+ "x": 480,
42
+ "y": 200,
43
+ "wires": [["chart-alt-1"]]
44
+ },
45
+ {
46
+ "id": "inject-autozero-1",
47
+ "type": "inject",
48
+ "name": "AUTOZERO every 10 s",
49
+ "topic": "",
50
+ "payload": "",
51
+ "payloadType": "date",
52
+ "repeat": "10",
53
+ "crontab": "",
54
+ "onceDelay": "1",
55
+ "wires": [["autozero-function-1"]]
56
+ },
57
+ {
58
+ "id": "autozero-function-1",
59
+ "type": "function",
60
+ "name": "Refresh AUTOZERO reference",
61
+ "func": "var device = RED.nodes.getNode('lps33hw-device-1');\nif (device && device.driver) {\n device.driver.setAutozero();\n node.status({text: 'autozero @ ' + new Date().toISOString().substr(11, 8)});\n}\nreturn msg;",
62
+ "outputs": 1,
63
+ "noerr": 0,
64
+ "x": 480,
65
+ "y": 280,
66
+ "wires": [[]]
67
+ },
68
+ {
69
+ "id": "debug-1",
70
+ "type": "debug",
71
+ "name": "Debug output",
72
+ "active": true,
73
+ "tosidebar": true,
74
+ "console": false,
75
+ "tostatus": false,
76
+ "complete": "payload",
77
+ "targetType": "msg",
78
+ "x": 700,
79
+ "y": 200,
80
+ "wires": []
81
+ },
82
+ {
83
+ "id": "chart-pres-1",
84
+ "type": "ui_chart",
85
+ "name": "Pressure",
86
+ "group": "lps33hw-group-1",
87
+ "order": 1,
88
+ "width": 6,
89
+ "height": 4,
90
+ "label": "Pressure (Pa)",
91
+ "chartType": "line",
92
+ "x": 700,
93
+ "y": 260,
94
+ "wires": []
95
+ },
96
+ {
97
+ "id": "chart-alt-1",
98
+ "type": "ui_chart",
99
+ "name": "Altitude",
100
+ "group": "lps33hw-group-1",
101
+ "order": 2,
102
+ "width": 6,
103
+ "height": 4,
104
+ "label": "Altitude (m)",
105
+ "chartType": "line",
106
+ "x": 700,
107
+ "y": 320,
108
+ "wires": []
109
+ },
110
+ {
111
+ "id": "chart-temp-1",
112
+ "type": "ui_chart",
113
+ "name": "Temperature",
114
+ "group": "lps33hw-group-1",
115
+ "order": 3,
116
+ "width": 6,
117
+ "height": 4,
118
+ "label": "Temperature (°C)",
119
+ "chartType": "line",
120
+ "x": 700,
121
+ "y": 380,
122
+ "wires": []
123
+ },
124
+ {
125
+ "id": "lps33hw-group-1",
126
+ "type": "ui_group",
127
+ "name": "LPS33HW Altimeter",
128
+ "tab": "lps33hw-tab-1",
129
+ "order": 1,
130
+ "disp": true,
131
+ "width": 12
132
+ },
133
+ {
134
+ "id": "lps33hw-tab-1",
135
+ "type": "ui_tab",
136
+ "name": "LPS33HW Demo",
137
+ "icon": "dashboard",
138
+ "order": 1,
139
+ "info": "This flow demonstrates the LPS33HW water-resistant MEMS pressure sensor as an altimeter.\n\nThe device config node sets **10 Hz ODR with the ODR/20 low-pass filter enabled** — a fresh pressure sample every 100 ms with the on-chip LPF (~0.5 Hz cutoff) suppressing door-slam and HVAC noise. An inject node fires every second; each tick reads pressure (Pa) and temperature (°C). A function node converts the pressure to relative altitude using the barometric formula `44330 * (1 - (p / 101325)^(1/5.255))`.\n\nBecause atmospheric pressure drifts with the weather (~1 hPa per ~8 m of equivalent altitude), the AUTOZERO reference is refreshed every 10 s via a second inject + function node pair. This makes the altitude chart a true *relative* measurement — climb one floor (~3 m) and watch the trace shift, then return.\n\nAdjust the I²C bus, address (0x5C for SA0=GND, 0x5D for SA0=VDD), ODR, and LPF bandwidth in the device config node. Drop ODR to 1 Hz and disable the LPF for battery-powered weather monitoring instead of altimetry."
140
+ }
141
+ ]