( laysoft | 2023. 07. 31., h – 12:36 )

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.