Giusto per completare la logica di questo caso vi scrivo come ho letto io una risposta da lettura stato del dispositivo.
In questo caso il dispositivo risponde con una stringa che contiene dopo un certo comando (in questo caso il carattere G) la codifica in ASCII di un byte.
Quello che interessa ovviamente sono i singoli stati dei bit (0=contatto aperto, 1=contatto chiuso).

Il codice è questo, ovviamente se qualcuno ha idee migliori ben vengano:

Codice PHP:
// Posizione del comando
$commandPosition strpos($responseMessage'G');
                
// Seleziona il byte dello stato degli input
$inputStatus substr($responseMessage$commandPosition 12);
                
// Converte dalla codifica in ASCII del byte a binario per verificare i singoli bit
$binaryResponse base_convert($inputStatus162);
                
// Aggiunge gli eventuali zeri al byte
$byteReponse str_pad($binaryResponse8"0"STR_PAD_LEFT);
                
// Inverte la stringa per associare la giusta chiave dell'array al numero di bit
$byteReponseReversed strrev($byteReponse);
                
// Splitta il risultato in array
$bitResponse str_split($byteReponseReversed); 
Avrò così in risposta una array con chiave=numero del bit e valore=stato del bit.

Ad esempio una risposta F0 corrisponde a 11110000 ovvero:
bit 7 = 1
bit 6 = 1
bit 5 = 1
bit 4 = 1
bit 3 = 0
bit 2 = 0
bit 1 = 0
bit 0 = 0

Ciao