function crc16($data) {
$crc = 0;
for ($i = 0; $i < strlen($data); $i++) {
$crc ^=ord($data[$i]);
for ($j = 8; $j != 0; $j--) {
if (($crc & 0x0001) != 0) {
$crc >>= 1;
$crc ^= 0xA001;
} else {
$crc >>= 1;
}
}
}
return $crc;
}
Decimálisban adja vissza, base_convert függvénnyel tudod alakítani. Az inputban benne kell lenni az elején a / és a végén a ! karaktereknek, csak úgy lesz jó a CRC.
Amúgy én átírtam az ESP részét NodeMcu alá lua nyelvre, websocket klienssel kapcsolódik a PHP swoole alapú websocket szerverhez, ami tárolja az adatokat.