Greetings Pioneers! I got my local dedicated server stats added to Home Assistant and wanted to share if anyone else is interested.

First off the API documentation can be found at “steamapps/common/Satisfactory/CommunityResources/DedicatedServerAPIDocs.md” or here thanks to redditor /u/suudo.

I generated an API token by opening the game client, clicking Server Manager > Console and entering the command server.GenerateAPIToken and added the following code block below to my configuration.yaml file.

NOTE: I assume this goes without saying, but just wanted to note that you need to input your own server IP at YOUR_DEDICATED_SERVER_IP and input your own API token at YOUR_TOKEN in my example below. If there’s more you want to see please consult the documentation I’ve linked above.

NOTE: I specified a unique_id for each sensor so they are customizable in the UI - this can be literally anything as long as it’s unique.

rest:
  - scan_interval: 60
    method: POST
    resource: "https://YOUR_DEDICATED_SERVER_IP:7777/api/v1"
    verify_ssl: false
    headers:
      Authorization: Bearer YOUR_TOKEN
      Content-Type: "application/json"
    payload: '{ "function": "QueryServerState" }'
    sensor:
      - name: "Satisfactory Connected Players"
        value_template: "{{ value_json.data.serverGameState.numConnectedPlayers | int }}"
        unique_id: 63628608-0139-40f0-b163-d2534d17ca78
        unit_of_measurement: "Players"
      - name: "Satisfactory Tech Tier"
        value_template: "{{ value_json.data.serverGameState.techTier | int }}"
        unique_id: 63628608-0139-40f0-b163-d2534d17ca79
      - name: "Satisfactory Average Tick Rate"
        value_template: "{{ value_json.data.serverGameState.averageTickRate | float | round(1) }}"
        unique_id: 63628608-0139-40f0-b163-d2534d17ca7a
        unit_of_measurement: "Ticks/s"
      - name: "Satisfactory Active Session Name"
        value_template: "{{ value_json.data.serverGameState.activeSessionName }}"
        unique_id: 63628608-0139-40f0-b163-d2534d17ca7b
      - name: "Satisfactory Total Game Duration"
        value_template: "{{ (value_json.data.serverGameState.totalGameDuration | int) // 3600 }}"
        unique_id: 63628608-0139-40f0-b163-d2534d17ca7c
        device_class: "duration"
        unit_of_measurement: "hours"
  • ahal@lemmy.ca
    link
    fedilink
    arrow-up
    6
    ·
    1 month ago

    Nice, I did get the API working awhile back but was a little disappointed by how limited it was… But now I have a purpose for it, thanks!

    It’s somewhat satisfying to automate monitoring of your automation sim using your home automation platform.