Quick answer
For the first contact objective, read the thermometer’s live value, then use the transmitter to connect to Earth and transmit a key/value pair. The working pattern is thermometer → get_value() → transmitter.connect("earth") → transmitter.transmit("current_temperature", value). When it lands, the game pays the first credit reward and opens more systems.
Working script
thermo = get_component("thermometer")
value = thermo.get_value()
transmitter = get_component("transmitter")
transmitter.connect("earth")
transmitter.transmit("current_temperature", value)
Why this works
get_component("thermometer")gives you the live temperature source.get_value()reads the current sensor result instead of guessing a number.connect("earth")establishes the uplink for the current run.transmit("current_temperature", value)sends the key/value payload the starter contract expects.
What confirms success
The starter footage shows first contact completing after the successful transmission. The useful signal is the objective message and the credit change, not a special success return value from transmit().
Fix these errors first
“Expected string for key”
The first transmit argument is not a string. Use a quoted key such as "current_temperature" or, for a later contract, the contract ID string.
The script reads the temperature but does not finish the objective
Check that the transmitter actually connects to earth in the same script run before the transmit call.
The component cannot be found
Check the exact component names shown in the in-game docs. The starter footage uses the thermometer and transmitter component references.