def send_mp1(device): result = {} state = True host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] sid = device['sid'] wantedstate = device['state'] if int(wantedstate) == 0: state = False product = broadlink.gendevice(0x4eb5, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") if sid == 'all': for i in range(1, 5): product.set_power(i, state) else: product.set_power(int(sid), state) time.sleep(0.1) result = read_mp1(device) return result
def learn_rm2_rf(device): result = {} host = device['ip'] port = device['port'] mac = device['mac'] if mac[-3:] == 'sub': logging.debug("This is a child device original mac is " + mac[:-4]) mac = mac[:-4] name = device['name'] product = broadlink.gendevice(0x2712, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") logging.debug("Enter learning") product.sweep_frequency() logging.debug( "Learning RF Frequency, press and hold the button to learn...") start = time.time() found = False while time.time() - start < 10: time.sleep(1) if product.check_frequency(): logging.debug("Found RF Frequency") found = True globals.JEEDOMCOM.send_change_immediate({'foundfrequency': 1}) break else: logging.debug("RF Frequency not found") product.cancel_sweep_frequency() globals.JEEDOMCOM.send_change_immediate({'foundfrequency': 0}) return result if found: time.sleep(2) globals.JEEDOMCOM.send_change_immediate({'step2': 1}) product.find_rf_packet() start = time.time() data = None while time.time() - start < 10: time.sleep(1) try: data = product.check_data() except (ReadError, StorageError): continue else: break if data == None: logging.debug("No button pressed") result['hexcode'] = 'no' else: myhex = data.hex() logging.debug("Hex code detected " + myhex) result['hexcode'] = myhex result['learnedCmd'] = 1 result['mac'] = mac product.stop_learning() logging.debug("Quit learning") return result
def read_rm2(device): result = {} host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] product = broadlink.gendevice(0x2712, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") result['mac'] = mac result['temperature'] = product.check_temperature() logging.debug(str(result)) return result
def send_sp2(device): result ={} state = True host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] wantedstate = device['state'] if int(wantedstate) == 0: state = False product = broadlink.gendevice(0x2711,host=(host,int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") product.set_power(state) time.sleep(0.1) result = read_sp2(device) return result
def send_rm2(device): result = {} host = device['ip'] port = device['port'] mac = device['mac'] if mac[-3:] == 'sub': logging.debug("This is a child device original mac is " + mac[:-4]) mac = mac[:-4] name = device['name'] hex2send = device['hex2send'] product = broadlink.gendevice(0x2712, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") product.send_data(bytearray.fromhex(hex2send)) logging.debug("Code Sent....") return
def learn_rm2(device): if device['mode'] == 'rf': result = learn_rm2_rf(device) return result result = {} host = device['ip'] port = device['port'] mac = device['mac'] if mac[-3:] == 'sub': logging.debug("This is a child device original mac is " + mac[:-4]) mac = mac[:-4] name = device['name'] product = broadlink.gendevice(0x2712, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") logging.debug("Enter learning") product.enter_learning() start = time.time() data = None while time.time() - start < 10: time.sleep(1) try: data = product.check_data() except (ReadError, StorageError): continue else: break if data == None: logging.debug("No button pressed") result['hexcode'] = 'no' else: myhex = data.hex() logging.debug("Hex code detected " + myhex) result['hexcode'] = myhex result['learnedCmd'] = 1 result['mac'] = mac product.stop_learning() logging.debug("Quit learning") return result
def read_mp1(device): result = {} host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] product = broadlink.gendevice(0x4eb5, host=(host, int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") result['mac'] = mac data = product.check_power() for x in data: if data[x]: result[x] = 1 else: result[x] = 0 logging.debug(str(result)) return result
def on_message(client, userdata, message): json_data = json.loads(message.payload.decode("utf-8")) # print("\nReceived:", json_data) key = str(json_data['ip']) + '-' + str(json_data['mac']) # Connect to device when the first request is made if key not in devices: try: print(' > Connecting to ' + json_data['ip'] + ' [' + json_data['mac'] + ']') device = broadlink.gendevice(int(json_data['type'], 16), (json_data['ip'], 80), json_data['mac'].replace(':', '')) print(' > Authenticating') if device.auth(): devices[key] = device else: print('ERROR while authenticating!') return except Exception as e: print("ERROR:", e) return try: packet = b64decode(json_data['packet']) except Exception as e: print("ERROR decoding packet:", e) return try: print('Sending packet:', json_data['packet']) devices[key].send_data(packet) except Exception as e: print("ERROR sending packet:", e) return
def read_a1(device): result ={} host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] product = broadlink.gendevice(0x2714,host=(host,int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") result['mac']=mac raw = product.check_sensors_raw() human = product.check_sensors() result['temperature'] = raw['temperature'] result['humidity'] = raw['humidity'] result['luminosity'] = raw['light'] result['air'] = raw['air_quality'] result['noise'] = raw['noise'] result['luminosity_human'] = human['light'] result['air_human'] = human['air_quality'] result['noise_human'] = human['noise'] logging.debug(str(result)) return result
def read_sp2(device): result ={} host = device['ip'] port = device['port'] mac = device['mac'] name = device['name'] product = broadlink.gendevice(0x2711,host=(host,int(port)), mac=bytearray.fromhex(mac)) logging.debug("Connecting to Broadlink device with name " + name + "....") product.auth() logging.debug("Connected to Broadlink device with name " + name + "....") result['mac']=mac data = product.check_power() if data == True: result['s1']=1 else: result['s1']=0 logging.debug(str(result)) data_poweroutput = product.get_energy() if data_poweroutput != None and result['s1']==1: result['power_output']=data_poweroutput else: result['power_output']=0 logging.debug("value from sp2="+str(result)) return result