Skip to content

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128) #29

@ghost

Description

Long story short, one of my relatives got a Neato rob and I quickly searched the web to see if it was remotely usable.
I found your repo and since I'm currently experimenting with PyQt4, I decided to write a very basic UI for controlling the robot.

  • Installed with pip
  • python --version : Python 2.7.15rc1
  • Works without hiccups with the interpreter

However, things go wrong when I try to initialize the robot.

PyQt code (important bits)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'botvac.ui'
#
# Created by: PyQt4 UI code generator 4.12.1
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
from pybotvac import Robot

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

[
.
.
.
]

        robot = Robot('[REDACTED]','[REDACTED]',u'maps','[REDACTED]')
        def __start(self):
            robot.start_cleaning()
            
        def __stop(self):
            robot.stop_cleaning()

        def __return(self):
            robot.send_to_base()
        
        self.startButton.clicked.connect(__start)
        self.stopButton.clicked.connect(__stop)
        self.returnButton.clicked.connect(__return)

Console output

Traceback (most recent call last):
  File "botvac.py", line 161, in <module>
    ui.setupUi(MainWindow)
  File "botvac.py", line 110, in setupUi
    robot = Robot('[REDACTED]','[REDACTED]',u'maps','[REDACTED]')
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 41, in __init__
    if self.service_version not in SUPPORTED_SERVICES:
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 213, in service_version
    return self.available_services['houseCleaning']
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 209, in available_services
    return self.state['availableServices']
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 205, in state
    return self.get_robot_state().json()
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 163, in get_robot_state
    return self._message({'reqId': "1", 'cmd': "getRobotState"})
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 59, in _message
    headers=self._headers)
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 112, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 506, in request
    prep = self.prepare_request(req)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 449, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/lib/python2.7/dist-packages/requests/models.py", line 309, in prepare
    self.prepare_auth(auth, url)
  File "/usr/lib/python2.7/dist-packages/requests/models.py", line 540, in prepare_auth
    r = auth(self)
  File "/home/lili/.local/lib/python2.7/site-packages/pybotvac/robot.py", line 228, in __call__
    msg = '\n'.join([self.serial.lower(), date, request.body.decode('utf8')])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)

Temporary fix

I found this answer on StackOverflow, but I feel it is bad practice and kind of hackish.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions