Max2612 Nur zum Abgleich: welche Version des Brokers setzt du ein?
Interesant wäre für mich noch die Ausgabe von
auf der Konsole.
Interesant wäre für mich noch die Ausgabe von
Code:
locale -a
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
locale -a
locale -a
smarthome@raspberrypi:/usr/local/bin$ locale -a C C.UTF-8 POSIX de_DE.utf8 en_GB.utf8
python3 -c "import sys;print(sys.stdout.encoding)"
python3 -c "import sys;print(sys.stdout.encoding)"
ANSI_X3.4-1968
import sys
import io
for s in ("stdin", "stdout", "stderr"):
setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8"))
/usr/local/bin/
#!/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()
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 -
/usr/local/bin/
#!/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
# ################################################## ##################
for s in ("stdin", "stdout", "stderr"):
setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8"))
/etc/environment
PYTHONIOENCODING=UTF-8
python3 -c "import sys;print(sys.stdout.encoding)"
UTF-8
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>
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>
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Kommentar