def __init__(self, ipadress, macadress, psk, apikey, jeedomadress): self._ipadress = ipadress self._macadress = macadress self._psk = psk self._apikey = apikey self._jeedomadress = jeedomadress self._braviainstance = BraviaRC(self._ipadress, self._macadress) if self._braviainstance.connect(psk, 'Jeedom', 'Jeedom') == False: print("Récupération du pin") sys.exit()
class BraviaQuery: def __init__(self, ip, psk): self.ip = ip self.psk = psk self.mac = 'AA:BB:CC:DD:EE:FF' self.bravia = BraviaRC(self.ip, self.psk, self.mac) def poll(self): power_status = self.bravia.get_power_status() led_status = 'off' if (self.bravia.get_led_status() == 'SimpleResponse') else 'on' return {'Power': power_status(), 'LED': led_status} def setMute(self, isOn): mode = "Demo" if str(isOn).lower() == "on" else "SimpleResponse" print("setting LED to " + str(str(isOn).lower() == "on").lower() + " with mode " + mode) self.bravia.set_led_status(mode, str(str(isOn).lower() == "on").lower()) print("setting AudioMute OSD with " + str(str(isOn).lower() == "on")) self.bravia.set_audio_mute(str(isOn).lower() == "on") def setVolume(self, level): print("setting volume to " + str(level)) self.bravia.set_volume_level(level / 100)
class SonyBravia: """ Fetch teleinformation datas and call user callback each time all data are collected """ def __init__(self, ipadress, macadress, psk, apikey, jeedomadress): self._ipadress = ipadress self._macadress = macadress self._psk = psk self._apikey = apikey self._jeedomadress = jeedomadress self._braviainstance = BraviaRC(self._ipadress, self._macadress) if self._braviainstance.connect(psk, 'Jeedom', 'Jeedom') == False: print("Récupération du pin") sys.exit() def run(self): Donnees = {} _Donnees = {} Sources = {} Apps = {} _RAZ = datetime.now() _RazCalcul = 0 _Separateur = "&" _tmp = "" _SendData = "" def target(): self.process = None #print (self.cmd + _SendData) self.process = subprocess.Popen(self.cmd + _SendData, shell=True) self.process.communicate() self.timer.cancel() def timer_callback(): if self.process.poll() is None: try: self.process.kill() except OSError as error: print("Error: %s " % error) print("Thread terminated") else: print("Thread not alive") tvstatus = "" try: Sources = self._braviainstance.load_source_list() Apps = self._braviainstance.load_app_list() for cle, valeur in Sources.items(): _tmp += cle.replace(' ', '%20') _tmp += "|" #print (_tmp) Donnees["sources"] = _tmp _tmp = "" for cle, valeur in Apps.items(): _tmp += cle.replace(' ', '%20') + "|" #print (_tmp) _tmp = _tmp.replace('&', '%26') _tmp = _tmp.replace('\'', '%27') Donnees["apps"] = _tmp except Exception: errorCom = "Connection error" while (1): _RazCalcul = datetime.now() - _RAZ if (_RazCalcul.seconds > 8): _RAZ = datetime.now() del Donnees del _Donnees Donnees = {} _Donnees = {} _SendData = "" try: tvstatus = self._braviainstance.get_power_status() Donnees["status"] = tvstatus except KeyError: print('TV not found') sys.exit() if tvstatus == 'active': try: tvinfo = self._braviainstance.get_system_info() Donnees["model"] = tvinfo['model'] except: print('Model not found') try: vol = self._braviainstance.get_volume_info() Donnees["volume"] = str(vol['volume']) except: print('Volume not found') try: tvPlaying = self._braviainstance.get_playing_info() #print (tvPlaying) if not tvPlaying: Donnees["source"] = "Application" Donnees["program"] = "" Donnees["nom_chaine"] = "" Donnees["debut"] = "" Donnees["debut_p"] = "" Donnees["fin_p"] = '' Donnees["pourcent_p"] = '0' Donnees["duree"] = "" Donnees["chaine"] = "" else: Donnees["source"] = ( (tvPlaying['source'])[-4:]).upper() + ( tvPlaying['uri'])[-1:] try: if tvPlaying['dispNum'] is not None: Donnees["chaine"] = tvPlaying[ 'dispNum'].replace(' ', '%20').replace( '\'', '%27').replace('é', '%C3%A9') except: print('not found') try: if tvPlaying['programTitle'] is not None: Donnees["program"] = tvPlaying[ 'programTitle'].replace( ' ', '%20').replace('é', '%C3%A9').replace( '\'', '%27') except: print('program not found') try: if tvPlaying['title'] is not None: Donnees["nom_chaine"] = tvPlaying[ 'title'].replace(' ', '%20').replace( '\'', '%27').replace('é', '%C3%A9') except: print('not found') try: if tvPlaying['startDateTime'] is not None: if tvPlaying['startDateTime'] != '': Donnees["debut"] = tvPlaying[ 'startDateTime'] Donnees["debut_p"], Donnees["fin_p"], Donnees[ "pourcent_p"] = self._braviainstance.playing_time( tvPlaying['startDateTime'], tvPlaying['durationSec']) else: Donnees["debut_p"] = '' Donnees["fin_p"] = '' Donnees["pourcent_p"] = '0' except: print('start date not found') try: if tvPlaying['durationSec'] is not None: if tvPlaying['durationSec'] != '': Donnees["duree"] = str( tvPlaying['durationSec']) else: Donnees["duree"] = '0' except: print('duration not found') except: print('Playing Info not found') self.cmd = "curl -L -s -G --max-time 15 " + self._jeedomadress + " -d 'apikey=" + self._apikey + "&mac=" + self._macadress for cle, valeur in Donnees.items(): if (cle in _Donnees): if (Donnees[cle] != _Donnees[cle]): _SendData += _Separateur + cle + '=' + valeur _Donnees[cle] = valeur else: _SendData += _Separateur + cle + '=' + valeur _Donnees[cle] = valeur _SendData += "'" if _SendData != "'": try: thread = threading.Thread(target=target) self.timer = threading.Timer(int(5), timer_callback) self.timer.start() thread.start() except: errorCom = "Connection error" time.sleep(2) def exit_handler(self, *args): self.terminate()
try: psk = options.psk except: print('Erreur psk de la tv') if options.command_type: try: command_type = options.command_type except: print('Erreur de commande') if options.command_param: try: command_param = options.command_param except: print('Erreur de parametres') _braviainstance = BraviaRC(ip, mac) _braviainstance.connect(psk, 'Jeedom', 'Jeedom') try: if command_type == 'turn_on': _braviainstance.turn_on() if command_type == 'turn_off': _braviainstance.turn_off() if command_type == 'select_source': _braviainstance.select_source(command_param) if command_type == 'set_volume': _braviainstance.set_volume_level(command_param) if command_type == 'start_app': _braviainstance.start_app(command_param) if command_type == 'volume_up': _braviainstance.volume_up()
def __init__(self, ip, psk): self.ip = ip self.psk = psk self.mac = 'AA:BB:CC:DD:EE:FF' self.bravia = BraviaRC(self.ip, self.psk, self.mac)