from modulators.OOKModulator import OOKModulator import numpy as np """ Nexus Temperature & Humidity Protocol """ class Nexus_TempHumidity: def __init__(self): pass def generateData(self, id=244, channel=1, temp=30, humidity=100): nibbles = self.generatePacket(id, channel, temp, humidity) data = [] for i in range(9): mask = 0x08 for j in range(4): if (nibbles[i] & mask): data.append(1) else: data.append(0) mask >>= 1 return data def generateSamples(self, baseband_samplerate=2e6, id=244, channel=1, temp=30, humidity=100, numpyType=np.complex64): modulator = OOKModulator(baseband_samplerate=baseband_samplerate, am_frequency=22.471e3) bits = self.generateData(id, channel, temp, humidity) for repeat in range(0, 4): for j in bits: modulator.addModulation(500) modulator.addPadding(1000 * (1 + int(j))) modulator.addModulation(500) modulator.addPadding(4000) return modulator.getSamplesAndReset(numpyType) def generatePacket(self, id=244, channel=1, temp=30, humidity=100): temp = int(temp * 10) packet = [ (id >> 4) & 0x0f, id & 0x0f, 7 + channel, (temp >> 8) & 0x0f, (temp >> 4) & 0x0f, temp & 0x0f, 0x0f, (humidity >> 4) & 0x0f, humidity & 0x0f ] return packet