Software Configuration

Legacy software configuration guide for Thingsee One - connect to self-hosted servers after cloud discontinuation.

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:

  1. Connecting it to your own HTTP server
  2. Manually editing the configuration files on the device
  3. Creating custom profiles for your use case

Connect Thingsee One to a Self-Hosted HTTP Server

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:

FieldDescription
deviceAuthUuidMatch this to your Thingsee One QR code/serial number. Find it in DEVICE.JSN under device → serial
connectorIdAny numeric value (e.g., 54143252) - useful when managing multiple devices
ssidYour WiFi network name
passwordYour 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 IDDescription
0x00010100GPS Latitude
0x00010200GPS Longitude
0x00010400GPS Altitude
0x00030200Battery Level
0x00050400Impact/Bump Detection
0x00060100Temperature
0x00060200Humidity
0x00060400Pressure

Interval Reference

MillisecondsDuration
600001 minute
3000005 minutes
36000001 hour
4320000012 hours
8640000024 hours

Server-Side Implementation

Your HTTP server will receive POST requests with JSON payloads containing sensor data. A minimal server implementation should:

  1. Accept POST requests at the configured endpoint
  2. Parse the JSON payload
  3. Store or process the sensor data
  4. Return a 200 OK response

Troubleshooting

IssueSolution
Device not connectingVerify WiFi credentials in CLOUD.JSN
No data receivedCheck that host is correct in profile and server is accessible
Invalid JSON errorsValidate your JSON files with a JSON validator before saving
Device not updatingRestart 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 api field should remain "tsone" for compatibility with standard parsers