UNPKG

packet-decoder

Version:

SenRa Packet Decoder For IOT devices

48 lines (38 loc) 1.75 kB
class BrighterBins { constructor(packet) { packet = parseInt(packet.toUpperCase(),16).toString(2).padStart(24,'0'); this.packet_type = this.getPacketType(packet.substring(packet.length-2,packet.length)); this.payload = this.getPayload(packet.substring(0, packet.length-2)); } comparePacket(prev_packet) { return this.payload.status === prev_packet.payload.status; } getPacketType(packet_type) { switch (packet_type) { case '00': return 'FILL_LEVEL_FRAME'; case '01': return 'RAW_DISTANCE_FRAME'; } return null; } getPayload(payload) { switch (this.packet_type) { case 'FILL_LEVEL_FRAME': return { status: parseInt(payload.substring(payload.length-7, payload.length),2), temperature: parseInt(payload.substring(payload.length-14, payload.length-7),2)-40, battery_status: parseInt(payload.substring(payload.length-20, payload.length-14),2)*2, }; case 'RAW_DISTANCE_FRAME': const dist = 500 - parseInt(payload.substring(payload.length-9, payload.length),2); return { raw_distance: parseInt(payload.substring(payload.length-9, payload.length),2), status:(dist/500)*100, temperature: parseInt(payload.substring(payload.length-16, payload.length-9),2)-40, battery_status: parseInt(payload.substring(payload.length-22, payload.length-16),2)*2, }; } } } module.exports = BrighterBins;