Bonsoir @mika-nt28,
Je pense qu’il y a un souci sur le décodage des DPT 8, dans la classe dpt.class.php.
Code original :
case "8":
if ($data[0] >= 0x8000)
$data[0] = -(($data - 1) ^ 0xffff); # invert twos complement
$value = $data[0];
break;
La valeur remontée est incorrecte (0 pour un nombre positif par ex.).
Après application du code suivant :
case "8":
$value = $data[0] << 8 | $data[1];
if ($value >= 0x8000)
$value = -(($value - 1) ^ 0xffff); # invert twos complement
break;
Cela semble bien mieux.
Je pense que l’encodage n’est également pas bon (il faut un complément à 2).