Zitat von Max2612
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Sonos Anbindung
Einklappen
X
-
-
Gleich noch eine Frage...
Kann es sein, dass TTS auch aus diesem Grund nicht funktioniert?
Habe über das Backend Plugin gestartet. Die Datei wird nicht abgespielt.
Log:
Code:2017-01-02 19:37:00,649 DEBUG Thread-303 COMMAND PlayTts -- attributes: language: de, fade_in: 0, group_command: 0, volume: 50, force_stream_mode: 0, tts: test55, uid: rincon_949f3e7072dc01400 -- sonos_commands.py:run:1660 2017-01-02 19:37:00,661 WARNING Thread-303 FORCE_STREAM_MOD_OPTION for play_tts is deprecated and ignored. -- sonos_commands.py:run:1694 2017-01-02 19:37:00,724 DEBUG Thread-303 Starting new HTTPS connection (1): translate.google.com -- connectionpool.py:_new_conn:809 2017-01-02 19:37:01,907 DEBUG Thread-303 https://translate.google.com:443 "GET / HTTP/1.1" 200 None -- connectionpool.py:_make_request:400 2017-01-02 19:37:02,239 DEBUG Thread-303 Starting new HTTPS connection (1): translate.google.com -- connectionpool.py:_new_conn:809 2017-01-02 19:37:03,311 DEBUG Thread-303 https://translate.google.com:443 "GET /translate_tts?tl=de&tk=320827.175273&textlen=6&client=tw-ob&ie=UTF-8&q=test55&idx=0&total=1 HTTP/1.1" 200 9120 -- connectionpool.py:_make_request:400 2017-01-02 19:37:03,388 INFO Thread-303 Sending GetMediaInfo [('InstanceID', 0)] to 192.168.1.24 -- services.py:send_command:381 2017-01-02 19:37:03,405 DEBUG Thread-303 Sending {'SOAPACTION': 'urn:schemas-upnp-org:service:AVTransport:1#GetMediaInfo', 'Content-Type': 'text/xml; charset="utf-8"'}, <?xml version="1.0" ?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:GetMediaInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> </u:GetMediaInfo> </s:Body> </s:Envelope>
Einen Kommentar schreiben:
-
Ok, dann setzte ich das System mal in einer virtuellen Maschine auf.
Einen Kommentar schreiben:
-
Sorry,
ich hab alles wie oben beschrieben, gemacht. Aber trotzdem kein Erfolg.
Code:smarthome@raspberrypi:~$ python3 -c "import sys;print(sys.stdout.encoding)" ANSI_X3.4-1968
Einen Kommentar schreiben:
-
Zitat von Max2612 Beitrag anzeigenOK, hab die Datei inCode:/usr/local/bin/
Code:#!/usr/local/bin/python3 # -*- coding: utf-8 -*- # ################################################## ################## # Imports # ################################################## ################## import json import os import argparse from http.server import BaseHTTPRequestHandler, HTTPServer import locale import socketserver import logging import logging.handlers import threading import configparser import signal import time import sys import io for s in ("stdin", "stdout", "stderr"): setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8")) from lib_sonos import utils from lib_sonos import definitions from lib_sonos.sonos_service import SonosServerService from lib_sonos import daemon from lib_sonos import sonos_commands # ################################################## ################## # GLOBALS # ################################################## ##################
Code:for s in ("stdin", "stdout", "stderr"): setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8"))
Code:/etc/environment
Da muss folgender Eintrag hinzugefügt werden;
Code:PYTHONIOENCODING=UTF-8
Code:python3 -c "import sys;print(sys.stdout.encoding)"
Code:UTF-8
Danke fürs Testen,
Stefan
Einen Kommentar schreiben:
-
OK, hab die Datei inCode:/usr/local/bin/
Code:#!/usr/local/bin/python3 # -*- coding: utf-8 -*- # #################################################################### # Imports # #################################################################### import json import os import argparse from http.server import BaseHTTPRequestHandler, HTTPServer import locale import socketserver import logging import logging.handlers import threading import configparser import signal import time import sys import io for s in ("stdin", "stdout", "stderr"): setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8")) from lib_sonos import utils from lib_sonos import definitions from lib_sonos.sonos_service import SonosServerService from lib_sonos import daemon from lib_sonos import sonos_commands # #################################################################### # GLOBALS # #################################################################### import requests command_service = None homedir = os.path.dirname(os.path.realpath(__file__)) logger = logging.getLogger('') class SonosHttpHandler(BaseHTTPRequestHandler): def do_GET(self): try: global command_service result, response = command_service.do_work(self.client_address[0], self.path) if result: self.send_response(definitions.HTTP_SUCCESS, 'OK') else: self.send_response(definitions.HTTP_ERROR, 'Bad request') self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write("{}".format(response).encode('utf-8')) finally: self.connection.close() def do_POST(self): try: size = int(self.headers["Content-length"]) command = self.rfile.read(size).decode('utf-8') try: cmd_obj = json.loads(command, cls=sonos_commands.MyDecoder) except AttributeError as err: err_command = list(filter(None, err.args[0].split("'")))[-1] self.make_response(False, "No command '{command}' found!".format(command=err_command)) return status, response = cmd_obj.run() self.make_response(status, response) logger.debug('Server response -- status: {status} -- response: {response}'.format(status=status, response=response)) finally: self.connection.close() def make_response(self, status, response): if status: self.send_response(definitions.HTTP_SUCCESS, 'OK') else: self.send_response(definitions.HTTP_ERROR, 'Bad request') self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write("<html><head><title>Sonos Broker</title></head>".encode('utf-8')) self.wfile.write("<body>{response}".format(response=response).encode('utf-8')) self.wfile.write("</body></html>".encode('utf-8')) class ThreadedHTTPServer(socketserver.ThreadingMixIn, HTTPServer): """Handle requests in a separate thread.""" class SonosBroker(): @property def loghandler(self): return self._loghandler @property def list_only(self): return self._list_only @list_only.setter def list_only(self, value): self._list_only = value def __init__(self, debug=False, config=None): global command_service global homedir global logger self._debug = debug self._loghandler = None self._http_server = None self._host = '' self._port = '' self._tts_local_mode = False self._save_path = None self._server_url = None self._quota = None self._server_ip = None self._logfile = None self._port = definitions.DEFAULT_PORT self._host = definitions.DEFAULT_HOST self._sonos_service = None self._server_active = True self._list_only = False self._config = config # ############################################################ # Signal Handling # ############################################################ signal.signal(signal.SIGHUP, self.stop) signal.signal(signal.SIGINT, self.stop) signal.signal(signal.SIGTERM, self.stop) config = configparser.ConfigParser() if self._config is None: config_path = os.path.join(homedir, definitions.DEFAULT_CFG) else: config_path = self._config config.read(config_path) # ############################################################ # Logging # ############################################################ if config.has_section('logging'): if config.has_option('logging', 'loglevel'): loglevel = config.get('logging', 'loglevel') else: loglevel = 'warning' if self._debug: loglevel = 'debug' if config.has_option('logging', 'logfile'): self._logfile = config.get('logging', 'logfile').strip("\"").strip("'") else: self._logfile = definitions.DEFAULT_LOG self._logfile = os.path.expanduser(self._logfile) self._logfile = os.path.expandvars(self._logfile) if not os.path.isabs(self._logfile): self._logfile = os.path.join(homedir, self._logfile) try: if not os.path.exists(os.path.dirname(self._logfile)): os.makedirs(os.path.dirname(self._logfile)) except Exception: logger.error("Couldn't create logfile path '{path}'. Using default path {'def_path}'!".format( path=os.path.dirname(self._logfile, def_path=definitions.DEFAULT_LOG))) numeric_level = getattr(logging, loglevel.upper(), None) if not isinstance(numeric_level, int): raise ValueError('Invalid log level: %s' % loglevel) logdate = "%Y-%m-%d %H:%M:%S" logformat = "%(asctime)s %(levelname)-8s %(threadName)-12s %(message)s" if numeric_level == logging.DEBUG: logdate = None logformat = "%(asctime)s %(levelname)-" \ "8s %(threadName)-12s %(message)s -- %(filename)s:%(funcName)s:%(lineno)d" logging.basicConfig(level=numeric_level, format=logformat, datefmt=logdate) ############################################################# # logfile write test ############################################################# if self._logfile: os.umask(0o002) try: with open(self._logfile, 'a') as f: f.write("Init sonos broker {version}\n".format(version=definitions.VERSION)) except IOError as e: print("Error creating logfile {}: {}".format(self._logfile, e)) try: formatter = logging.Formatter(logformat, logdate) self._loghandler = logging.handlers.TimedRotatingFileHandler(self._logfile, when='midnight', backupCount=7) self._loghandler.setLevel(numeric_level) self._loghandler.setFormatter(formatter) if numeric_level == logging.DEBUG: # clean log self._loghandler.doRollover() logger.addHandler(self._loghandler) # set the loglevel for soco framework logging.getLogger('soco.core').addHandler(self._loghandler) except IOError as e: print("Error creating logfile {}: {}".format(self._logfile, e)) if config.has_section('sonos_broker'): if config.has_option('sonos_broker', 'server_ip'): self._server_ip = config.get('sonos_broker', 'server_ip') if config.has_option('sonos_broker', 'host'): self._host = config.get('sonos_broker', 'host') if config.has_option('sonos_broker', 'port'): self._port = config.getint('sonos_broker', 'port') if not self._server_ip: self._server_ip = utils.get_lan_ip() if not self._server_ip: raise Exception("Could not detect the internal server ip automatically! Set the ip address " "manually (see config file)") if config.has_section('google_tts'): if config.has_option('google_tts', 'enabled'): self._tts_local_mode = config.getboolean('google_tts', 'enabled') if self._tts_local_mode: if config.has_option('google_tts', 'save_path'): self._save_path = config.get('google_tts', 'save_path') if config.has_option('google_tts', 'server_url'): self._server_url = config.get('google_tts', 'server_url') if config.has_option('google_tts', 'quota'): self._quota = config.getint('google_tts', 'quota') if self._tts_local_mode and not self._save_path: logger.warning('No local save path given!') self._tts_local_mode = False if self._tts_local_mode and not self._server_url: logger.warning('No local server url given!') self._tts_local_mode = False if self._tts_local_mode and not self._quota: self._quota = definitions.DEFAULT_QUOTA if self._tts_local_mode: if not utils.check_directory_permissions(self._save_path): logger.warning('No sufficient folder permissions in \'{}\'!'.format(self._save_path)) self._tts_local_mode = False else: free_diskspace = utils.get_free_space_mb(self._save_path) logger.info('Free diskspace: {} mb'.format(free_diskspace)) if free_diskspace < self._quota: logger.warning( 'Not enough disk space left on \'{}\'. At least {} mb of free diskspace required!'.format( self._save_path, self._quota)) logger.warning("\nIgnore this warning, if the snippet directoy is a smb or cifs mounted " "directory.") if not self._tts_local_mode: logger.debug("Google-TTS disabled!") else: logger.debug("Google-TTS 'local mode' enabled!") logger.debug('server_url: {}'.format(self._server_url)) logger.debug('save_path: {}'.format(self._save_path)) def start(self): global command_service logger.info("Sonos Broker v{version}".format(version=definitions.VERSION)) logger.info( "Starting server with ip address {ip} ... be sure this is correct.".format(ip=self._server_ip)) time.sleep(1) self._sonos_service = SonosServerService(self._server_ip, self._port, self._server_url, self._save_path, self._quota, self._tts_local_mode) self._http_server = ThreadedHTTPServer((self._host, self._port), SonosHttpHandler) logger.info('Starting http server, use <Ctrl-C> to stop') while self._server_active: self._http_server.serve_forever() def stop(self): logger.debug('unsubscribing from sonos speakers ...') if self._sonos_service is not None: self._sonos_service.unsubscribe_speaker_events() if self._http_server: self._server_active = False logger.debug('closing http server ...') self._http_server.socket.close() for thread in threading.enumerate(): try: thread.join(2) except: pass if threading.active_count() > 1: for thread in threading.enumerate(): logger.info("Thread: {}, still alive".format(thread.name)) else: logger.info("Sonos Broker stopped") def kill(pid, wait=10): delay = 0.25 waited = 0 if pid: os.kill(pid, signal.SIGTERM) while waited < wait: try: os.kill(pid, 0) except OSError: os._exit(0) waited += delay time.sleep(delay) try: os.kill(pid, signal.SIGKILL) except OSError: os._exit(0) def scan(): print('\n\nScanning for Sonos speaker in the network ...') soco_speakers = SonosServerService._discover() suffix = '' if len(soco_speakers) > 1: suffix = "s" print("Found {} speaker{} in the network.\n".format(len(soco_speakers), suffix)) for speaker in soco_speakers: try: info = speaker.get_speaker_info(timeout=5) print("\n{}".format(speaker.uid)) print("-" * len(speaker.uid)) print("\tip :\t{}".format(speaker.ip_address)) print("\tname :\t{}".format(speaker.player_name)) print("\tmodel:\t{}\n".format(info['model_name'])) except requests.ConnectionError: print("Speaker '{uid}' seems to be offline.".format(uid=speaker.uid)) continue except Exception as ex: print('unknown error') print(ex) if __name__ == '__main__': argparser = argparse.ArgumentParser() subparsers = argparser.add_subparsers(dest="subparser_name") start_parser = subparsers.add_parser(name='start', help="Starts the Sonos Broker. ") start_parser.add_argument('-d', '--debug', help='Debug Mode: Broker stays in foreground with verbose output', action='store_true') start_parser.add_argument('-c', '--config', help='[Optional] path to a config file.') stop_parser = subparsers.add_parser(name='stop', help="Stops the Sonos Broker.") stop_parser = subparsers.add_parser(name='list', help="Lists all Sonos speaker in the network.") args = argparser.parse_args() if args.subparser_name == "stop": print('Shutting down Sonos Broker ...') kill(daemon.get_pid(__file__)) elif args.subparser_name == "list": scan() elif args.subparser_name == "start": config_path = definitions.DEFAULT_CFG if args.config: config_path = os.path.abspath(args.config) if not os.path.exists(config_path): print("Config file not found [** {path} **]".format(path=os.path.abspath(config_path))) exit() broker = SonosBroker(args.debug, config=config_path) if locale.getdefaultlocale() == (None, None): locale.setlocale(locale.LC_ALL, 'C') else: locale.setlocale(locale.LC_ALL, '') if not args.debug: d = daemon.Daemonize(app=__name__, pid=definitions.DEFAULT_PID, action=broker.start, keep_fds=[broker.loghandler.stream.fileno()]) d.start() else: broker.start() else: print("Unknown command!") exit()
Code:2017-01-02 12:54:12,686 INFO Thread-43 Received status 200 from 192.168.1.24 -- services.py:send_command:392 2017-01-02 12:54:12,721 INFO Thread-43 registered clients: 192.168.1.13:[9999] -- udp_broker.py:udp_send:43 2017-01-02 12:54:12,727 INFO Thread-43 sending sonos speaker data: { "additional_zone_members": "", "alarms": "", "balance": 0, "bass": 0, "display_version": "7.0", "hardware_version": "1.20.1.6-2", "household_id": "Sonos_NK5GZK7PASLUh5Vei3SIuPaCKx", "ip": "192.168.1.24", "is_coordinator": true, "led": 1, "loudness": 1, "mac_address": "94-9F-3E-70-72-DC", "max_volume": -1, "model": "Sonos PLAY:1", "model_number": "S12", "mute": 0, "pause": 0, "play": 1, "playlist_position": "1", "playlist_total_tracks": "12", "playmode": "normal", "radio_show": "", "radio_station": "Hitradio Ö3", "serial_number": "94-9F-3E-70-72-DC:F", "software_version": "34.7-35162c", "sonos_playlists": "Best of 2016,Fit 2017,Motivation,Rock Party", "status": true, "stop": 0, "streamtype": "radio", "track_album": "", "track_album_art": "http://192.168.1.24:1400/getaa?s=1&u=x-sonosapi-stream%3as8007%3fsid%3d254%26sn%3d0", "track_artist": "", "track_duration": "00:00:00", "track_position": "0:00:00", "track_title": "", "track_uri": "mms://apasf.apa.at/OE3_Live_Audio", "treble": 0, "uid": "rincon_949f3e7072dc01400", "volume": 27, "wifi_state": 1, "zone_icon": "/img/icon-S12.png", "zone_name": "Wohnzimmer" } -- udp_broker.py:udp_send:44 --- Logging error --- Traceback (most recent call last): File "/usr/local/lib/python3.5/logging/__init__.py", line 982, in emit stream.write(msg) UnicodeEncodeError: 'ascii' codec can't encode character '\xd6' in position 681: ordinal not in range(128) Call stack: File "/usr/local/lib/python3.5/threading.py", line 882, in _bootstrap self._bootstrap_inner() File "/usr/local/lib/python3.5/threading.py", line 914, in _bootstrap_inner self.run() File "/usr/local/lib/python3.5/threading.py", line 862, in run self._target(*self._args, **self._kwargs) File "/usr/local/lib/python3.5/socketserver.py", line 625, in process_request_thread self.finish_request(request, client_address) File "/usr/local/lib/python3.5/socketserver.py", line 354, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/local/lib/python3.5/socketserver.py", line 681, in __init__ self.handle() File "/usr/local/lib/python3.5/http/server.py", line 422, in handle self.handle_one_request() File "/usr/local/lib/python3.5/http/server.py", line 410, in handle_one_request method() File "/usr/local/bin/sonos_broker", line 65, in do_POST status, response = cmd_obj.run() File "/usr/local/lib/python3.5/site-packages/lib_sonos/sonos_commands.py", line 141, in run sonos_speaker.sonos_speakers[self.uid].send() File "/usr/local/lib/python3.5/site-packages/lib_sonos/sonos_speaker.py", line 1353, in send self._send() File "/usr/local/lib/python3.5/site-packages/lib_sonos/sonos_speaker.py", line 1376, in _send udp_broker.UdpBroker.udp_send(data) File "/usr/local/lib/python3.5/site-packages/lib_sonos/udp_broker.py", line 44, in udp_send logger.info("sending sonos speaker data: {}".format(data)) Message: 'sending sonos speaker data: {\n "additional_zone_members": "",\n "alarms": "",\n "balance": 0,\n "bass": 0,\n "display_version": "7.0",\n "hardware_version": "1.20.1.6-2",\n "household_id": "Sonos_NK5GZK7PASLUh5Vei3SIuPaCKx",\n "ip": "192.168.1.24",\n "is_coordinator": true,\n "led": 1,\n "loudness": 1,\n "mac_address": "94-9F-3E-70-72-DC",\n "max_volume": -1,\n "model": "Sonos PLAY:1",\n "model_number": "S12",\n "mute": 0,\n "pause": 0,\n "play": 1,\n "playlist_position": "1",\n "playlist_total_tracks": "12",\n "playmode": "normal",\n "radio_show": "",\n "radio_station": "Hitradio Ö3",\n "serial_number": "94-9F-3E-70-72-DC:F",\n "software_version": "34.7-35162c",\n "sonos_playlists": "Best of 2016,Fit 2017,Motivation,Rock Party",\n "status": true,\n "stop": 0,\n "streamtype": "radio",\n "track_album": "",\n "track_album_art": "http://192.168.1.24:1400/getaa?s=1&u=x-sonosapi-stream%3as8007%3fsid%3d254%26sn%3d0",\n "track_artist": "",\n "track_duration": "00:00:00",\n "track_position": "0:00:00",\n "track_title": "",\n "track_uri": "mms://apasf.apa.at/OE3_Live_Audio",\n "treble": 0,\n "uid": "rincon_949f3e7072dc01400",\n "volume": 27,\n "wifi_state": 1,\n "zone_icon": "/img/icon-S12.png",\n "zone_name": "Wohnzimmer"\n}' Arguments: () 192.168.1.13 - - [02/Jan/2017 12:54:12] "POST / HTTP/1.1" 200 -
Einen Kommentar schreiben:
-
Hm, müsste da nicht einCode:sonos_broker
Lass mal 'site-packages' im pfad weg, eventuell ist sie da.
Im kommenden 1.0er-Release ist das besser gelöst
Gruss,
Stefan
Einen Kommentar schreiben:
-
Hey,
Danke für den tollen Support!
In dem von dir genannten Verzeichnis, habe ich nur die "sonos_broker-0.9-py3.5.egg-info".
Ist das korrekt??
Einen Kommentar schreiben:
-
Zitat von Max2612 Beitrag anzeigenJa, es ist das fertige Image von Onkelandy
Die Ausgabe von
Code:python3 -c "import sys;print(sys.stdout.encoding)"
Code:ANSI_X3.4-1968
Code:import sys import io for s in ("stdin", "stdout", "stderr"): setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8"))
Gerne kannst du mir Feedback geben, wenns geklappt hat.
Gruß,
Stefan
Einen Kommentar schreiben:
-
Zitat von Max2612 Beitrag anzeigenCode:locale -a
Code:smarthome@raspberrypi:/usr/local/bin$ locale -a C C.UTF-8 POSIX de_DE.utf8 en_GB.utf8
Die Ausgabe von
Code:python3 -c "import sys;print(sys.stdout.encoding)"
Gruss,
Stefan
Einen Kommentar schreiben:
-
Code:locale -a
Code:smarthome@raspberrypi:/usr/local/bin$ locale -a C C.UTF-8 POSIX de_DE.utf8 en_GB.utf8
Einen Kommentar schreiben:
-
So, die Bayern 3 Info lief gerade durch die bei dir den Error geschmissen hat:
Code:2017-01-01 18:21:37,706 DEBUG Thread-6 Starting new HTTP connection (1): 192.168.178.21 -- connectionpool.py:_new_conn:212 2017-01-01 18:21:37,749 DEBUG Thread-6 http://192.168.178.21:1400 "POST /MediaRenderer/AVTransport/Control HTTP/1.1" 200 1375 -- connectionpool.py:_make_request:400 2017-01-01 18:21:37,758 DEBUG Thread-6 Received {'Server': 'Linux UPnP/1.0 Sonos/34.7-35162c (ZPS1)', 'CONTENT-TYPE': 'text/xml; charset="utf-8"', 'CONTENT-LENGTH': '1375', 'Connection': 'close', 'EXT': ''}, <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:GetPositionInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><Track>1</Track><TrackDuration>0:00:00</TrackDuration><TrackMetaData><DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="-1" parentID="-1" restricted="true"><res protocolInfo="x-rincon-mp3radio:*:*:*">x-rincon-mp3radio://br-mp3-bayern3-m.akacast.akamaistream.net/7/442/142692/v1/gnl.akacast.akamaistream.net/br_mp3_bayern3_m</res><r:streamContent>Studio-Hotline: 0800 / 800 3 800 (gebührenfrei)</r:streamContent><dc:title>br_mp3_bayern3_m</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite></TrackMetaData><TrackURI>x-rincon-mp3radio://br-mp3-bayern3-m.akacast.akamaistream.net/7/442/142692/v1/gnl.akacast.akamaistream.net/br_mp3_bayern3_m</TrackURI><RelTime>0:00:00</RelTime><AbsTime>NOT_IMPLEMENTED</AbsTime><RelCount>2147483647</RelCount><AbsCount>2147483647</AbsCount></u:GetPositionInfoResponse></s:Body></s:Envelope> -- services.py:send_command:389 2017-01-01 18:21:37,760 INFO Thread-6 Received status 200 from 192.168.178.21 -- services.py:send_command:392 2017-01-01 18:21:37,762 INFO Thread-6 registered clients: -- udp_broker.py:udp_send:43 2017-01-01 18:21:37,762 INFO Thread-6 sending sonos speaker data: { "radio_show": "Sonntags-Hitmix", "radio_station": "Bayern 3", "track_album_art": "http://192.168.178.21:1400/getaa?s=1&u=x-sonosapi-stream%3as14991%3fsid%3d254%26flags%3d8224%26sn%3d0", "track_artist": "Studio", "track_title": "Studio-Hotline: 0800 / 800 3 800 (Gebührenfrei)", "uid": "rincon_000xxxxxxxxxxxxxxxxxxxx" } -- udp_broker.py:udp_send:44
Führe mal bei Gelegenheit
Code:locale -a
Gruss,
Stefan
Einen Kommentar schreiben:
-
Ich verwende die v0.9.
Das bei Hitradio Ö3 keine Infos gesendet werden, hab ich mittlerweile bemerkt. Sorry, mein Fehler!
Ich werde die nächsten Tage ausgiebig weiter testen...
Danke
Gruß, Max
Einen Kommentar schreiben:
Einen Kommentar schreiben: