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"
Ahh excellent, I'll definitely be checking that out. Thank you!