Mně osobně ten tvůj kód chybu nevyhazuje a jak už tu někdo psal, asi bude chyba ve vstupních datech.
A i tu bylo psáno něco o file_put_contents, proč nepoužiješ todle to? Vypadá to líp.
<?php
$data = file_get_contents('input.txt');
$array = explode("|", $data);
file_put_contents('output.txt', $data);
file_put_contents('teplota_venku', $array[0]);
file_put_contents('vlhkost_venku', $array[1]);
file_put_contents('signal_venku', $array[2]);
?>