Sensor Graph
Windows macOS Linux RasPi

Example of data display
Overview
Various sensor data are recorded in an SQLite database and displayed on the screen in graph format. The database file can also be accessed by external applications.
You cannot run multiple instances of TWELITE STAGE APP with the same executable name to use the Sensor Graph simultaneously.
The database file is stored in the {MWSTAGE Installation}/log folder, and the filename is determined based on the executable name of TWELITE STAGE APP. If the executable names are the same, they will refer to the same database file. The TWELITE STAGE APP implementation does not assume multiple apps add data to the same database simultaneously. In some cases, this may cause database file access errors and cause TWELITE STAGE APP to crash.
For example, if you want to connect two MONOSTICK devices to a PC and run multiple “Sensor Graph” instances simultaneously, run multiple TWELITE STAGE apps with different executable names (e.g., TWELITE_Stage_a.exe, TWELITE_Stage_b.exe). The database filenames will be log/TWELITE_Stage_a_WSns.sqlite and log/TWELITE_Stage_b_WSns.sqlite, respectively.
- The database uses SQLite (sqlite3) and is stored in the file
{MW_STAGE Install}/log/{executable_name}_WSns.sqlite. - Screen navigation is
[List (with graph preview)]>[24-hour Data]>[Live View].- From
[24-hour Data], you can further navigate to[Year],[Month], and[Day (with graph preview)]selection screens.
- From
- About the
[Live]display screen:- Select a specific node from the list.
- Displays real-time data every second, showing data from the past 450 seconds.
- About the
[24-hour Data]display screen:- Displays data for a specific day.
- Updates every second; if multiple data points occur during that time, some are thinned out.
- Except at maximum zoom (1 pixel = 1 second), the average value for the data within each pixel range is displayed.
- If values exceed the screen, measurement points are shown at the top or bottom edges.
- If the current time is included, the display updates with new data.
- Mouse wheel or cursor keys
↑and↓: zoom in/out on the time axis. - Moving the mouse pointer: briefly displays the data corresponding to the time under the pointer.
- Cursor keys
→and←: move to the adjacent data point.
- Cursor keys
- Mouse click & drag: scroll (only when zoomed).
- When zoomed, scrollbar operation is also possible.
- The
[CSV Export]function outputs all data in the database.
Operations
| Operation | Description |
|---|---|
| Mouse drag(graph area) | Move the displayed sample position when zoomed. |
| Mouse drag(bottom scrollbar) | Move the displayed sample position. |
Cursor keys→ ← | Move the sample display area. |
Cursor keys↑ ↓ | Zoom in/out on the sample horizontal axis. |
[Live] | Switch to the view displaying the latest data updated every second. |
[24-hour Data] | Switch to the daily graph view. |
[<<List] | Switch to the list selection screen. |
[Year] [Month] [Day] | Select a specific date by year, month, and day. |
[Latest] | Switch to today’s data. |
[CSV Export] | Export one day’s data to a CSV file. |
In the list, [Display] | Change the list display mode. |
In the list, [Sort] | Change the list sorting order. |
In the list, [↑] | Reverse the list sorting order. |
Editing Sensor Node Notes (Supplementary Information)
v1.3.9+In the “24-hour Data” screen, left-clicking on the sensor node’s note area at the top right of the screen allows you to edit the note using a prompt.

Editing sensor node notes (IME enabled)
| Key | Description |
|---|---|
| Normal half-width characters | If you directly enter normal half-width alphanumeric characters, they are displayed on the screen. |
| Input via IME | Input from IME is displayed as intermediate characters at the top left of the screen.Press ENTER to confirm the input string. |
BS | Deletes the last character displayed. |
ENTER | Reflects the entered string in the database. |
IME input operations may depend on the system environment.
Unexpected characters may be entered during IME input. If unwanted characters appear in the input area, delete them using the BS key.
Screen Navigation
The basic screens are divided into three types: List, 24-hour, and Live.
[List] <--> [24-hour] <--> [Live]
↓↑
[Year/Month/Day Selection]
Starting Sensor Graph Mode on Launch
Specify 32 in [STAGE Common Settings → Launch App Specification].
About the Database Tables
sensor_data
Stores received data.
| Column Name | Type | Description |
|---|---|---|
_uqid | INTEGER | Sequential number used in the database |
sid | INTEGERint32_t | Serial number stored as int32_t type.For example, a serial number “8123abcd” is stored as the integer value -2,128,368,691. |
ts | INTEGERint64_t | Timestamp when the system received the packet, stored as int64_t.UNIX epoch (seconds since 1970). |
ts_msec | INTEGER | Milliseconds part of the timestamp. |
year | INTEGER | Year part of the local time from the timestamp. |
month | INTEGER | Month part of the local time from the timestamp. |
day | INTEGER | Day part of the local time from the timestamp. |
hour | INTEGER | Hour part of the local time from the timestamp. |
lid | INTEGER | Identifier such as LID assigned by the user. |
lqi | INTEGER | Link Quality Indicator, an estimate of reception strength. |
pkt_seq | INTEGER | Packet sequence number. The range of values depends on the firmware. |
pkt_type | INTEGER | Type of wireless packet.2 PAL AMB 6 ARIA 1 PAL MAG *3 PAL MOT 5 CUE 0x101 App_Twelite *0x103 App_IO*Currently unsupported types |
value | REAL | Measured value (definition varies by packet type).pkt_type->2,6: Temperature [°C]1: Magnet detection (00->No magnet, 01->N pole, 02->S pole)3,5: X-axis acceleration (average if multiple samples in packet) [G]0x101,103: Input IO bitmap (same as lower 8 bits of val_dio) |
value1 | REAL | Measured value (definition varies by packet type).pkt_type->2,6: Humidity [%]1: Unused3,5: Y-axis acceleration (average if multiple samples in packet) [G]0x101: ADC1 [V]103: Unused |
value2 | REAL | Measured value (definition varies by packet type).pkt_type->2: Illuminance [lx]6: Unused1: Unused3,5: Z-axis acceleration (average if multiple samples in packet) [G]0x101: ADC2 [V]103: Unused |
value3 | REAL | Measured value (definition varies by packet type).pkt_type->2: Unused6: Unused1: Unused3,5: Unused0x101: ADC3 [V]103: Unused |
val_vcc_mv | INTEGER | Power supply voltage [mV] |
val_dio | INTEGERint32_t | b0..b7: Values of DI1..DI8 (1 is LOW, 0 is HIGH level)b24..b25: Magnet value (if b28 is 1): 00->No magnet, 01->N pole, 10->S poleb28: If 1, magnet data is stored in b24..b25b31: Periodic transmission bit (magnet only) |
val_adc1_mv | INTEGER | ADC1 measurement value for pkt_type->1,2,3,0x101 |
val_adc2_mv | INTEGER | ADC4 measurement value for pkt_type->0x101 |
val_aux | INTEGER | For storing other data |
ev_src | INTEGER | Event source |
ev_id | INTEGER | Event IDpal_type->5: Dice (1...6)16→MOVE etc.Refer to documentation |
ev_param | INTEGER | Event parameter |
sensor_node
Stores text notes (supplementary information) for sensor nodes.
| Column Name | Type | Description |
|---|---|---|
sid | INTEGER | SID as described above |
sid_text | TEXT | String representation of SID converted to hexadecimal for readability |
desc | TEXTUTF-8 | Note (supplementary information) corresponding to the SID, displayed in lists, etc. |
sensor_last
Manages the timestamp of the last received data.
| Column Name | Type | Description |
|---|---|---|
sid | INTEGER | SID as described above |
ts | INTEGER | Timestamp of the last reception |
lid | Excerpt of data from the last reception below | |
lqi | ||
pkt_type | ||
value | ||
value1 | ||
value2 | ||
value3 | ||
val_vcc_mv | ||
val_dio | ||
ev_id |