|
# -*- coding: utf-8 -*-
from __future__ import division
import base64
import json
from django_logit import logit
from django_response import response
from equipment.models import AepThermometerMeasureLogInfo
from utils.convert import hex2ascii
@logit
def aep_upload_temperature(request):
# {
# "upPacketSN": -1,
# "upDataSN": -1,
# "topic": "v1/up/ad",
# "timestamp": 1636096959410,
# "tenantId": "2000051017",
# "serviceId": "",
# "protocol": "lwm2m",
# "productId": "15091846",
# "payload": {
# "APPdata": "MjIyMzk0"
# },
# "messageType": "dataReport",
# "deviceType": "",
# "deviceId": "6b34c9d2d06b4965b4fe505e6d6c342c",
# "assocAssetId": "",
# "IMSI": "460113179251578",
# "IMEI": "355558100904547"
# }
reqdata = request.POST or json.loads(request.body)
imei = reqdata.get('IMEI', '')
payload = reqdata.get('payload') or {}
appdata = payload.get('APPdata', '')
appdata = base64.decodebytes(appdata.encode()).hex()
AepThermometerMeasureLogInfo.objects.create(
imei=imei,
upload_temperature_info=reqdata,
temperature_info=[appdata[:2], appdata[2:4], appdata[4:6]],
battery_info=[appdata[6:8], appdata[8:10], appdata[10:12]],
temperature=f'{hex2ascii(appdata[:2])}{hex2ascii(appdata[2:4])}.{hex2ascii(appdata[4:6])}',
battery=f'{hex2ascii(appdata[6:8])}{hex2ascii(appdata[8:10])}.{hex2ascii(appdata[10:12])}',
)
return response()
|