=8) { $RecordType=ord(substr($PostData,0,1)); if ($RecordType==0x21) { $DevMac=""; for($i = 0; $i < 6; $i++) { $DevMac.=sprintf("%02X", ord(substr($PostData,7-$i,1))); if ($i<5) { $DevMac.=":"; } } $PostLen=$PostLen-8; $out.=$time.", D, ".$DevMac.", ".$PostLen."\n"; $File = fopen($FileName,"a"); fwrite($File, $out); fclose($File); $File = fopen("read.bin","wb"); fwrite($File,$PostData); fclose($File); echo "OK"; exit; } } if ($PostLen<25) {$out=$time."\n";} else { $s=0; while($PostLen-$s>=25) { $RecordType=ord(substr($PostData,$s,1)); $DataLen=ord(substr($PostData,$s+1,1)); $DevType=ord(substr($PostData,$s+3,1)); $DevSubType=ord(substr($PostData,$s+2,1))>>4; $DevNotify=ord(substr($PostData,$s+2,1)) & 0x0f; $DevMac=""; for($i = 0; $i < 6; $i++) { $DevMac.=sprintf("%02X", ord(substr($PostData,$s+9-$i,1))); if ($i<5) { $DevMac.=":"; } } $DevName=""; for($i = 0; $i < 16; $i++) { if (ord(substr($PostData,$s+10+$i,1))==0) {break;} $DevName.=substr($PostData,$s+10+$i,1); } if ($RecordType==1) {$out.=$time.", A";} elseif ($RecordType==2) {$out.=$time.", N";} else {$out.=$time.", H";} $out.=", ".$DevMac.", ".sprintf("0x%02X",$DevType).", ".$DevName.", ".sprintf("0x%02X",$DevNotify); switch ($DevType) { case 0x82: //iNode Energy $DevEnAvg=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevEnSum=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8 | ord(substr($PostData,$s+30,1))<<16 | ord(substr($PostData,$s+31,1))<<24; $DevConst=ord(substr($PostData,$s+32,1)) | ord(substr($PostData,$s+33,1))<<8; $batt=ord(substr($PostData,$s+34,1)); $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; if ($DevNotify & 0x04) $out.=", ".sprintf("%d",$DevEnAvg).", ".sprintf("%d",$DevEnSum).", ".sprintf("%d",$DevConst).", ".sprintf("%1.2f",(($batt>>4)-2)*0.03+3.3)."V, ".sprintf("%d",$batt & 0xff ); else $out.=", ".sprintf("%d",$DevEnAvg).", ".sprintf("%d",$DevEnSum).", ".sprintf("%d",$DevConst).", ".sprintf("%1.2f",(($batt>>4)-2)*0.12+1.8)."V, ".sprintf("%d",$batt & 0x0F); break; case 0x91: //Care Sensor #1 $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevAcc=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; if ($DevTemp & 0x8000) {$DevTemp=$DevTemp-65536;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", ".sprintf("0x%04X",$DevAcc).", ".$DevTemp; break; case 0x92: //Care Sensor #2 $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevAcc=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; $DevTemp=($DevTemp & 0xfff)*0.0625; if (ord(substr($PostData,$s+30,1)) & 0x10) {$DevTemp=$DevTemp-256;} if ($DevTemp>70) {$DevTemp=70;} if ($DevTemp<-30) {$DevTemp=-30;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", ".sprintf("0x%04X",$DevAcc).", ".sprintf("%01.2f",$DevTemp); break; case 0x93: //Care Sensor #3 $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevAcc=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $DevHum=ord(substr($PostData,$s+32,1)) | ord(substr($PostData,$s+33,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; $DevTemp=($DevTemp*175.72)/16384-46.85; if ($DevTemp>70) {$DevTemp=70;} if ($DevTemp<-30) {$DevTemp=-30;} $DevHum=($DevHum*125)/16384-6; if ($DevHum>100) {$DevHum=100;} if ($DevHum<0) {$DevHum=0;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", ".sprintf("0x%04X",$DevAcc).", ".sprintf("%01.2f",$DevTemp).", ".sprintf("%01.2f",$DevHum); break; case 0x94: //Care Sensor #4 $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevAcc=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; if ($DevTemp & 0x8000) {$DevTemp=$DevTemp-65536;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", ".sprintf("0x%04X",$DevAcc).", ".$DevTemp; break; case 0x95: //Care Sensor #5 $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevAcc=ord(substr($PostData,$s+28,1)) | ord(substr($PostData,$s+29,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)); //| ord(substr($PostData,$s+31,1))<<8; $DevMag=ord(substr($PostData,$s+32,1)) | ord(substr($PostData,$s+33,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; if ($DevTemp & 0x80) {$DevTemp=$DevTemp-256;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", ".sprintf("0x%04X",$DevAcc).", ".sprintf("%01.2f",$DevTemp).", ".$DevMag; break; case 0x9A: //Care Sensor T $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; $DevTemp=($DevTemp & 0xfff)*0.0625; if (ord(substr($PostData,$s+30,1)) & 0x10) {$DevTemp=$devTemp-256;} if ($DevTemp>70) {$DevTemp=70;} if ($DevTemp<-30) {$DevTemp=-30;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", - -, ".sprintf("%01.2f",$DevTemp); break; case 0x9B: //Care Sensor HT $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $DevHum=ord(substr($PostData,$s+32,1)) | ord(substr($PostData,$s+33,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; $DevTemp=($DevTemp*175.72)/16384-46.85; if ($DevTemp>70) {$DevTemp=70;} if ($DevTemp<-30) {$DevTemp=-30;} $DevHum=($DevHum*125)/16384-6; if ($DevHum>100) {$DevHum=100;} if ($DevHum<0) {$DevHum=0;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", - -, ".sprintf("%01.2f",$DevTemp).", ".sprintf("%01.2f",$DevHum); break; case 0x9D: //Care Sensor PHT $DevAlarm=ord(substr($PostData,$s+26,1)) | ord(substr($PostData,$s+27,1))<<8; $DevTemp=ord(substr($PostData,$s+30,1)) | ord(substr($PostData,$s+31,1))<<8; $DevHum=ord(substr($PostData,$s+32,1)) | ord(substr($PostData,$s+33,1))<<8; $MsgAlarm=ord(substr($PostData,$s+34,1)) | ord(substr($PostData,$s+35,1))<<8; $Rssi=ord(substr($PostData,$s+36,1)); $Time=ord(substr($PostData,$s+37,1)) | ord(substr($PostData,$s+38,1))<<8 | ord(substr($PostData,$s+39,1))<<16; $DevTemp=($DevTemp*175.72)/16384-46.85; if ($DevTemp>70) {$DevTemp=70;} if ($DevTemp<-30) {$DevTemp=-30;} $DevHum=($DevHum*125)/16384-6; if ($DevHum>100) {$DevHum=100;} if ($DevHum<0) {$DevHum=0;} $out.=", ".sprintf("0x%04X",$MsgAlarm).", ".sprintf("0x%04X",$DevAlarm).", - -, ".sprintf("%01.2f",$DevTemp).", ".sprintf("%01.2f",$DevHum); break; } //$Time=$Time-$LocalTime; if ($Rssi & 0x80) {$Rssi=$Rssi-256;} $out.=", ".$Rssi.", ".$Time.", ".$LocalTime."\n"; $s=$s+$DataLen+2; } } $File = fopen($FileName,"a"); fwrite($File, $out); fclose($File); $File = fopen("aaa.bin","wb"); fwrite($File,$PostData); fclose($File); //echo "CMD=ReadEeprom&ADDR=00126FCF6CC1&SYNC=0&PSWD=36383935000000000000000000000000&CLEAR=NO"; //echo "CMD=ReadEeprom&ADDR=00126F913810&SYNC=0&PSWD=31323334000000000000000000000000&CLEAR=YES&LEN=123"; //echo "CMD=GetFirmware&URL=159.205.245.44&PORT=8124&APN=internet"; //echo "CMD=SetSettings&HTTP_TEST=20"; echo "OK"; ?>