par
frederic-iot » 14 oct. 2021, 19:37
Bonjour,
J'ai une fonction en php qui tourne dans un petit script sur une instance.
Je tente de faire des essais avec des modules radio.

Je ne comprends pas comment décaler l 'int 32 qui renseigne ma variable "$val". Actuellement je démarre un octet trop tôt.
frm_payload = "AuqGfY4IAAjc/A==";
Mon playlod, decrypté en Hex => 02ea867d8e080008dcfc
Actuellement je remonte $val = 80008dc (hex) soit 134219996 (dec) alors que je souhaite $val=0008dcfc soit 580860 (dec).
Voici ma fonction.
Merci pour votre aide
function decodeFrame($message)
{
//echo sprintf("Received message on topic [%s]\n%s\n\n", $message);
$obj = json_decode($message);
$device=$obj->{'end_device_ids'};
$uplinkMessage=$obj->{'uplink_message'};
$payload=base64_decode($uplinkMessage->{'frm_payload'});
$rssi=$uplinkMessage->{'rx_metadata'}[0]->{"rssi"};
echo sprintf(" RSSI: %d\n", $rssi);
echo sprintf(" DeviceID: %s\n", $device->{'device_id'});
echo sprintf("DeviceEUI: %s\n", $device->{'dev_eui'});
echo sprintf(" Payload: %s\n", bin2hex($payload));
$memoryStream = fopen('php://memory', 'rw+');
fwrite($memoryStream, $payload);
rewind($memoryStream);
$buffer = new ResourceBuffer($memoryStream);
$buffer->skip(3);
$wireCut =$buffer->getUnsignedByte() ;
$batteryLevel =$buffer->getUnsignedByte() ;
$val = $buffer->getUnsignedInt();
echo sprintf(" Pulses: %d\n", $val);
echo sprintf(" Battery: %d\n", $batteryLevel);
echo sprintf(" Wire cut: %d\n", $wireCut);
//echo $obj->{'received_at'}."\n";
$timestamp=new DateTime('NOW');
logFrame("LORA-".$device->{'dev_eui'},
$timestamp->format("Y-m-d H:i:s"),
$rssi,
$val, "", 0x0);
}
Bonjour,
J'ai une fonction en php qui tourne dans un petit script sur une instance.
Je tente de faire des essais avec des modules radio. :-)
Je ne comprends pas comment décaler l 'int 32 qui renseigne ma variable "$val". Actuellement je démarre un octet trop tôt.
frm_payload = "AuqGfY4IAAjc/A==";
Mon playlod, decrypté en Hex => 02ea867d8e080008dcfc
Actuellement je remonte $val = 80008dc (hex) soit 134219996 (dec) alors que je souhaite $val=0008dcfc soit 580860 (dec).
Voici ma fonction.
Merci pour votre aide
[PHP]
function decodeFrame($message)
{
//echo sprintf("Received message on topic [%s]\n%s\n\n", $message);
$obj = json_decode($message);
$device=$obj->{'end_device_ids'};
$uplinkMessage=$obj->{'uplink_message'};
$payload=base64_decode($uplinkMessage->{'frm_payload'});
$rssi=$uplinkMessage->{'rx_metadata'}[0]->{"rssi"};
echo sprintf(" RSSI: %d\n", $rssi);
echo sprintf(" DeviceID: %s\n", $device->{'device_id'});
echo sprintf("DeviceEUI: %s\n", $device->{'dev_eui'});
echo sprintf(" Payload: %s\n", bin2hex($payload));
$memoryStream = fopen('php://memory', 'rw+');
fwrite($memoryStream, $payload);
rewind($memoryStream);
$buffer = new ResourceBuffer($memoryStream);
$buffer->skip(3);
$wireCut =$buffer->getUnsignedByte() ;
$batteryLevel =$buffer->getUnsignedByte() ;
$val = $buffer->getUnsignedInt();
echo sprintf(" Pulses: %d\n", $val);
echo sprintf(" Battery: %d\n", $batteryLevel);
echo sprintf(" Wire cut: %d\n", $wireCut);
//echo $obj->{'received_at'}."\n";
$timestamp=new DateTime('NOW');
logFrame("LORA-".$device->{'dev_eui'},
$timestamp->format("Y-m-d H:i:s"),
$rssi,
$val, "", 0x0);
}[/PHP]