Software Configuration
Legacy Documentation
Thingsee One and its associated software tools have been discontinued. This documentation is maintained for reference purposes only. No further software updates will be released.
This guide covers how to continue using your Thingsee One device with a self-hosted HTTP server after the official Thingsee Cloud has been discontinued.
Overview
Even though the official Thingsee One Cloud platform is no longer available, you can still use your device by:
- Connecting it to your own HTTP server
- Manually editing the configuration files on the device
- Creating custom profiles for your use case
Connect Thingsee One to a Self-Hosted HTTP Server
Take a backup of your device configuration files before making any changes! These changes will break the connection to the original Thingsee Cloud (which is no longer operational anyway).
Prerequisites
- Thingsee One device
- USB cable to access device storage
- Your own HTTP server to receive data
- Text editor for JSON files
Step 1: Edit CLOUD.JSN
Connect your Thingsee One via USB and edit the CLOUD.JSN file:
{
"connectors": [
{
"connectorId": 123456789,
"connectorName": "My HTTP server",
"deviceAuthUuid": "YOURSERIALHERE"
}
],
"connections": [
{
"wifiConnections": [
{
"ssid": "MySSID",
"encryption": "wpa2",
"password": "My password here",
"connectionId": 1
}
]
}
]
}
Configuration options:
| Field | Description |
|---|---|
deviceAuthUuid | Match this to your Thingsee One QR code/serial number. Find it in DEVICE.JSN under device → serial |
connectorId | Any numeric value (e.g., 54143252) - useful when managing multiple devices |
ssid | Your WiFi network name |
password | Your WiFi password |
Step 2: Edit PROFILE.JSN
The profile controls what data is collected and when it’s sent to your server. You need to add/edit the cloud object under actions:
"cloud": {
"sendEvent": true,
"host": "your.domain.com",
"api": "tsone"
}
Example Profiles
GPS Tracker Profile
This profile sends environment values every 12 hours and GPS info whenever there is an impact event.
{
"pId": "1",
"apiVersion": "00.18",
"initPuId": 1,
"purposes": [
{
"puId": 1,
"name": "Thingsee tracker",
"initStId": 0,
"states": [
{
"stId": 0,
"name": "- Poll -",
"events": [
{
"evId": 0,
"name": "Location & Batt level",
"actions": {
"cloud": {
"sendEvent": true,
"host": "your.domain.com",
"api": "tsone"
}
},
"causes": [
{
"sId": "0x00010100",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 43200000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00010200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 43200000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00010400",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 43200000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00030200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 43200000 },
"thresholds": { "isAny": true }
}
]
},
{
"evId": 1,
"name": "Bumped",
"actions": {
"engine": { "gotoStId": 1 },
"cloud": { "sendEvent": false, "sendPush": false }
},
"causes": [
{
"sId": "0x00050400",
"threshold": { "count": 1 },
"measurement": { "log": false },
"thresholds": { "isGt": 1 }
}
]
}
]
},
{
"stId": 1,
"name": "- Bump -",
"events": [
{
"evId": 1,
"name": "Task 1",
"actions": {
"engine": { "gotoStId": 0 },
"cloud": {
"sendEvent": true,
"host": "your.domain.com",
"api": "tsone"
}
},
"causes": [
{
"sId": "0x00010100",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 60000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00010200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 60000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00010400",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 60000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00030200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 60000 },
"thresholds": { "isAny": true }
}
]
}
]
}
]
}
]
}
Environment Monitoring Profile
This profile sends temperature, humidity, pressure, and battery data every 5 minutes.
{
"pId": "1",
"apiVersion": "00.18",
"initPuId": 1,
"purposes": [
{
"puId": 1,
"name": "Thingsee PLAY",
"initStId": 0,
"states": [
{
"stId": 0,
"name": "5min",
"events": [
{
"evId": 0,
"name": "Env & Batt level",
"actions": {
"cloud": {
"sendEvent": true,
"host": "your.domain.com",
"api": "tsone"
}
},
"causes": [
{
"sId": "0x00060100",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 300000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00060200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 300000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00060400",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 300000 },
"thresholds": { "isAny": true }
},
{
"sId": "0x00030200",
"threshold": { "count": 1 },
"measurement": { "log": false, "interval": 300000 },
"thresholds": { "isAny": true }
}
]
}
]
}
]
}
]
}
Sensor IDs Reference
| Sensor ID | Description |
|---|---|
0x00010100 | GPS Latitude |
0x00010200 | GPS Longitude |
0x00010400 | GPS Altitude |
0x00030200 | Battery Level |
0x00050400 | Impact/Bump Detection |
0x00060100 | Temperature |
0x00060200 | Humidity |
0x00060400 | Pressure |
Interval Reference
| Milliseconds | Duration |
|---|---|
60000 | 1 minute |
300000 | 5 minutes |
3600000 | 1 hour |
43200000 | 12 hours |
86400000 | 24 hours |
Server-Side Implementation
Your HTTP server will receive POST requests with JSON payloads containing sensor data. A minimal server implementation should:
- Accept POST requests at the configured endpoint
- Parse the JSON payload
- Store or process the sensor data
- Return a 200 OK response
Troubleshooting
| Issue | Solution |
|---|---|
| Device not connecting | Verify WiFi credentials in CLOUD.JSN |
| No data received | Check that host is correct in profile and server is accessible |
| Invalid JSON errors | Validate your JSON files with a JSON validator before saving |
| Device not updating | Restart the device after changing configuration files |
Important Notes
- Always backup configuration files before making changes
- The device uses 2G cellular as fallback if WiFi is unavailable
- Battery life depends heavily on reporting interval configuration
- The
apifield should remain"tsone"for compatibility with standard parsers