simbaja / gehome

Python SDK for GE smart appliances
MIT License
42 stars 29 forks source link

Install Help #22

Closed simbaja closed 3 years ago

simbaja commented 3 years ago

Thanks to reply.

I make pip install gehomesdk and install sdk

Then nano secrets.py and I use my credentials in SmartHQ app, that in europe is Ge Appliances

And now? How can i launch websocket_example.py where is ?

I can't install locate in home assistant, so i don't know where is this file.

Also, after launch websocket_example.py, I need more something or only my AC on ? So get automatically debug log?

If yes, where can i get it, to open an issue here on github?

Thanks for the support

Originally posted by @RobertusIT in https://github.com/simbaja/gehome/issues/15#issuecomment-889149110

simbaja commented 3 years ago

@RobertusIT, I created a new issue to help you though this.

first, you'll need to download SmartHQ (https://play.google.com/store/apps/details?id=com.ge.kitchen&hl=it&gl=US) and sign-in using your account. It'll ask you to authorize, then you should see your appliances in this application (hopefully).

secrets.py should be in the examples directory, which is also the location of the websocket_example.py. If you've installed using pip, these files would be in the site-packages directory, I think pip list -v or pip show gehomesdk should give you the install directory.

once you find the install directory, navigate to the examples directory, then create the secrets.py, then run python websocket_example.py. There might be additional packages that are needed depending on what you have installed, but we can work through those as needed.

the output that the example produces should be logged to a file (or copy/pasted), and then you can post that to this issue.

hope this helps.

RobertusIT commented 3 years ago

Thanks a lot for these more details.

Here there are my track:

➜  ~ **pip list -v**
_gehomesdk         0.3.21      /usr/lib/python3.9/site-packages pip_
Then i go on it:
cd /usr/lib/python3.9/site-packages/gehomesdk

That contain these files:

➜  gehomesdk ls
__init__.py      __pycache__      clients          erd              exception        ge_appliance.py

And inside clients folder, there is websocket_example.py, so i guess that is the examples folder that you mean, but name is clients and not examples. Need to create a folder with examples or is ok don't touch the clients name ?

Inside the clients folder we can see these files with secrets created by me with nano secrets.py that contain: USERNAME = "mymail@gmail.com" PASSWORD = "mypass" About my Ge appliances app

➜  clients ls
__init__.py           async_login_flows.py  ge_client_xmpp.py     **websocket_client.py**
__pycache__           base_client.py        **secrets.py**                 xmpp_client.py
async_helpers.py      const.py              states.py

Now i tried to launch but i have an error:

➜  clients python3 websocket_client.py
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/gehomesdk/clients/websocket_client.py", line 6, in <module>
    from ..erd import ErdCode, ErdCodeType
ImportError: attempted relative import with no known parent package

Same story with python 3.9, In HA seems that are already installed 2 python version by default, infact if I try to write python, i can see two version:

➜  clients python3.9 websocket_client.py
**python3**    **python3.9**
➜  clients python3.9 websocket_client.py
Traceback (most recent call last):
  File "/usr/lib/python3.9/site-packages/gehomesdk/clients/websocket_client.py", line 6, in <module>
    from ..erd import ErdCode, ErdCodeType
ImportError: attempted relative import with no known parent package
simbaja commented 3 years ago

My apologies, I thought I packaged the examples as well with the install, I guess not. For now, the easiest way then is to clone the repo to a local folder, there will be an examples folder (you can see it here: https://github.com/simbaja/gehome/tree/master/examples) that you can then add the secrets file and run the example.

In HA, you don't need to use this repository, you can just go to https://github.com/simbaja/ha_components, and place the "ge_home" folder into your custom integrations (or use HACS). The HA component doesn't yet support AC though, so it might not be relevant for you.

RobertusIT commented 3 years ago

My apologies, I thought I packaged the examples as well with the install, I guess not. For now, the easiest way then is to clone the repo to a local folder, there will be an examples folder (you can see it here: https://github.com/simbaja/gehome/tree/master/examples) that you can then add the secrets file and run the example.

In HA, you don't need to use this repository, you can just go to https://github.com/simbaja/ha_components, and place the "ge_home" folder into your custom integrations (or use HACS). The HA component doesn't yet support AC though, so it might not be relevant for you.

Hi,

no luck for now.

Here, I'm doing what do you suggest, so i download the project in zip, unzip in config HA folder, then in examples folder, i create secrets.py with mail and passwd about ge appliances app, and when i tried to launch websocket_example.py with python, no luck, some errors

➜  config cd
➜  ~ cd config/gehome-master
➜  gehome-master ls
LICENSE      README.md    gehomesdk    setup.py
MANIFEST.in  examples     notes        tests
➜  gehome-master cd examples
➜  examples ls
__init__.py           websocket_example.py
secrets.py            xmpp_example.py
➜  examples python3 websocket_example.py
Traceback (most recent call last):
  File "/config/gehome-master/examples/websocket_example.py", line 13, in <modul       e>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'
➜  examples python3.9 websocket_example.py
Traceback (most recent call last):
  File "/config/gehome-master/examples/websocket_example.py", line 13, in <modul       e>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'

If i launch with ./websocket_example.py

I can see this:

➜  examples ./websocket_example.py

./websocket_example.py: line 6:
Websocket client example

We're going to run the client in a pre-existing event loop.  We're also going to                                                                        register some event callbacks
to update appliances every five minutes and to turn on our oven the first time w                                                                       e see it.  Because that is safe!
: not found
./websocket_example.py: line 8: import: not found
./websocket_example.py: line 9: import: not found
./websocket_example.py: line 10: import: not found
./websocket_example.py: line 11: from: not found
./websocket_example.py: line 12: from: not found
./websocket_example.py: line 13: from: not found
./websocket_example.py: line 15: syntax error: unexpected "("
simbaja commented 3 years ago

Although it won't cause an issue, you should probably not put the sdk files in HA's config directory. This is just a low level library that is used by the HA component to provide the HA support. I'd put it somewhere else (perhaps in your home directory or something).

Python is really sensitive about the working directory when looking for imports try from gehome-master and execute python ./examples/websocket_example.py and see if that gets you a little further.

RobertusIT commented 3 years ago

Although it won't cause an issue, you should probably not put the sdk files in HA's config directory. This is just a low level library that is used by the HA component to provide the HA support. I'd put it somewhere else (perhaps in your home directory or something).

Python is really sensitive about the working directory when looking for imports try from gehome-master and execute python ./examples/websocket_example.py and see if that gets you a little further.

Moved gehome-master ( the project ) from config HA folder, to home, like you suggested.

➜  config mv gehome-master /home
➜  config cd
➜  ~ cd /home
➜  /home ls
gehome-master

Now tried to launch, without success

➜  gehome-master cd examples
➜  examples python3 websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 13, in <module>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'

Tried also with python3.9

➜  examples python3.9 websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 13, in <module>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'

Tried with ./websocket_example.py or xmpp_example.py but same story

➜  examples ./websocket_example.py
./websocket_example.py: line 6:
Websocket client example

We're going to run the client in a pre-existing event loop.  We're also going to                                                                register some event callbacks
to update appliances every five minutes and to turn on our oven the first time w                                                               e see it.  Because that is safe!
: not found
./websocket_example.py: line 8: import: not found
./websocket_example.py: line 9: import: not found
./websocket_example.py: line 10: import: not found
./websocket_example.py: line 11: from: not found
./websocket_example.py: line 12: from: not found
./websocket_example.py: line 13: from: not found
./websocket_example.py: line 15: syntax error: unexpected "("
➜  examples ./xmpp_example.py
./xmpp_example.py: line 6:
XMPP client example

We're going to run the client in a pre-existing event loop.  We're also going to                                                                register some event callbacks
to update appliances every five minutes and to turn on our oven the first time w                                                               e see it.  Because that is safe!
: not found
./xmpp_example.py: line 8: import: not found
./xmpp_example.py: line 9: import: not found
./xmpp_example.py: line 10: import: not found
./xmpp_example.py: line 11: from: not found
./xmpp_example.py: line 12: from: not found
./xmpp_example.py: line 13: syntax error: unexpected "("

Now i have tried like you suggest at the end like execute command, but doesn't exist this command for HA ( seems )

➜  ~ execute python ./home/gehome-master/examples/websocket_example.py
zsh: command not found: execute
simbaja commented 3 years ago

Whoops, put the code in the wrong place: from ./home/gehome-master, execute python3 ./examples/websocket_example.py and see if that works.

RobertusIT commented 3 years ago

Whoops, put the code in the wrong place: from ./home/gehome-master, execute python3 ./examples/websocket_example.py and see if that works.

➜  ~ ls
addons      backup      config      media       secrets.py  share       ssl
➜  ~ cd /home/gehome-master
➜  gehome-master ls
LICENSE      MANIFEST.in  README.md    examples     gehomesdk    notes        setup.py     tests
➜  gehome-master python3 ./examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/./examples/websocket_example.py", line 13, in <module>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'
simbaja commented 3 years ago

I'm guessing there's some sort of pathing issue here, so, let's just force it. Add these lines of code to the websocket_example.py right after the comment (before import aiohttp)

import os, sys

#Following lines are for assigning parent directory dynamically.
dir_path = os.path.dirname(os.path.realpath(__file__))
parent_dir_path = os.path.abspath(os.path.join(dir_path, os.pardir))
sys.path.insert(0, parent_dir_path)

This should add the right path to the python path search list so that it can find things. You should then be able to follow the in comment above https://github.com/simbaja/gehome/issues/22#issuecomment-889897831

RobertusIT commented 3 years ago

image

The new part in websocket_example.py

Then i have tried to launch:

➜  ~ python3 /home/gehome-master/examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 24, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ModuleNotFoundError: No module named 'lxml'
➜  ~ python3.9 /home/gehome-master/examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 24, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ModuleNotFoundError: No module named 'lxml'
simbaja commented 3 years ago

pip install lxml should resolve that one.

RobertusIT commented 3 years ago

pip install lxml should resolve that one.

Gave me a lot of error

➜  ~ pip install lxml
Collecting lxml
  Downloading lxml-4.6.3.tar.gz (3.2 MB)
     |████████████████████████████████| 3.2 MB 1.5 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d6                                                           29dd/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-i0elnirm
         cwd: /tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/
    Complete output (3 lines):
    Building lxml version 4.6.3.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f                                                           0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz#sha256=39b78571                                                           b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468 (from https://pypi.org/                                                           simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4                                                           .*). Command errored out with exit status 1: python setup.py egg_info Check the                                                            logs for full command output.
  Downloading lxml-4.6.2.tar.gz (3.2 MB)
     |████████████████████████████████| 3.2 MB 21.2 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a8                                                           6289/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-o2jl7o8z
         cwd: /tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/
    Complete output (3 lines):
    Building lxml version 4.6.2.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/db/f7/43fecb94d66959                                                           c1e23aa53d6161231dca0e93ec500224cf31b3c4073e37/lxml-4.6.2.tar.gz#sha256=cd11c7e8                                                           d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc (from https://pypi.org/                                                           simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4                                                           .*). Command errored out with exit status 1: python setup.py egg_info Check the                                                            logs for full command output.
  Downloading lxml-4.6.1.tar.gz (3.2 MB)
     |████████████████████████████████| 3.2 MB 14.9 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9                                                           247c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vnqwuctk
         cwd: /tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/
    Complete output (3 lines):
    Building lxml version 4.6.1.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/c5/2f/a0d8aa3eee6d53                                                           d5723d89e1fc32eee11e76801b424e30b55c7aa6302b01/lxml-4.6.1.tar.gz#sha256=c152b2e9                                                           3b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367 (from https://pypi.org/                                                           simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4                                                           .*). Command errored out with exit status 1: python setup.py egg_info Check the                                                            logs for full command output.
  Downloading lxml-4.6.0.tar.gz (3.2 MB)
     |████████████████████████████████| 3.2 MB 12.2 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334                                                           adde/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ry8nmtsr
         cwd: /tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/
    Complete output (3 lines):
    Building lxml version 4.6.0.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/3c/5a/81446fb5a4706b                                                           b07a98427634ab93219dc7fa393841d81f5da5c7e151b7/lxml-4.6.0.tar.gz#sha256=8319abac                                                           bbe9fd9791c2e3c23deb9b6a16abc0fcbdfcc26722035e865b3d207f (from https://pypi.org/                                                           simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4                                                           .*). Command errored out with exit status 1: python setup.py egg_info Check the                                                            logs for full command output.
  Downloading lxml-4.5.2.tar.gz (4.5 MB)
     |████████████████████████████████| 4.5 MB 32.6 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f                                                           793b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-8k5oeq54
         cwd: /tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/
    Complete output (3 lines):
    Building lxml version 4.5.2.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/2c/4d/3ec1ea8512a7fb                                                           f57f02dee3035e2cce2d63d0e9c0ab8e4e376e01452597/lxml-4.5.2.tar.gz#sha256=cdc13a16                                                           82b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6 (from https://pypi.org/                                                           simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4                                                           .*). Command errored out with exit status 1: python setup.py egg_info Check the                                                            logs for full command output.
  Downloading lxml-4.5.1.tar.gz (4.5 MB)
     |████████████████████████████████| 4.5 MB 16.3 MB/s
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ml_bk7qp
         cwd: /tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/
    Complete output (3 lines):
    Building lxml version 4.5.1.
    Building without Cython.
    Error: Please make sure the libxml2 and libxslt development packages are installed.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/03/a8/73d795778143be51d8b86750b371b3efcd7139987f71618ad9f4b8b65543/lxml-4.5.1.tar.gz#sha256=27ee0faf8077c7c1a589573b1450743011117f1aa1a91d5ae776bbc5ca6070f2 (from https://pypi.org/simple/lxml/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Downloading lxml-4.5.0.tar.gz (4.5 MB)
     |████████████████████████████████| 4.5 MB 10.2 MB/s
Using legacy 'setup.py install' for lxml, since package 'wheel' is not installed.
Installing collected packages: lxml
    Running setup.py install for lxml ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml
         cwd: /tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/
    Complete output (87 lines):
    Building lxml version 4.5.0.
    Building without Cython.
    ERROR: b'/bin/sh: xslt-config: not found\n'
    ** make sure the development packages of libxml2 and libxslt are installed **

    Using build configuration of libxslt
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.9
    creating build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/sax.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/__init__.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/builder.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/cssselect.py -> build/lib.linux-x86_64-3.9/lxml
    creating build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-3.9/lxml/includes
    creating build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/clean.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/defs.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/builder.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/diff.py -> build/lib.linux-x86_64-3.9/lxml/html
    copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-3.9/lxml/html
    creating build/lib.linux-x86_64-3.9/lxml/isoschematron
    copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-3.9/lxml/isoschematron
    copying src/lxml/etree.h -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/etree_api.h -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-3.9/lxml
    copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-3.9/lxml/includes
    copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-3.9/lxml/includes
    creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources
    creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng
    copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng
    creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl
    copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl
    copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl
    creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1
    running build_ext
    building 'lxml.etree' extension
    creating build/temp.linux-x86_64-3.9
    creating build/temp.linux-x86_64-3.9/src
    creating build/temp.linux-x86_64-3.9/src/lxml
    gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -Isrc -Isrc/lxml/includes -I/usr/include/python3.9 -c src/lxml/etree.c -o build/temp.linux-x86_64-3.9/src/lxml/etree.o -w
    Compile failed: command 'gcc' failed: No such file or directory
    creating tmp
    cc -I/usr/include/libxml2 -c /tmp/xmlXPathInitbjb3i8mu.c -o tmp/xmlXPathInitbjb3i8mu.o
    *********************************************************************************
    Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
    *********************************************************************************
    error: command 'gcc' failed: No such file or directory
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml Check the logs for full command output.

And now i tried to launch


➜  ~
➜  ~ cd /home/gehome-master/examples
➜  examples python3 websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 24, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ModuleNotFoundError: No module named 'lxml'
➜  examples ./websocket_example.py
./websocket_example.py: line 6:
Websocket client example

We're going to run the client in a pre-existing event loop.  We're also going to register some event callbacks
to update appliances every five minutes and to turn on our oven the first time we see it.  Because that is safe!
: not found
./websocket_example.py: line 9: import: not found
./websocket_example.py: line 12: syntax error: unexpected "("
➜  examples
simbaja commented 3 years ago

Please see here then, you probably have some extra steps to install due to missing dependencies: https://lxml.de/installation.html

Also, you should install wheel pip install wheel it might help as well.

On Sat, Jul 31, 2021, 4:10 AM RobertusIT @.***> wrote:

pip install lxml should resolve that one.

Gave me a lot of error

➜ ~ pip install lxml

Collecting lxml

Downloading lxml-4.6.3.tar.gz (3.2 MB)

 |████████████████████████████████| 3.2 MB 1.5 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d6                                                           29dd/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-i0elnirm

     cwd: /tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/

Complete output (3 lines):

Building lxml version 4.6.3.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f 0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz#sha256=39b78571 b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.6.2.tar.gz (3.2 MB)

 |████████████████████████████████| 3.2 MB 21.2 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a8                                                           6289/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-o2jl7o8z

     cwd: /tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/

Complete output (3 lines):

Building lxml version 4.6.2.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/db/f7/43fecb94d66959 c1e23aa53d6161231dca0e93ec500224cf31b3c4073e37/lxml-4.6.2.tar.gz#sha256=cd11c7e8 d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.6.1.tar.gz (3.2 MB)

 |████████████████████████████████| 3.2 MB 14.9 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9                                                           247c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vnqwuctk

     cwd: /tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/

Complete output (3 lines):

Building lxml version 4.6.1.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/c5/2f/a0d8aa3eee6d53 d5723d89e1fc32eee11e76801b424e30b55c7aa6302b01/lxml-4.6.1.tar.gz#sha256=c152b2e9 3b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.6.0.tar.gz (3.2 MB)

 |████████████████████████████████| 3.2 MB 12.2 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334                                                           adde/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ry8nmtsr

     cwd: /tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/

Complete output (3 lines):

Building lxml version 4.6.0.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/3c/5a/81446fb5a4706b b07a98427634ab93219dc7fa393841d81f5da5c7e151b7/lxml-4.6.0.tar.gz#sha256=8319abac bbe9fd9791c2e3c23deb9b6a16abc0fcbdfcc26722035e865b3d207f (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.5.2.tar.gz (4.5 MB)

 |████████████████████████████████| 4.5 MB 32.6 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0]                                                            = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/setup.py                                                           '"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f                                                           793b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re                                                           ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__                                                           , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-8k5oeq54

     cwd: /tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/

Complete output (3 lines):

Building lxml version 4.5.2.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are ins                                                           talled.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/2c/4d/3ec1ea8512a7fb f57f02dee3035e2cce2d63d0e9c0ab8e4e376e01452597/lxml-4.5.2.tar.gz#sha256=cdc13a16 82b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.5.1.tar.gz (4.5 MB)

 |████████████████████████████████| 4.5 MB 16.3 MB/s

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ml_bk7qp

     cwd: /tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/

Complete output (3 lines):

Building lxml version 4.5.1.

Building without Cython.

Error: Please make sure the libxml2 and libxslt development packages are installed.

----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/03/a8/73d795778143be51d8b86750b371b3efcd7139987f71618ad9f4b8b65543/lxml-4.5.1.tar.gz#sha256=27ee0faf8077c7c1a589573b1450743011117f1aa1a91d5ae776bbc5ca6070f2 (from https://pypi.org/simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4.*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Downloading lxml-4.5.0.tar.gz (4.5 MB)

 |████████████████████████████████| 4.5 MB 10.2 MB/s

Using legacy 'setup.py install' for lxml, since package 'wheel' is not installed.

Installing collected packages: lxml

Running setup.py install for lxml ... error

ERROR: Command errored out with exit status 1:

 command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml

     cwd: /tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/

Complete output (87 lines):

Building lxml version 4.5.0.

Building without Cython.

ERROR: b'/bin/sh: xslt-config: not found\n'

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt

running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-3.9

creating build/lib.linux-x86_64-3.9/lxml

copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/sax.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/__init__.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/builder.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/cssselect.py -> build/lib.linux-x86_64-3.9/lxml

creating build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-3.9/lxml/includes

creating build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/clean.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/defs.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/builder.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/diff.py -> build/lib.linux-x86_64-3.9/lxml/html

copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-3.9/lxml/html

creating build/lib.linux-x86_64-3.9/lxml/isoschematron

copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-3.9/lxml/isoschematron

copying src/lxml/etree.h -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/etree_api.h -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-3.9/lxml

copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-3.9/lxml/includes

copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-3.9/lxml/includes

creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources

creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng

copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng

creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl

copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl

copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl

creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1

running build_ext

building 'lxml.etree' extension

creating build/temp.linux-x86_64-3.9

creating build/temp.linux-x86_64-3.9/src

creating build/temp.linux-x86_64-3.9/src/lxml

gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -Isrc -Isrc/lxml/includes -I/usr/include/python3.9 -c src/lxml/etree.c -o build/temp.linux-x86_64-3.9/src/lxml/etree.o -w

Compile failed: command 'gcc' failed: No such file or directory

creating tmp

cc -I/usr/include/libxml2 -c /tmp/xmlXPathInitbjb3i8mu.c -o tmp/xmlXPathInitbjb3i8mu.o

*********************************************************************************

Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?

*********************************************************************************

error: command 'gcc' failed: No such file or directory

----------------------------------------

ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml Check the logs for full command output.

And now i tried to launch

➜ ~

➜ ~ cd /home/gehome-master/examples

➜ examples python3 websocket_example.py

Traceback (most recent call last):

File "/home/gehome-master/examples/websocket_example.py", line 24, in

from gehomesdk import (

File "/home/gehome-master/gehomesdk/init.py", line 6, in

from .clients import *

File "/home/gehome-master/gehomesdk/clients/init.py", line 17, in

from .base_client import GeBaseClient

File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in

from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token

File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in

from lxml import etree

ModuleNotFoundError: No module named 'lxml'

➜ examples ./websocket_example.py

./websocket_example.py: line 6:

Websocket client example

We're going to run the client in a pre-existing event loop. We're also going to register some event callbacks

to update appliances every five minutes and to turn on our oven the first time we see it. Because that is safe!

: not found

./websocket_example.py: line 9: import: not found

./websocket_example.py: line 12: syntax error: unexpected "("

➜ examples

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/simbaja/gehome/issues/22#issuecomment-890309690, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOEHFXGPA3WT6E63337YDPTT2OVYVANCNFSM5BGS4YJA .

RobertusIT commented 3 years ago

Please see here then, you probably have some extra steps to install due to missing dependencies: https://lxml.de/installation.html Also, you should install wheel pip install wheel it might help as well. On Sat, Jul 31, 2021, 4:10 AM RobertusIT @.> wrote: pip install lxml should resolve that one. Gave me a lot of error ➜ ~ pip install lxml Collecting lxml Downloading lxml-4.6.3.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 1.5 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d6 29dd/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-i0elnirm cwd: /tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/ Complete output (3 lines): Building lxml version 4.6.3. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f 0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz#sha256=39b78571 b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.2.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 21.2 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a8 6289/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-o2jl7o8z cwd: /tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/ Complete output (3 lines): Building lxml version 4.6.2. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/db/f7/43fecb94d66959 c1e23aa53d6161231dca0e93ec500224cf31b3c4073e37/lxml-4.6.2.tar.gz#sha256=cd11c7e8 d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.1.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 14.9 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9 247c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vnqwuctk cwd: /tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/ Complete output (3 lines): Building lxml version 4.6.1. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/c5/2f/a0d8aa3eee6d53 d5723d89e1fc32eee11e76801b424e30b55c7aa6302b01/lxml-4.6.1.tar.gz#sha256=c152b2e9 3b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.0.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 12.2 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334 adde/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ry8nmtsr cwd: /tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/ Complete output (3 lines): Building lxml version 4.6.0. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/3c/5a/81446fb5a4706b b07a98427634ab93219dc7fa393841d81f5da5c7e151b7/lxml-4.6.0.tar.gz#sha256=8319abac bbe9fd9791c2e3c23deb9b6a16abc0fcbdfcc26722035e865b3d207f (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.2.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 32.6 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f 793b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-8k5oeq54 cwd: /tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/ Complete output (3 lines): Building lxml version 4.5.2. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/2c/4d/3ec1ea8512a7fb f57f02dee3035e2cce2d63d0e9c0ab8e4e376e01452597/lxml-4.5.2.tar.gz#sha256=cdc13a16 82b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.1.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 16.3 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ml_bk7qp cwd: /tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/ Complete output (3 lines): Building lxml version 4.5.1. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are installed. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/03/a8/73d795778143be51d8b86750b371b3efcd7139987f71618ad9f4b8b65543/lxml-4.5.1.tar.gz#sha256=27ee0faf8077c7c1a589573b1450743011117f1aa1a91d5ae776bbc5ca6070f2 (from https://pypi.org/simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4.*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.0.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 10.2 MB/s Using legacy 'setup.py install' for lxml, since package 'wheel' is not installed. Installing collected packages: lxml Running setup.py install for lxml ... error ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml cwd: /tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/ Complete output (87 lines): Building lxml version 4.5.0. Building without Cython. ERROR: b'/bin/sh: xslt-config: not found\n' make sure the development packages of libxml2 and libxslt are installed Using build configuration of libxslt running install running build running build_py creating build creating build/lib.linux-x86_64-3.9 creating build/lib.linux-x86_64-3.9/lxml copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/sax.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/init.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/builder.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/cssselect.py -> build/lib.linux-x86_64-3.9/lxml creating build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/init.py -> build/lib.linux-x86_64-3.9/lxml/includes creating build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/init.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/clean.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/defs.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/builder.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/diff.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-3.9/lxml/html creating build/lib.linux-x86_64-3.9/lxml/isoschematron copying src/lxml/isoschematron/init.py -> build/lib.linux-x86_64-3.9/lxml/isoschematron copying src/lxml/etree.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/etree_api.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/includes/init.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-3.9/lxml/includes creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 running build_ext building 'lxml.etree' extension creating build/temp.linux-x86_64-3.9 creating build/temp.linux-x86_64-3.9/src creating build/temp.linux-x86_64-3.9/src/lxml gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -Isrc -Isrc/lxml/includes -I/usr/include/python3.9 -c src/lxml/etree.c -o build/temp.linux-x86_64-3.9/src/lxml/etree.o -w Compile failed: command 'gcc' failed: No such file or directory creating tmp cc -I/usr/include/libxml2 -c /tmp/xmlXPathInitbjb3i8mu.c -o tmp/xmlXPathInitbjb3i8mu.o *** Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? ***** error: command 'gcc' failed: No such file or directory ---------------------------------------- ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml Check the logs for full command output. And now i tried to launch ➜ ~ ➜ ~ cd /home/gehome-master/examples ➜ examples python3 websocket_example.py Traceback (most recent call last): File "/home/gehome-master/examples/websocket_example.py", line 24, in from gehomesdk import ( File "/home/gehome-master/gehomesdk/init.py", line 6, in from .clients import * File "/home/gehome-master/gehomesdk/clients/init.py", line 17, in from .base_client import GeBaseClient File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in from lxml import etree ModuleNotFoundError: No module named 'lxml' ➜ examples ./websocket_example.py ./websocket_example.py: line 6: Websocket client example We're going to run the client in a pre-existing event loop. We're also going to register some event callbacks to update appliances every five minutes and to turn on our oven the first time we see it. Because that is safe! : not found ./websocket_example.py: line 9: import: not found ./websocket_example.py: line 12: syntax error: unexpected "(" ➜ examples — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#22 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOEHFXGPA3WT6E63337YDPTT2OVYVANCNFSM5BGS4YJA .

wheel installed

➜  ~ pip install wheel
Requirement already satisfied: wheel in /usr/lib/python3.9/site-packages (0.36.2)

I lost installed log, anyway seems installed

➜  ~ wheel
usage: wheel [-h] {unpack,pack,convert,version,help} ...

positional arguments:
  {unpack,pack,convert,version,help}
                        commands
    unpack              Unpack wheel
    pack                Repack wheel
    convert             Convert egg or wininst to wheel
    version             Print version and exit
    help                Show this help

optional arguments:
  -h, --help            show this help message and exit
➜  ~

About lxml seems there isn't any dep to install, because with pip should install all, or not?

I didn't see any command , except pip install lxml

but this command get errors.

need to install HA in another machine? like raspberry ? i guess change nothing, but you have the knowedge to understand if maybe can help.

RobertusIT commented 3 years ago

Please see here then, you probably have some extra steps to install due to missing dependencies: https://lxml.de/installation.html Also, you should install wheel pip install wheel it might help as well. On Sat, Jul 31, 2021, 4:10 AM RobertusIT @.> wrote: pip install lxml should resolve that one. Gave me a lot of error ➜ ~ pip install lxml Collecting lxml Downloading lxml-4.6.3.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 1.5 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d6 29dd/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-i0elnirm cwd: /tmp/pip-install-9_4s9wwy/lxml_704e82104ed84057a326e99035d629dd/ Complete output (3 lines): Building lxml version 4.6.3. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f 0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz#sha256=39b78571 b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.2.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 21.2 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a8 6289/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-o2jl7o8z cwd: /tmp/pip-install-9_4s9wwy/lxml_b0672826071f41eb9a68b418b9a86289/ Complete output (3 lines): Building lxml version 4.6.2. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/db/f7/43fecb94d66959 c1e23aa53d6161231dca0e93ec500224cf31b3c4073e37/lxml-4.6.2.tar.gz#sha256=cd11c7e8 d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.1.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 14.9 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9 247c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-vnqwuctk cwd: /tmp/pip-install-9_4s9wwy/lxml_650f91b691cb485e868820a91cc9247c/ Complete output (3 lines): Building lxml version 4.6.1. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/c5/2f/a0d8aa3eee6d53 d5723d89e1fc32eee11e76801b424e30b55c7aa6302b01/lxml-4.6.1.tar.gz#sha256=c152b2e9 3b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.6.0.tar.gz (3.2 MB) |████████████████████████████████| 3.2 MB 12.2 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334 adde/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ry8nmtsr cwd: /tmp/pip-install-9_4s9wwy/lxml_c2222dd279f74011a96d68319334adde/ Complete output (3 lines): Building lxml version 4.6.0. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/3c/5a/81446fb5a4706b b07a98427634ab93219dc7fa393841d81f5da5c7e151b7/lxml-4.6.0.tar.gz#sha256=8319abac bbe9fd9791c2e3c23deb9b6a16abc0fcbdfcc26722035e865b3d207f (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.2.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 32.6 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/setup.py '"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f 793b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.re ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file , '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-8k5oeq54 cwd: /tmp/pip-install-9_4s9wwy/lxml_b8247d53e37c4d8ba0b29449201f793b/ Complete output (3 lines): Building lxml version 4.5.2. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are ins talled. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/2c/4d/3ec1ea8512a7fb f57f02dee3035e2cce2d63d0e9c0ab8e4e376e01452597/lxml-4.5.2.tar.gz#sha256=cdc13a16 82b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6 (from https://pypi.org/ simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4 .). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.1.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 16.3 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-ml_bk7qp cwd: /tmp/pip-install-9_4s9wwy/lxml_ffb29ccc4fb64f2184899dedd8dcf3eb/ Complete output (3 lines): Building lxml version 4.5.1. Building without Cython. Error: Please make sure the libxml2 and libxslt development packages are installed. ---------------------------------------- WARNING: Discarding https://files.pythonhosted.org/packages/03/a8/73d795778143be51d8b86750b371b3efcd7139987f71618ad9f4b8b65543/lxml-4.5.1.tar.gz#sha256=27ee0faf8077c7c1a589573b1450743011117f1aa1a91d5ae776bbc5ca6070f2 (from https://pypi.org/simple/lxml/) (requires-python:>=2.7, !=3.0., !=3.1., !=3.2., !=3.3., != 3.4.*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. Downloading lxml-4.5.0.tar.gz (4.5 MB) |████████████████████████████████| 4.5 MB 10.2 MB/s Using legacy 'setup.py install' for lxml, since package 'wheel' is not installed. Installing collected packages: lxml Running setup.py install for lxml ... error ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml cwd: /tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/ Complete output (87 lines): Building lxml version 4.5.0. Building without Cython. ERROR: b'/bin/sh: xslt-config: not found\n' make sure the development packages of libxml2 and libxslt are installed Using build configuration of libxslt running install running build running build_py creating build creating build/lib.linux-x86_64-3.9 creating build/lib.linux-x86_64-3.9/lxml copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/sax.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/init.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/builder.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/cssselect.py -> build/lib.linux-x86_64-3.9/lxml creating build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/init.py -> build/lib.linux-x86_64-3.9/lxml/includes creating build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/init.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/clean.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/defs.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/builder.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/diff.py -> build/lib.linux-x86_64-3.9/lxml/html copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-3.9/lxml/html creating build/lib.linux-x86_64-3.9/lxml/isoschematron copying src/lxml/isoschematron/init.py -> build/lib.linux-x86_64-3.9/lxml/isoschematron copying src/lxml/etree.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/etree_api.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-3.9/lxml copying src/lxml/includes/init.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-3.9/lxml/includes copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-3.9/lxml/includes creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/rng creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl creating build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-3.9/lxml/isoschematron/resources/xsl/iso-schematron-xslt1 running build_ext building 'lxml.etree' extension creating build/temp.linux-x86_64-3.9 creating build/temp.linux-x86_64-3.9/src creating build/temp.linux-x86_64-3.9/src/lxml gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -Isrc -Isrc/lxml/includes -I/usr/include/python3.9 -c src/lxml/etree.c -o build/temp.linux-x86_64-3.9/src/lxml/etree.o -w Compile failed: command 'gcc' failed: No such file or directory creating tmp cc -I/usr/include/libxml2 -c /tmp/xmlXPathInitbjb3i8mu.c -o tmp/xmlXPathInitbjb3i8mu.o *** Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? ***** error: command 'gcc' failed: No such file or directory ---------------------------------------- ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"'; file='"'"'/tmp/pip-install-9_4s9wwy/lxml_74334279092f421cafc757be488c38ba/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-445wsyzw/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.9/lxml Check the logs for full command output. And now i tried to launch ➜ ~ ➜ ~ cd /home/gehome-master/examples ➜ examples python3 websocket_example.py Traceback (most recent call last): File "/home/gehome-master/examples/websocket_example.py", line 24, in from gehomesdk import ( File "/home/gehome-master/gehomesdk/init.py", line 6, in from .clients import * File "/home/gehome-master/gehomesdk/clients/init.py", line 17, in from .base_client import GeBaseClient File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in from lxml import etree ModuleNotFoundError: No module named 'lxml' ➜ examples ./websocket_example.py ./websocket_example.py: line 6: Websocket client example We're going to run the client in a pre-existing event loop. We're also going to register some event callbacks to update appliances every five minutes and to turn on our oven the first time we see it. Because that is safe! : not found ./websocket_example.py: line 9: import: not found ./websocket_example.py: line 12: syntax error: unexpected "(" ➜ examples — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#22 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOEHFXGPA3WT6E63337YDPTT2OVYVANCNFSM5BGS4YJA .

I take my RPI3 with another version of HA, old, and i did again:

1 . Install your sdk, but i remember that is useless, need to get the project. Anyway i did it.

pi@RASPBERRYPi3FLIRC:~ $ **pip install gehomesdk**
Defaulting to user installation because normal site-packages is not writeable

Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting gehomesdk
  Downloading https://www.piwheels.org/simple/gehomesdk/gehomesdk-0.3.21-py3-non                                          e-any.whl (127 kB)
     |████████████████████████████████| 127 kB 645 kB/s
Collecting websockets
  Downloading websockets-9.1.tar.gz (76 kB)
     |████████████████████████████████| 76 kB 766 kB/s
Collecting humanize
  Downloading https://www.piwheels.org/simple/humanize/humanize-3.10.0-py3-none-any.whl (87 kB)
     |████████████████████████████████| 87 kB 630 kB/s
Collecting bidict
  Downloading https://www.piwheels.org/simple/bidict/bidict-0.21.2-py2.py3-none-any.whl (37 kB)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from gehomesdk) (2.21.0)
Collecting aiohttp
  Downloading aiohttp-3.7.4.post0.tar.gz (1.1 MB)
     |████████████████████████████████| 1.1 MB 3.2 MB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting typing-extensions>=3.6.5
  Downloading https://www.piwheels.org/simple/typing-extensions/typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
Collecting attrs>=17.3.0
  Downloading https://www.piwheels.org/simple/attrs/attrs-21.2.0-py2.py3-none-any.whl (53 kB)
     |████████████████████████████████| 53 kB 489 kB/s
Collecting async-timeout<4.0,>=3.0
  Downloading https://www.piwheels.org/simple/async-timeout/async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Collecting multidict<7.0,>=4.5
  Downloading multidict-5.1.0.tar.gz (53 kB)
     |████████████████████████████████| 53 kB 436 kB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp->gehomesdk) (3.0.4)
Collecting yarl<2.0,>=1.0
  Downloading yarl-1.6.3.tar.gz (176 kB)
     |████████████████████████████████| 176 kB 8.1 MB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp->gehomesdk) (2.6)
Requirement already satisfied: setuptools in ./.local/lib/python3.8/site-packages (from humanize->gehomesdk) (57.0.0)
Building wheels for collected packages: aiohttp, multidict, yarl, websockets
  Building wheel for aiohttp (PEP 517) ... done
  Created wheel for aiohttp: filename=aiohttp-3.7.4.post0-cp38-cp38-linux_armv7l.whl size=1388946 sha256=1df4fd61e03c47ee34a6b5e416d4f6d71962edbafce03394645a8b4bc4ac68bb
  Stored in directory: /home/pi/.cache/pip/wheels/70/a6/74/e3ee8e169262359ed1d452bdfbe82e6420aa40ccfc2d727126
  Building wheel for multidict (PEP 517) ... done
  Created wheel for multidict: filename=multidict-5.1.0-cp38-cp38-linux_armv7l.whl size=183941 sha256=b7621c90e7e7d284ed9d3ed29ff12bd636d610f63fb2bc09f8d1ecc83be1ca26
  Stored in directory: /home/pi/.cache/pip/wheels/72/97/bc/5bffee542d18b454f73bd1a593cd104de3c46a50e4f2946728
  Building wheel for yarl (PEP 517) ... done
  Created wheel for yarl: filename=yarl-1.6.3-cp38-cp38-linux_armv7l.whl size=299193 sha256=4caa3e2c938c87e1d528b03616cb91d7fd7ab023e9d974dcc30bd3332a4ad28b
  Stored in directory: /home/pi/.cache/pip/wheels/03/1d/d3/9693ea3024088fd2555f0cdbb42cb6b133e389a8e68502f85f
  Building wheel for websockets (setup.py) ... done
  Created wheel for websockets: filename=websockets-9.1-cp38-cp38-linux_armv7l.whl size=101058 sha256=b36d32d7451f7216cf3ae1f04d0347ed627a58666c6b9bd418f53950b8ec7741
  Stored in directory: /home/pi/.cache/pip/wheels/91/27/c6/be3a97fd1c8633d2841fd00fddbbce4c8847837ebcd4bdfb8d
Successfully built aiohttp multidict yarl websockets
Installing collected packages: multidict, yarl, typing-extensions, attrs, async-timeout, websockets, humanize, bidict, aiohttp, gehomesdk
Successfully installed aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-21.2.0 bidict-0.21.2 gehomesdk-0.3.21 humanize-3.10.0 multidict-5.1.0 typing-extensions-3.10.0.0 websockets-9.1 yarl-1.6.3
WARNING: You are using pip version 21.1.2; however, version 21.2.2 is available.
You should consider upgrading via the '/usr/bin/python3.8 -m pip install --upgrade pip' command.

Now I get gehome-master and put it in home/pi folder.

pi@RASPBERRYPi3FLIRC:/home $ sudo wget https://github.com/simbaja/gehome/archive/refs/heads/master.zip
--2021-07-31 15:45:36--  https://github.com/simbaja/gehome/archive/refs/heads/master.zip
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/simbaja/gehome/zip/refs/heads/master [following]
--2021-07-31 15:45:36--  https://codeload.github.com/simbaja/gehome/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... 140.82.121.9
Connecting to codeload.github.com (codeload.github.com)|140.82.121.9|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘master.zip’

master.zip                         [ <=>                                               ] 134.59K  --.-KB/s    in 0.1s

2021-07-31 15:45:37 (973 KB/s) - ‘master.zip’ saved [137824]

Unzip it

pi@RASPBERRYPi3FLIRC:/home $ sudo unzip master.zip
Archive:  master.zip
be18ef8099f45ffa74e4be202f04429084dbe400
   creating: gehome-master/
  inflating: gehome-master/.gitattributes
  inflating: gehome-master/.gitignore
  inflating: gehome-master/LICENSE
 extracting: gehome-master/MANIFEST.in
  inflating: gehome-master/README.md
   creating: gehome-master/examples/
 extracting: gehome-master/examples/__init__.py
  inflating: gehome-master/examples/websocket_example.py
  inflating: gehome-master/examples/xmpp_example.py
   creating: gehome-master/gehomesdk/
  inflating: gehome-master/gehomesdk/__init__.py
   creating: gehome-master/gehomesdk/clients/
  inflating: gehome-master/gehomesdk/clients/__init__.py
  inflating: gehome-master/gehomesdk/clients/async_helpers.py
  inflating: gehome-master/gehomesdk/clients/async_login_flows.py
  inflating: gehome-master/gehomesdk/clients/base_client.py
  inflating: gehome-master/gehomesdk/clients/const.py
  inflating: gehome-master/gehomesdk/clients/ge_client_xmpp.py
  inflating: gehome-master/gehomesdk/clients/states.py
  inflating: gehome-master/gehomesdk/clients/websocket_client.py
  inflating: gehome-master/gehomesdk/clients/xmpp_client.py
   creating: gehome-master/gehomesdk/erd/
  inflating: gehome-master/gehomesdk/erd/__init__.py
   creating: gehome-master/gehomesdk/erd/converters/
  inflating: gehome-master/gehomesdk/erd/converters/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/abstract.py
   creating: gehome-master/gehomesdk/erd/converters/advantium/
  inflating: gehome-master/gehomesdk/erd/converters/advantium/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_cook_setting_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_cook_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_cook_time_adjust_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_cook_time_min_max_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_cook_time_remaining_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_kitchen_timer_min_max_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_microwave_min_max_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_precision_min_max_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/advantium/erd_advantium_remote_cook_mode_config_converter.py
   creating: gehome-master/gehomesdk/erd/converters/dishwasher/
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/cycle_name_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/erd_cycle_state_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/erd_dishwasher_door_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/erd_rinse_agent_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/erd_user_setting_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/dishwasher/operating_mode_converter.py
   creating: gehome-master/gehomesdk/erd/converters/fridge/
  inflating: gehome-master/gehomesdk/erd/converters/fridge/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/erd_filter_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/fridge_door_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/fridge_ice_bucket_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/fridge_model_info_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/fridge_set_point_limits_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/fridge_set_points_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/hot_water_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/fridge/ice_maker_control_status_converter.py
   creating: gehome-master/gehomesdk/erd/converters/laundry/
  inflating: gehome-master/gehomesdk/erd/converters/laundry/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/dryness_level_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/ecodry_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/laundry_cycle_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/laundry_door_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/laundry_sub_cycle_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/machine_state_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/rinse_option_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/sheet_usage_configuration_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/smart_dispense_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/smart_dispense_tank_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/soil_level_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/spintime_level_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/tank_selected_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/temperature_option_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/tumble_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/laundry/washtemp_level_converter.py
   creating: gehome-master/gehomesdk/erd/converters/oven/
  inflating: gehome-master/gehomesdk/erd/converters/oven/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/cooktop_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_available_cook_mode_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_cooktop_config_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_oven_state_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_precision_cooking_app_probe_control_mode_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_precision_cooking_probe_battery_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_precision_cooking_probe_target_time_reached_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/erd_precision_cooking_start_sous_vide_timer_active_status_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/oven_configuration_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/oven_cook_mode_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/oven/oven_ranges_converter.py
   creating: gehome-master/gehomesdk/erd/converters/primitives/
  inflating: gehome-master/gehomesdk/erd/converters/primitives/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_bool_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_bytes_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_int_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_signed_byte_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_string_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_time_span_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/primitives/erd_time_span_seconds_converter.py
   creating: gehome-master/gehomesdk/erd/converters/specialized/
  inflating: gehome-master/gehomesdk/erd/converters/specialized/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_appliance_type_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_clock_format_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_end_tone_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_measurement_units_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_model_serial_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_software_version_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_sound_level_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/specialized/erd_unit_type_converter.py
   creating: gehome-master/gehomesdk/erd/converters/water_filter/
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/__init__.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_alert_settings_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_alert_state_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_filter_manual_mode_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_filter_mode_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_filter_position_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_filter_valve_state_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_leak_validity_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_waterfilter_flow_converter.py
  inflating: gehome-master/gehomesdk/erd/converters/water_filter/erd_waterfilter_life_converter.py
  inflating: gehome-master/gehomesdk/erd/erd_code_class.py
  inflating: gehome-master/gehomesdk/erd/erd_codes.py
  inflating: gehome-master/gehomesdk/erd/erd_configuration.py
  inflating: gehome-master/gehomesdk/erd/erd_encoder.py
   creating: gehome-master/gehomesdk/erd/values/
  inflating: gehome-master/gehomesdk/erd/values/__init__.py
   creating: gehome-master/gehomesdk/erd/values/advantium/
  inflating: gehome-master/gehomesdk/erd/values/advantium/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/advantium_cook_setting.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/advantium_enums.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/advantium_operation_mode.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/advantium_operation_mode_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_cook_setting.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_cook_status.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_cook_time_min_max.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_kitchen_timer_min_max.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_microwave_min_max.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_precision_min_max.py
  inflating: gehome-master/gehomesdk/erd/values/advantium/erd_advantium_remote_cook_mode_config.py
   creating: gehome-master/gehomesdk/erd/values/common/
  inflating: gehome-master/gehomesdk/erd/values/common/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_appliance_type.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_clock_format.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_end_tone.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_measurement_units.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_on_off.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_present.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_sound_level.py
  inflating: gehome-master/gehomesdk/erd/values/common/erd_unit_type.py
   creating: gehome-master/gehomesdk/erd/values/dishwasher/
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/cycle_state_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/erd_cycle_state.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/erd_dishwasher_door_status.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/erd_operating_mode.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/erd_rinse_agent.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/erd_user_setting.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/operating_mode.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/operating_mode_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/dishwasher/rinse_agent_mapping.py
   creating: gehome-master/gehomesdk/erd/values/fridge/
  inflating: gehome-master/gehomesdk/erd/values/fridge/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/erd_door_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/erd_filter_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/erd_full_not_full.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/erd_hot_water_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/erd_pod_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/fridge_door_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/fridge_ice_bucket_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/fridge_model_info.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/fridge_set_point_limits.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/fridge_set_points.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/hot_water_status.py
  inflating: gehome-master/gehomesdk/erd/values/fridge/ice_maker_control_status.py
   creating: gehome-master/gehomesdk/erd/values/laundry/
  inflating: gehome-master/gehomesdk/erd/values/laundry/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/dryness_level.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/dryness_level_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/ecodry_status.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/ecodry_status_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/laundry_enums.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/machine_state.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/machine_state_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/temperature_option.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/temperature_option_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/washtemp_level.py
  inflating: gehome-master/gehomesdk/erd/values/laundry/washtemp_level_mapping.py
   creating: gehome-master/gehomesdk/erd/values/oven/
  inflating: gehome-master/gehomesdk/erd/values/oven/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/oven/available_cook_mode.py
  inflating: gehome-master/gehomesdk/erd/values/oven/burner.py
  inflating: gehome-master/gehomesdk/erd/values/oven/const.py
  inflating: gehome-master/gehomesdk/erd/values/oven/cooktop_status.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_available_cook_mode.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_closed_loop_cooking_configuration.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_closed_loop_cooking_devices_status.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_cooktop_config.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_cooktop_status.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_oven_configuration.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_oven_cook_mode.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_oven_state.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_precision_cooking_app_probe_control_mode.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_precision_cooking_probe_battery_status.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_precision_cooking_probe_target_time_reached.py
  inflating: gehome-master/gehomesdk/erd/values/oven/erd_precision_cooking_start_sous_vide_timer_active_status.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_configuration.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_cook_mode.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_cook_mode_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_cook_setting.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_display_state_mapping.py
  inflating: gehome-master/gehomesdk/erd/values/oven/oven_ranges.py
   creating: gehome-master/gehomesdk/erd/values/water_filter/
  inflating: gehome-master/gehomesdk/erd/values/water_filter/__init__.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_alert_settings.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_alert_state.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_flowrate.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_leak_validity.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_life.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_manual_mode.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_mode.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_position.py
  inflating: gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_valve_state.py
   creating: gehome-master/gehomesdk/exception/
  inflating: gehome-master/gehomesdk/exception/__init__.py
  inflating: gehome-master/gehomesdk/exception/ge_auth_failed_error.py
  inflating: gehome-master/gehomesdk/exception/ge_client_disconnected_error.py
  inflating: gehome-master/gehomesdk/exception/ge_duplicate_appliance_error.py
  inflating: gehome-master/gehomesdk/exception/ge_exception.py
  inflating: gehome-master/gehomesdk/exception/ge_general_server_error.py
  inflating: gehome-master/gehomesdk/exception/ge_needs_reauthentication_error.py
  inflating: gehome-master/gehomesdk/exception/ge_not_authenticated_error.py
  inflating: gehome-master/gehomesdk/exception/ge_request_error.py
  inflating: gehome-master/gehomesdk/exception/ge_set_erd_not_allowed_error.py
  inflating: gehome-master/gehomesdk/exception/ge_unsupported_operation_error.py
  inflating: gehome-master/gehomesdk/ge_appliance.py
   creating: gehome-master/notes/
  inflating: gehome-master/notes/oauth_secrets.py
  inflating: gehome-master/setup.py
   creating: gehome-master/tests/
 extracting: gehome-master/tests/__init__.py
  inflating: gehome-master/tests/test_decoders.py

Set up all permission to avoid any trouble

pi@RASPBERRYPi3FLIRC:/home $ sudo chmod 777 -R gehome-master/

Then sudo nano secrets.py into examples folder and insert mail and pass about ge appliances app https://play.google.com/store/apps/details?id=com.ge.comfort&hl=it&gl=US That is the europe version i guess of smarthq.

Now tried to launch:

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 8, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'

No luck, so i have tried to install all dep from https://lxml.de/installation.html, like you suggested

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ **pip install lxml**
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: lxml in /usr/lib/python3/dist-packages (4.3.2)
WARNING: You are using pip version 21.1.2; however, version 21.2.2 is available.
You should consider upgrading via the '/usr/bin/python3.8 -m pip install --upgrade pip' command.
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo apt-get install python3-lxml
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3-lxml is already the newest version (4.3.2-1+deb10u3).
The following package was automatically installed and is no longer required:
  python-colorzero
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo apt-get install libxml2-dev libxslt-dev python-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libxslt1-dev' instead of 'libxslt-dev'
libxml2-dev is already the newest version (2.9.4+dfsg1-7+deb10u1).
libxslt1-dev is already the newest version (1.1.32-2.2~deb10u1).
The following package was automatically installed and is no longer required:
  python-colorzero
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
  libpython-dev libpython2-dev libpython2.7 libpython2.7-dev python2-dev python2.7-dev
The following NEW packages will be installed:
  libpython-dev libpython2-dev libpython2.7 libpython2.7-dev python-dev python2-dev python2.7-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 32.1 MB of archives.
After this operation, 49.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:6 http://raspbian.raspberrypi.org/raspbian buster/main armhf python2-dev armhf 2.7.16-1 [1,216 B]
Get:1 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython2.7 armhf 2.7.16-2+deb10u1 [873 kB]
Get:7 http://raspbian.raspberrypi.org/raspbian buster/main armhf python-dev armhf 2.7.16-1 [1,192 B]
Get:2 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython2.7-dev armhf 2.7.16-2+deb10u1 [30.9 MB]
Get:3 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython2-dev armhf 2.7.16-1 [20.9 kB]
Get:4 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython-dev armhf 2.7.16-1 [20.9 kB]
Get:5 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python2.7-dev armhf 2.7.16-2+deb10u1 [291 kB]
Fetched 32.1 MB in 14s (2,343 kB/s)
Selecting previously unselected package libpython2.7:armhf.
(Reading database ... 50155 files and directories currently installed.)
Preparing to unpack .../0-libpython2.7_2.7.16-2+deb10u1_armhf.deb ...
Unpacking libpython2.7:armhf (2.7.16-2+deb10u1) ...
Selecting previously unselected package libpython2.7-dev:armhf.
Preparing to unpack .../1-libpython2.7-dev_2.7.16-2+deb10u1_armhf.deb ...
Unpacking libpython2.7-dev:armhf (2.7.16-2+deb10u1) ...
Selecting previously unselected package libpython2-dev:armhf.
Preparing to unpack .../2-libpython2-dev_2.7.16-1_armhf.deb ...
Unpacking libpython2-dev:armhf (2.7.16-1) ...
Selecting previously unselected package libpython-dev:armhf.
Preparing to unpack .../3-libpython-dev_2.7.16-1_armhf.deb ...
Unpacking libpython-dev:armhf (2.7.16-1) ...
Selecting previously unselected package python2.7-dev.
Preparing to unpack .../4-python2.7-dev_2.7.16-2+deb10u1_armhf.deb ...
Unpacking python2.7-dev (2.7.16-2+deb10u1) ...
Selecting previously unselected package python2-dev.
Preparing to unpack .../5-python2-dev_2.7.16-1_armhf.deb ...
Unpacking python2-dev (2.7.16-1) ...
Selecting previously unselected package python-dev.
Preparing to unpack .../6-python-dev_2.7.16-1_armhf.deb ...
Unpacking python-dev (2.7.16-1) ...
Setting up libpython2.7:armhf (2.7.16-2+deb10u1) ...
Setting up libpython2.7-dev:armhf (2.7.16-2+deb10u1) ...
Setting up libpython2-dev:armhf (2.7.16-1) ...
Setting up python2.7-dev (2.7.16-2+deb10u1) ...
Setting up python2-dev (2.7.16-1) ...
Setting up libpython-dev:armhf (2.7.16-1) ...
Setting up python-dev (2.7.16-1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10+rpi1) ...

Try again also with other python version

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 13, in <module>
    from examples.secrets import USERNAME, PASSWORD
ModuleNotFoundError: No module named 'examples'

secrets is inside

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ ls
__init__.py  secrets.py  websocket_example.py  xmpp_example.py

Tried other way, no luck

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo python3.8 /home/gehome-master/examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 8, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'

Tried also to add this code in websocket_example.py

import os, sys

#Following lines are for assigning parent directory dynamically.
dir_path = os.path.dirname(os.path.realpath(__file__))
parent_dir_path = os.path.abspath(os.path.join(dir_path, os.pardir))
sys.path.insert(0, parent_dir_path)

No luck

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo python3.8 /home/gehome-master/examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'

Anyway this time, lxml doesn't have any error in istallation process, so is installed.

wheel is already installed

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ wheel
usage: wheel [-h] {unpack,pack,convert,version,help} ...

positional arguments:
  {unpack,pack,convert,version,help}
                        commands
    unpack              Unpack wheel
    pack                Repack wheel
    convert             Convert egg or wininst to wheel
    version             Print version and exit
    help                Show this help

optional arguments:
  -h, --help            show this help message and exit

What miss?

simbaja commented 3 years ago

The next one that you're missing appears to be aiohttp. You'll need to do pip install aiohttp... not sure why some of these aren't there, but I'll see if I can get them added to the setup.py for the package so that others don't run into this as much.

RobertusIT commented 3 years ago

The next one that you're missing appears to be aiohttp. You'll need to do pip install aiohttp... not sure why some of these aren't there, but I'll see if I can get them added to the setup.py for the package so that others don't run into this as much.

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ pip install aiohttp
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: aiohttp in /home/pi/.local/lib/python3.8/site-packages (3.7.4.post0)
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4)
Requirement already satisfied: attrs>=17.3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (21.2.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (5.1.0)
Requirement already satisfied: typing-extensions>=3.6.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.10.0.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (1.6.3)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.0.1)
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)
WARNING: You are using pip version 21.1.2; however, version 21.2.2 is available.
You should consider upgrading via the '/usr/bin/python3.8 -m pip install --upgrade pip' command.
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo python3.8 /home/gehome-master/examples/websocket_example.py
Traceback (most recent call last):
  File "/home/gehome-master/examples/websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ ls
__init__.py  secrets.py  websocket_example.py  xmpp_example.py
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ImportError: cannot import name 'etree' from 'lxml' (/usr/lib/python3/dist-packages/lxml/__init__.py)
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'
simbaja commented 3 years ago

I'm really not sure what you're missing at this point. Looking through the logs, it looks like you have aiohttp, but then when try to run using python, it says you don't. I'm guessing you have multiple versions of Python out there and it's causing problems. It also may be a pathing issue (your PYTHONPATH environment variable may not include the place where these modules are installed). Try this command and see if you get a different error when running the example afterwards:

python3.8 -m pip install aiohttp

RobertusIT commented 3 years ago

I'm really not sure what you're missing at this point. Looking through the logs, it looks like you have aiohttp, but then when try to run using python, it says you don't. I'm guessing you have multiple versions of Python out there and it's causing problems. It also may be a pathing issue (your PYTHONPATH environment variable may not include the place where these modules are installed). Try this command and see if you get a different error when running the example afterwards:

python3.8 -m pip install aiohttp

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3.8 -m pip install aiohttp

Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: aiohttp in /home/pi/.local/lib/python3.8/site-packages (3.7.4.post0)
Requirement already satisfied: yarl<2.0,>=1.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (1.6.3)
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4)
Requirement already satisfied: attrs>=17.3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (21.2.0)
Requirement already satisfied: typing-extensions>=3.6.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.10.0.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (5.1.0)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.0.1)
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)
WARNING: You are using pip version 21.1.2; however, version 21.2.2 is available.
You should consider upgrading via the '/usr/bin/python3.8 -m pip install --upgrade pip' command.
simbaja commented 3 years ago

I think it is some sort of pathing/versioning issue:

lxml is installed here: /usr/lib/python3/dist-packages aiohttp installed here: /home/pi/.local/lib/python3.8/site-packages

lxml may not be able to find aiohttp. I'd try the following:

pip uninstall aiohttp
sudo pip install aiohttp

Maybe that'll get them to play nicely together?

RobertusIT commented 3 years ago

I think it is some sort of pathing/versioning issue:

lxml is installed here: /usr/lib/python3/dist-packages aiohttp installed here: /home/pi/.local/lib/python3.8/site-packages

lxml may not be able to find aiohttp. I'd try the following:

pip uninstall aiohttp
sudo pip install aiohttp

Maybe that'll get them to play nicely together?

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ pip uninstall aiohttp

Found existing installation: aiohttp 3.7.4.post0
Uninstalling aiohttp-3.7.4.post0:
  Would remove:
    /home/pi/.local/lib/python3.8/site-packages/aiohttp-3.7.4.post0.dist-info/*
    /home/pi/.local/lib/python3.8/site-packages/aiohttp/*
Proceed (y/n)? Your response ('') was not one of the expected responses: y, n
Proceed (y/n)? Y
  Successfully uninstalled aiohttp-3.7.4.post0
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo pip install aiohttp
sudo: pip: command not found
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ pip install aiohttp
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp
  Using cached aiohttp-3.7.4.post0-cp38-cp38-linux_armv7l.whl
Requirement already satisfied: attrs>=17.3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (21.2.0)
Requirement already satisfied: typing-extensions>=3.6.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.10.0.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (5.1.0)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (3.0.1)
Requirement already satisfied: yarl<2.0,>=1.0 in /home/pi/.local/lib/python3.8/site-packages (from aiohttp) (1.6.3)
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4)
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)
Installing collected packages: aiohttp
Successfully installed aiohttp-3.7.4.post0
WARNING: You are using pip version 21.1.2; however, version 21.2.2 is available.
You should consider upgrading via the '/usr/bin/python3.8 -m pip install --upgrade pip' command.
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ImportError: cannot import name 'etree' from 'lxml' (/usr/lib/python3/dist-packages/lxml/__init__.py)
pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ python3 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'
simbaja commented 3 years ago

You have to install aiohttp using sudo so it can go into the right packages directory, doing it without sudo won't work, unfortunately. If pip isn't installed, try pip3. If that's not installed, you'll need to install pip while under sudo.

RobertusIT commented 3 years ago

You have to install aiohttp using sudo so it can go into the right packages directory, doing it without sudo won't work, unfortunately. If pip isn't installed, try pip3. If that's not installed, you'll need to install pip while under sudo.

unistall aiohttp in pi user

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ pip uninstall aiohttp

Found existing installation: aiohttp 3.7.4.post0
Uninstalling aiohttp-3.7.4.post0:
  Would remove:
    /home/pi/.local/lib/python3.8/site-packages/aiohttp-3.7.4.post0.dist-info/*
    /home/pi/.local/lib/python3.8/site-packages/aiohttp/*
Proceed (y/n)? Your response ('') was not one of the expected responses: y, n
Proceed (y/n)? y
  Successfully uninstalled aiohttp-3.7.4.post0

Now on root user, pip isn't recognize

pi@RASPBERRYPi3FLIRC:/home/gehome-master/examples $ sudo -i
root@RASPBERRYPi3FLIRC:~# pip install aiohttp
-bash: pip: command not found

Need to install pip on root in first

root@RASPBERRYPi3FLIRC:~# sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
  python-colorzero
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
  gir1.2-glib-2.0 javascript-common libgirepository-1.0-1 libjs-jquery libjs-sphinxdoc libjs-underscore
  libpython-all-dev python-all python-all-dev python-asn1crypto python-cffi-backend python-configparser python-crypto
  python-cryptography python-dbus python-entrypoints python-enum34 python-gi python-ipaddress python-keyring
  python-keyrings.alt python-secretstorage python-setuptools python-six python-wheel python-xdg
Suggested packages:
  apache2 | lighttpd | httpd python-crypto-doc python-cryptography-doc python-cryptography-vectors python-dbus-dbg
  python-dbus-doc python-enum34-doc python-gi-cairo gnome-keyring libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-gdata
  python-keyczar python-secretstorage-doc python-setuptools-doc
The following NEW packages will be installed:
  gir1.2-glib-2.0 javascript-common libgirepository-1.0-1 libjs-jquery libjs-sphinxdoc libjs-underscore
  libpython-all-dev python-all python-all-dev python-asn1crypto python-cffi-backend python-configparser python-crypto
  python-cryptography python-dbus python-entrypoints python-enum34 python-gi python-ipaddress python-keyring
  python-keyrings.alt python-pip python-secretstorage python-setuptools python-six python-wheel python-xdg
0 upgraded, 27 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,506 kB of archives.
After this operation, 10.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.raspberrypi.org/debian buster/main armhf python-pip all 18.1-5+rpt1 [215 kB]
Get:2 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf libgirepository-1.0-1 armhf 1.58.3-2 [78.8 kB]
Get:3 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf gir1.2-glib-2.0 armhf 1.58.3-2 [143 kB]
Get:4 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf javascript-common all 11 [6,120 B]
Get:5 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libjs-jquery all 3.3.1~dfsg-3+deb10u1 [332 kB]
Get:8 http://raspbian.raspberrypi.org/raspbian buster/main armhf libpython-all-dev armhf 2.7.16-1 [1,064 B]
Get:9 http://raspbian.raspberrypi.org/raspbian buster/main armhf python-all armhf 2.7.16-1 [1,044 B]
Get:10 http://raspbian.raspberrypi.org/raspbian buster/main armhf python-all-dev armhf 2.7.16-1 [1,068 B]
Get:6 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libjs-underscore all 1.9.1~dfsg-1+deb10u1 [100.0 kB]
Get:7 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libjs-sphinxdoc all 1.8.4-1 [95.9 kB]
Get:11 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-asn1crypto all 0.24.0-1 [78.1 kB]
Get:13 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-configparser all 3.5.0b2-1 [59.2 kB]
Get:14 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-crypto armhf 2.6.1-9+b1 [248 kB]
Get:12 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python-cffi-backend armhf 1.12.2-1 [69.4 kB]
Get:15 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-enum34 all 1.1.6-2 [35.3 kB]
Get:16 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-ipaddress all 1.0.17-1 [18.1 kB]
Get:17 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-six all 1.12.0-1 [15.7 kB]
Get:18 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python-cryptography armhf 2.6.1-3+deb10u2 [184 kB]
Get:19 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-dbus armhf 1.2.8-3 [95.7 kB]
Get:20 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-entrypoints all 0.3-1 [5,444 B]
Get:21 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-gi armhf 3.30.4-1 [208 kB]
Get:22 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-secretstorage all 2.3.1-2 [13.8 kB]
Get:23 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-keyring all 17.1.1-1 [47.1 kB]
Get:24 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf python-keyrings.alt all 3.1.1-1 [18.3 kB]
Get:25 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python-setuptools all 40.8.0-1 [382 kB]
Get:26 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python-wheel all 0.32.3-2 [19.3 kB]
Get:27 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python-xdg all 0.25-5 [35.9 kB]
Fetched 2,506 kB in 6s (416 kB/s)
Selecting previously unselected package libgirepository-1.0-1:armhf.
(Reading database ... 50304 files and directories currently installed.)
Preparing to unpack .../00-libgirepository-1.0-1_1.58.3-2_armhf.deb ...
Unpacking libgirepository-1.0-1:armhf (1.58.3-2) ...
Selecting previously unselected package gir1.2-glib-2.0:armhf.
Preparing to unpack .../01-gir1.2-glib-2.0_1.58.3-2_armhf.deb ...
Unpacking gir1.2-glib-2.0:armhf (1.58.3-2) ...
Selecting previously unselected package javascript-common.
Preparing to unpack .../02-javascript-common_11_all.deb ...
Unpacking javascript-common (11) ...
Selecting previously unselected package libjs-jquery.
Preparing to unpack .../03-libjs-jquery_3.3.1~dfsg-3+deb10u1_all.deb ...
Unpacking libjs-jquery (3.3.1~dfsg-3+deb10u1) ...
Selecting previously unselected package libjs-underscore.
Preparing to unpack .../04-libjs-underscore_1.9.1~dfsg-1+deb10u1_all.deb ...
Unpacking libjs-underscore (1.9.1~dfsg-1+deb10u1) ...
Selecting previously unselected package libjs-sphinxdoc.
Preparing to unpack .../05-libjs-sphinxdoc_1.8.4-1_all.deb ...
Unpacking libjs-sphinxdoc (1.8.4-1) ...
Selecting previously unselected package libpython-all-dev:armhf.
Preparing to unpack .../06-libpython-all-dev_2.7.16-1_armhf.deb ...
Unpacking libpython-all-dev:armhf (2.7.16-1) ...
Selecting previously unselected package python-all.
Preparing to unpack .../07-python-all_2.7.16-1_armhf.deb ...
Unpacking python-all (2.7.16-1) ...
Selecting previously unselected package python-all-dev.
Preparing to unpack .../08-python-all-dev_2.7.16-1_armhf.deb ...
Unpacking python-all-dev (2.7.16-1) ...
Selecting previously unselected package python-asn1crypto.
Preparing to unpack .../09-python-asn1crypto_0.24.0-1_all.deb ...
Unpacking python-asn1crypto (0.24.0-1) ...
Selecting previously unselected package python-cffi-backend.
Preparing to unpack .../10-python-cffi-backend_1.12.2-1_armhf.deb ...
Unpacking python-cffi-backend (1.12.2-1) ...
Selecting previously unselected package python-configparser.
Preparing to unpack .../11-python-configparser_3.5.0b2-1_all.deb ...
Unpacking python-configparser (3.5.0b2-1) ...
Selecting previously unselected package python-crypto.
Preparing to unpack .../12-python-crypto_2.6.1-9+b1_armhf.deb ...
Unpacking python-crypto (2.6.1-9+b1) ...
Selecting previously unselected package python-enum34.
Preparing to unpack .../13-python-enum34_1.1.6-2_all.deb ...
Unpacking python-enum34 (1.1.6-2) ...
Selecting previously unselected package python-ipaddress.
Preparing to unpack .../14-python-ipaddress_1.0.17-1_all.deb ...
Unpacking python-ipaddress (1.0.17-1) ...
Selecting previously unselected package python-six.
Preparing to unpack .../15-python-six_1.12.0-1_all.deb ...
Unpacking python-six (1.12.0-1) ...
Selecting previously unselected package python-cryptography.
Preparing to unpack .../16-python-cryptography_2.6.1-3+deb10u2_armhf.deb ...
Unpacking python-cryptography (2.6.1-3+deb10u2) ...
Selecting previously unselected package python-dbus.
Preparing to unpack .../17-python-dbus_1.2.8-3_armhf.deb ...
Unpacking python-dbus (1.2.8-3) ...
Selecting previously unselected package python-entrypoints.
Preparing to unpack .../18-python-entrypoints_0.3-1_all.deb ...
Unpacking python-entrypoints (0.3-1) ...
Selecting previously unselected package python-gi.
Preparing to unpack .../19-python-gi_3.30.4-1_armhf.deb ...
Unpacking python-gi (3.30.4-1) ...
Selecting previously unselected package python-secretstorage.
Preparing to unpack .../20-python-secretstorage_2.3.1-2_all.deb ...
Unpacking python-secretstorage (2.3.1-2) ...
Selecting previously unselected package python-keyring.
Preparing to unpack .../21-python-keyring_17.1.1-1_all.deb ...
Unpacking python-keyring (17.1.1-1) ...
Selecting previously unselected package python-keyrings.alt.
Preparing to unpack .../22-python-keyrings.alt_3.1.1-1_all.deb ...
Unpacking python-keyrings.alt (3.1.1-1) ...
Selecting previously unselected package python-pip.
Preparing to unpack .../23-python-pip_18.1-5+rpt1_all.deb ...
Unpacking python-pip (18.1-5+rpt1) ...
Selecting previously unselected package python-setuptools.
Preparing to unpack .../24-python-setuptools_40.8.0-1_all.deb ...
Unpacking python-setuptools (40.8.0-1) ...
Selecting previously unselected package python-wheel.
Preparing to unpack .../25-python-wheel_0.32.3-2_all.deb ...
Unpacking python-wheel (0.32.3-2) ...
Selecting previously unselected package python-xdg.
Preparing to unpack .../26-python-xdg_0.25-5_all.deb ...
Unpacking python-xdg (0.25-5) ...
Setting up javascript-common (11) ...
Setting up python-enum34 (1.1.6-2) ...
Setting up python-crypto (2.6.1-9+b1) ...
Setting up libpython-all-dev:armhf (2.7.16-1) ...
Setting up python-wheel (0.32.3-2) ...
Setting up python-asn1crypto (0.24.0-1) ...
Setting up python-all (2.7.16-1) ...
Setting up python-six (1.12.0-1) ...
Setting up python-xdg (0.25-5) ...
Setting up python-dbus (1.2.8-3) ...
Setting up python-pip (18.1-5+rpt1) ...
Setting up python-setuptools (40.8.0-1) ...
Setting up libgirepository-1.0-1:armhf (1.58.3-2) ...
Setting up python-all-dev (2.7.16-1) ...
Setting up libjs-jquery (3.3.1~dfsg-3+deb10u1) ...
Setting up python-ipaddress (1.0.17-1) ...
Setting up libjs-underscore (1.9.1~dfsg-1+deb10u1) ...
Setting up python-cffi-backend (1.12.2-1) ...
Setting up python-keyrings.alt (3.1.1-1) ...
Setting up python-cryptography (2.6.1-3+deb10u2) ...
Setting up gir1.2-glib-2.0:armhf (1.58.3-2) ...
Setting up libjs-sphinxdoc (1.8.4-1) ...
Setting up python-gi (3.30.4-1) ...
Setting up python-secretstorage (2.3.1-2) ...
Setting up python-configparser (3.5.0b2-1) ...
Setting up python-entrypoints (0.3-1) ...
Setting up python-keyring (17.1.1-1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10+rpi1) ...

Now try to unistall aiohttp but is useless at the moment, anyway i have tried

root@RASPBERRYPi3FLIRC:~# pip uninstall aiohttp
Skipping aiohttp as it is not installed.

Now install on root aiohttp and error because need a version of python

root@RASPBERRYPi3FLIRC:~# pip install aiohttp
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp
  Downloading https://files.pythonhosted.org/packages/2e/e6/9175733f42cec4f2cd6834564517f2f6260e27dab5edb75afdaa66f101bb/iohttp-2.3.1.tar.gz (1.1MB)
    100% |████████████████████████████████| 1.1MB 189kB/s
  Installing build dependencies ... done
aiohttp requires Python '>=3.4.2' but the running Python is 2.7.16

Install python 3.4

root@RASPBERRYPi3FLIRC:~# apt-get install python3.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
  python-colorzero
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  libpython3.4-minimal libpython3.4-stdlib python3.4-minimal
Suggested packages:
  python3.4-venv python3.4-doc binfmt-support
The following NEW packages will be installed:
  libpython3.4-minimal libpython3.4-stdlib python3.4 python3.4-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,020 kB of archives.
After this operation, 20.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython3.4-minimal armhf 3.4.4-3+rpi1 [464 kB]
Get:2 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3.4-minimal armhf 3.4.4-3+rpi1 [1,267 kB]
Get:3 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython3.4-stdlib armhf 3.4.4-3+rpi1 [2,059 kB]
Get:4 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3.4 armhf 3.4.4-3+rpi1 [229 kB]
Fetched 4,020 kB in 3s (1,374 kB/s)
Selecting previously unselected package libpython3.4-minimal:armhf.
(Reading database ... 51245 files and directories currently installed.)
Preparing to unpack .../libpython3.4-minimal_3.4.4-3+rpi1_armhf.deb ...
Unpacking libpython3.4-minimal:armhf (3.4.4-3+rpi1) ...
Selecting previously unselected package python3.4-minimal.
Preparing to unpack .../python3.4-minimal_3.4.4-3+rpi1_armhf.deb ...
Unpacking python3.4-minimal (3.4.4-3+rpi1) ...
Selecting previously unselected package libpython3.4-stdlib:armhf.
Preparing to unpack .../libpython3.4-stdlib_3.4.4-3+rpi1_armhf.deb ...
Unpacking libpython3.4-stdlib:armhf (3.4.4-3+rpi1) ...
Selecting previously unselected package python3.4.
Preparing to unpack .../python3.4_3.4.4-3+rpi1_armhf.deb ...
Unpacking python3.4 (3.4.4-3+rpi1) ...
Setting up libpython3.4-minimal:armhf (3.4.4-3+rpi1) ...
Setting up libpython3.4-stdlib:armhf (3.4.4-3+rpi1) ...
Setting up python3.4-minimal (3.4.4-3+rpi1) ...
Setting up python3.4 (3.4.4-3+rpi1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for mime-support (3.62) ...

Time to launch

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.4 websocket_example.py
  File "websocket_example.py", line 39
    async def log_state_change(data: Tuple[GeAppliance, Dict[ErdCodeType, Any]]):
            ^
SyntaxError: invalid syntax
simbaja commented 3 years ago

You'll need at least python 3.8 instead of python 3.4, older versions don't support the newer functionality.

RobertusIT commented 3 years ago

You'll need at least python 3.8 instead of python 3.4, older versions don't support the newer functionality.

delete python 3.4

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# apt-get purge python3.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libpython3.4-minimal libpython3.4-stdlib python-colorzero python3.4-minimal
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  python3.4*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 319 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 52067 files and directories currently installed.)
Removing python3.4 (3.4.4-3+rpi1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for mime-support (3.62) ...

Then install 3.8 but is already installed

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# apt-get install python3.8
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3.8 is already the newest version (3.8.7-1~bpo10+1).
The following packages were automatically installed and are no longer required:
  libpython3.4-minimal libpython3.4-stdlib python-colorzero python3.4-minimal
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Try again

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'

Here we can see that aiohttp require python more than 3.4.2, but i have tried with 3.8 and doesn't works, like you see

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# pip install aiohttp
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp
  Using cached https://files.pythonhosted.org/packages/2e/e6/9175733f42cec4f2cd6834564517f2f6260e27dab5edb75afdaa66f101bb/aiohttp-2.3.1.tar.gz
  Installing build dependencies ... done
aiohttp requires Python '>=3.4.2' but the running Python is 2.7.16
simbaja commented 3 years ago

it appears that root is using a different version of python, so when you call pip or python it is using python 2.7 by default. (you can verify by running python --version, it will return 2.7). You might be able to do sudo apt install python-is-python3 to get the system to use python3 by default. If not, you can try the following:

sudo apt-get install python3 python3-pip

Then see what the python alternatives are: sudo update-alternatives --config python

If you don't see the 3.8 version listed, you can then install it: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10

simbaja commented 3 years ago

You might also be able to do pip3 install aiohttp as well, which might be easier if it works.

RobertusIT commented 3 years ago

it appears that root is using a different version of python, so when you call pip or python it is using python 2.7 by default. (you can verify by running python --version, it will return 2.7). You might be able to do sudo apt install python-is-python3 to get the system to use python3 by default. If not, you can try the following:

sudo apt-get install python3 python3-pip

Then see what the python alternatives are: sudo update-alternatives --config python

If you don't see the 3.8 version listed, you can then install it: sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10

In first i want to say thanks for the patience. On root:

root@RASPBERRYPi3FLIRC:~# python --version
Python 2.7.16

Tried to install python 3 in root

root@RASPBERRYPi3FLIRC:~# apt install python-is-python3
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package python-is-python3

Now i tried to install with your 2nd command, about python3

root@RASPBERRYPi3FLIRC:~# apt-get install python3 python3-pip
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3 is already the newest version (3.7.3-1).
python3 set to manually installed.
The following packages were automatically installed and are no longer required:
  libpython3.4-minimal libpython3.4-stdlib python-colorzero python3.4-minimal
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  dh-python libpython3-dev libpython3.7-dev python3-asn1crypto
  python3-cffi-backend python3-crypto python3-cryptography python3-dbus
  python3-dev python3-distutils python3-entrypoints python3-gi python3-keyring
  python3-keyrings.alt python3-lib2to3 python3-secretstorage
  python3-setuptools python3-wheel python3-xdg python3.7-dev
Suggested packages:
  python-crypto-doc python-cryptography-doc python3-cryptography-vectors
  python-dbus-doc python3-dbus-dbg gnome-keyring libkf5wallet-bin
  gir1.2-gnomekeyring-1.0 python-secretstorage-doc python-setuptools-doc
The following NEW packages will be installed:
  dh-python libpython3-dev libpython3.7-dev python3-asn1crypto
  python3-cffi-backend python3-crypto python3-cryptography python3-dbus
  python3-dev python3-distutils python3-entrypoints python3-gi python3-keyring
  python3-keyrings.alt python3-lib2to3 python3-pip python3-secretstorage
  python3-setuptools python3-wheel python3-xdg python3.7-dev
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 49.5 MB of archives.
After this operation, 80.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.raspberrypi.org/debian buster/main armhf python3-pip all 18                               .1-5+rpt1 [171 kB]
Get:2 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-li                               b2to3 all 3.7.3-1 [76.7 kB]
Get:3 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-di                               stutils all 3.7.3-1 [142 kB]
Get:4 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf dh-python                                all 3.20190308 [99.3 kB]
Get:7 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf                                python3-asn1crypto all 0.24.0-1 [78.2 kB]
Get:5 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython3                               .7-dev armhf 3.7.3-2+deb10u3 [47.2 MB]
Get:9 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armhf                                python3-crypto armhf 2.6.1-9+b1 [251 kB]
Get:11 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-dbus armhf 1.2.8-3 [95.9 kB]
Get:13 http://raspbian.raspberrypi.org/raspbian buster/main armhf python3-dev ar                               mhf 3.7.3-1 [1,264 B]
Get:14 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-entrypoints all 0.3-1 [5,508 B]
Get:15 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-gi armhf 3.30.4-1 [161 kB]
Get:16 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-secretstorage all 2.3.1-2 [14.2 kB]
Get:17 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-keyring all 17.1.1-1 [43.1 kB]
Get:18 http://raspbian.mirror.garr.it/mirrors/raspbian/raspbian buster/main armh                               f python3-keyrings.alt all 3.1.1-1 [18.2 kB]
Get:6 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf libpython3                               -dev armhf 3.7.3-1 [20.1 kB]
Get:8 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-cf                               fi-backend armhf 1.12.2-1 [70.1 kB]
Get:10 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-c                               ryptography armhf 2.6.1-3+deb10u2 [184 kB]
Get:12 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3.7                               -dev armhf 3.7.3-2+deb10u3 [513 kB]
Get:19 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-s                               etuptools all 40.8.0-1 [306 kB]
Get:20 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-w                               heel all 0.32.3-2 [19.4 kB]
Get:21 http://ftp.arnes.si/mirrors/raspbian/raspbian buster/main armhf python3-x                               dg all 0.25-5 [35.9 kB]
Fetched 49.5 MB in 14s (3,595 kB/s)
Selecting previously unselected package python3-lib2to3.
(Reading database ... 52047 files and directories currently installed.)
Preparing to unpack .../00-python3-lib2to3_3.7.3-1_all.deb ...
Unpacking python3-lib2to3 (3.7.3-1) ...
Selecting previously unselected package python3-distutils.
Preparing to unpack .../01-python3-distutils_3.7.3-1_all.deb ...
Unpacking python3-distutils (3.7.3-1) ...
Selecting previously unselected package dh-python.
Preparing to unpack .../02-dh-python_3.20190308_all.deb ...
Unpacking dh-python (3.20190308) ...
Selecting previously unselected package libpython3.7-dev:armhf.
Preparing to unpack .../03-libpython3.7-dev_3.7.3-2+deb10u3_armhf.deb ...
Unpacking libpython3.7-dev:armhf (3.7.3-2+deb10u3) ...
Selecting previously unselected package libpython3-dev:armhf.
Preparing to unpack .../04-libpython3-dev_3.7.3-1_armhf.deb ...
Unpacking libpython3-dev:armhf (3.7.3-1) ...
Selecting previously unselected package python3-asn1crypto.
Preparing to unpack .../05-python3-asn1crypto_0.24.0-1_all.deb ...
Unpacking python3-asn1crypto (0.24.0-1) ...
Selecting previously unselected package python3-cffi-backend.
Preparing to unpack .../06-python3-cffi-backend_1.12.2-1_armhf.deb ...
Unpacking python3-cffi-backend (1.12.2-1) ...
Selecting previously unselected package python3-crypto.
Preparing to unpack .../07-python3-crypto_2.6.1-9+b1_armhf.deb ...
Unpacking python3-crypto (2.6.1-9+b1) ...
Selecting previously unselected package python3-cryptography.
Preparing to unpack .../08-python3-cryptography_2.6.1-3+deb10u2_armhf.deb ...
Unpacking python3-cryptography (2.6.1-3+deb10u2) ...
Selecting previously unselected package python3-dbus.
Preparing to unpack .../09-python3-dbus_1.2.8-3_armhf.deb ...
Unpacking python3-dbus (1.2.8-3) ...
Selecting previously unselected package python3.7-dev.
Preparing to unpack .../10-python3.7-dev_3.7.3-2+deb10u3_armhf.deb ...
Unpacking python3.7-dev (3.7.3-2+deb10u3) ...
Selecting previously unselected package python3-dev.
Preparing to unpack .../11-python3-dev_3.7.3-1_armhf.deb ...
Unpacking python3-dev (3.7.3-1) ...
Selecting previously unselected package python3-entrypoints.
Preparing to unpack .../12-python3-entrypoints_0.3-1_all.deb ...
Unpacking python3-entrypoints (0.3-1) ...
Selecting previously unselected package python3-gi.
Preparing to unpack .../13-python3-gi_3.30.4-1_armhf.deb ...
Unpacking python3-gi (3.30.4-1) ...
Selecting previously unselected package python3-secretstorage.
Preparing to unpack .../14-python3-secretstorage_2.3.1-2_all.deb ...
Unpacking python3-secretstorage (2.3.1-2) ...
Selecting previously unselected package python3-keyring.
Preparing to unpack .../15-python3-keyring_17.1.1-1_all.deb ...
Unpacking python3-keyring (17.1.1-1) ...
Selecting previously unselected package python3-keyrings.alt.
Preparing to unpack .../16-python3-keyrings.alt_3.1.1-1_all.deb ...
Unpacking python3-keyrings.alt (3.1.1-1) ...
Selecting previously unselected package python3-pip.
Preparing to unpack .../17-python3-pip_18.1-5+rpt1_all.deb ...
Unpacking python3-pip (18.1-5+rpt1) ...
Selecting previously unselected package python3-setuptools.
Preparing to unpack .../18-python3-setuptools_40.8.0-1_all.deb ...
Unpacking python3-setuptools (40.8.0-1) ...
Selecting previously unselected package python3-wheel.
Preparing to unpack .../19-python3-wheel_0.32.3-2_all.deb ...
Unpacking python3-wheel (0.32.3-2) ...
Selecting previously unselected package python3-xdg.
Preparing to unpack .../20-python3-xdg_0.25-5_all.deb ...
Unpacking python3-xdg (0.25-5) ...
Setting up python3-entrypoints (0.3-1) ...
Setting up python3-dbus (1.2.8-3) ...
Setting up libpython3.7-dev:armhf (3.7.3-2+deb10u3) ...
Setting up python3-xdg (0.25-5) ...
Setting up python3-wheel (0.32.3-2) ...
Setting up python3.7-dev (3.7.3-2+deb10u3) ...
Setting up python3-gi (3.30.4-1) ...
Setting up python3-crypto (2.6.1-9+b1) ...
Setting up python3-lib2to3 (3.7.3-1) ...
Setting up python3-asn1crypto (0.24.0-1) ...
Setting up python3-cffi-backend (1.12.2-1) ...
Setting up python3-distutils (3.7.3-1) ...
Setting up dh-python (3.20190308) ...
Setting up libpython3-dev:armhf (3.7.3-1) ...
Setting up python3-setuptools (40.8.0-1) ...
Setting up python3-cryptography (2.6.1-3+deb10u2) ...
Setting up python3-dev (3.7.3-1) ...
Setting up python3-pip (18.1-5+rpt1) ...
Setting up python3-keyrings.alt (3.1.1-1) ...
Setting up python3-secretstorage (2.3.1-2) ...
Setting up python3-keyring (17.1.1-1) ...
Processing triggers for man-db (2.8.5-2) ...

No alternative for python

root@RASPBERRYPi3FLIRC:~# update-alternatives --config python
update-alternatives: error: no alternatives for python
root@RASPBERRYPi3FLIRC:~# update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python (python) in auto mode

Now install aiohttp

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# pip3 install aiohttp
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp
  Downloading https://www.piwheels.org/simple/aiohttp/aiohttp-3.7.4.post0-cp37-cp37m-linux_armv7l.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 197kB/s
Collecting async-timeout<4.0,>=3.0 (from aiohttp)
  Downloading https://files.pythonhosted.org/packages/e1/1e/5a4441be21b0726c4464f3f23c8b19628372f606755a9d2e46c187e65ec4/async_timeout-3.0.1-py3-none-any.whl
Collecting attrs>=17.3.0 (from aiohttp)
  Downloading https://files.pythonhosted.org/packages/20/a9/ba6f1cd1a1517ff022b35acd6a7e4246371dfab08b8e42b829b6d07913cc/attrs-21.2.0-py2.py3-none-any.whl (53kB)
    100% |████████████████████████████████| 61kB 883kB/s
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4)
Collecting typing-extensions>=3.6.5 (from aiohttp)
  Downloading https://files.pythonhosted.org/packages/2e/35/6c4fff5ab443b57116cb1aad46421fb719bed2825664e8fe77d66d99bcbc/typing_extensions-3.10.0.0-py3-none-any.whl
Collecting yarl<2.0,>=1.0 (from aiohttp)
  Downloading https://www.piwheels.org/simple/yarl/yarl-1.6.3-cp37-cp37m-linux_armv7l.whl (262kB)
    100% |████████████████████████████████| 266kB 585kB/s
Collecting multidict<7.0,>=4.5 (from aiohttp)
  Downloading https://files.pythonhosted.org/packages/1c/74/e8b46156f37ca56d10d895d4e8595aa2b344cff3c1fb3629ec97a8656ccb/multidict-5.1.0.tar.gz (53kB)
    100% |████████████████████████████████| 61kB 1.5MB/s
  Installing build dependencies ... done
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)
Building wheels for collected packages: multidict
  Running setup.py bdist_wheel for multidict ... done
  Stored in directory: /root/.cache/pip/wheels/e7/05/d2/f5c04c29d0e4b234dbcd4b609b51f8c65d67ff9bbd01c904b1
Successfully built multidict
Installing collected packages: async-timeout, attrs, typing-extensions, multidict, yarl, aiohttp
Successfully installed aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-21.2.0 multidict-5.1.0 typing-extensions-3.10.0.0 yarl-1.6.3
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 16, in <module>
    import aiohttp
ModuleNotFoundError: No module named 'aiohttp'
simbaja commented 3 years ago

In the install log for python, it looks like it's using python 3.7.3-1, but you have python 3.8 as well, so still looks like a versioning thing potentially. It's clearly installed in some spot. Can you do the following:

pip --version
pip3 --version

pip show
pip3 show
RobertusIT commented 3 years ago

pip3 --version

root@RASPBERRYPi3FLIRC:~# pip show
pip3 shERROR: Please provide a package name or names.
root@RASPBERRYPi3FLIRC:~# pip3 show
ERROR: Please provide a package name or names.
root@RASPBERRYPi3FLIRC:~# pip --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.8)
root@RASPBERRYPi3FLIRC:~# pip3 --version
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
simbaja commented 3 years ago

So, it looks like we'll need to use pip since it's tied to 3.8. Can you try pip install aiohttp and then run the example and see if we get something different?

RobertusIT commented 3 years ago

So, it looks like we'll need to use pip since it's tied to 3.8. Can you try pip install aiohttp and then run the example and see if we get something different?

pip installed on root

root@RASPBERRYPi3FLIRC:~# pip install aiohttp
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp
  Downloading https://files.pythonhosted.org/packages/99/f5/90ede947a3ce2d6de161                       4799f5fea4e93c19b6520a59dc5d2f64123b032f/aiohttp-3.7.4.post0.tar.gz (1.1MB)
    100% |████████████████████████████████| 1.1MB 198kB/s
  Installing build dependencies ... done
Collecting attrs>=17.3.0 (from aiohttp)
  Using cached https://files.pythonhosted.org/packages/20/a9/ba6f1cd1a1517ff022b                       35acd6a7e4246371dfab08b8e42b829b6d07913cc/attrs-21.2.0-py2.py3-none-any.whl
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packag                       es (from aiohttp) (3.0.4)
Collecting multidict<7.0,>=4.5 (from aiohttp)
  Using cached https://files.pythonhosted.org/packages/1c/74/e8b46156f37ca56d10d                       895d4e8595aa2b344cff3c1fb3629ec97a8656ccb/multidict-5.1.0.tar.gz
  Installing build dependencies ... done
Collecting async_timeout<4.0,>=3.0 (from aiohttp)
  Using cached https://files.pythonhosted.org/packages/e1/1e/5a4441be21b0726c446                       4f3f23c8b19628372f606755a9d2e46c187e65ec4/async_timeout-3.0.1-py3-none-any.whl
Collecting yarl<2.0,>=1.0 (from aiohttp)
  Downloading https://files.pythonhosted.org/packages/97/e7/af7219a0fe240e8ef6bb                       555341a63c43045c21ab0392b4435e754b716fa1/yarl-1.6.3.tar.gz (176kB)
    100% |████████████████████████████████| 184kB 1.0MB/s
  Installing build dependencies ... done
Collecting typing_extensions>=3.6.5 (from aiohttp)
  Using cached https://files.pythonhosted.org/packages/2e/35/6c4fff5ab443b57116c                       b1aad46421fb719bed2825664e8fe77d66d99bcbc/typing_extensions-3.10.0.0-py3-none-an                       y.whl
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from                        yarl<2.0,>=1.0->aiohttp) (2.6)
Building wheels for collected packages: aiohttp, multidict, yarl
  Running setup.py bdist_wheel for aiohttp ... done
  Stored in directory: /root/.cache/pip/wheels/15/aa/5f/33df380f4940b1c1bda8d83967345fcb97d0749e2cfbb06794
  Running setup.py bdist_wheel for multidict ... done
  Stored in directory: /root/.cache/pip/wheels/e7/05/d2/f5c04c29d0e4b234dbcd4b609b51f8c65d67ff9bbd01c904b1
  Running setup.py bdist_wheel for yarl ... done
  Stored in directory: /root/.cache/pip/wheels/dc/fc/db/bca151751ff7119f584686572f716c4b35637210a3e52f6050
Successfully built aiohttp multidict yarl
Installing collected packages: attrs, multidict, async-timeout, yarl, typing-extensions, aiohttp
Successfully installed aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-21.2.0 multidict-5.1.0 typing-extensions-3.10.0.0 yarl-1.6.3

Tried to launch

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 4, in <module>
    from gehomesdk.clients.async_login_flows import async_get_oauth2_token, async_refresh_oauth2_token
  File "/home/gehome-master/gehomesdk/clients/async_login_flows.py", line 2, in <module>
    from lxml import etree
ImportError: cannot import name 'etree' from 'lxml' (/usr/lib/python3/dist-packages/lxml/__init__.py)
simbaja commented 3 years ago

different error :). Try pip install lxml and see if that resolves that particular issue

RobertusIT commented 3 years ago

different error :). Try pip install lxml and see if that resolves that particular issue

root@RASPBERRYPi3FLIRC:~# pip install lxml
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: lxml in /usr/lib/python3/dist-packages (4.3.2)
simbaja commented 3 years ago

ah, that's an old version of lxml for some reason.

perhaps try pip install lxml --upgrade and see if it gives you a newer version

RobertusIT commented 3 years ago

pip install lxml --upgrade

root@RASPBERRYPi3FLIRC:~# pip install lxml --upgrade
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting lxml
  Downloading https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz (3.2MB)
    100% |████████████████████████████████| 3.2MB 75kB/s
Building wheels for collected packages: lxml
  Running setup.py bdist_wheel for lxml ... /                                                         done
  Stored in directory: /root/.cache/pip/wheels/14/64/a2/36bb17509740641231ffab47b8e3052c41761581aba03f8ba4
Successfully built lxml
Installing collected packages: lxml
  Found existing installation: lxml 4.3.2
    Not uninstalling lxml at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'lxml'. No files were found to uninstall.
Successfully installed lxml-4.6.3
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 12, in <module>
    from ..erd import ErdCode, ErdCodeType
  File "/home/gehome-master/gehomesdk/erd/__init__.py", line 3, in <module>
    from .values import *
  File "/home/gehome-master/gehomesdk/erd/values/__init__.py", line 6, in <module>
    from .oven import *
  File "/home/gehome-master/gehomesdk/erd/values/oven/__init__.py", line 11, in <module>
    from .oven_cook_mode_mapping import OVEN_COOK_MODE_MAP
  File "/home/gehome-master/gehomesdk/erd/values/oven/oven_cook_mode_mapping.py", line 1, in <module>
    import bidict
ModuleNotFoundError: No module named 'bidict'
RobertusIT commented 3 years ago

pip install lxml --upgrade

root@RASPBERRYPi3FLIRC:~# pip install lxml --upgrade
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting lxml
  Downloading https://files.pythonhosted.org/packages/e5/21/a2e4517e3d216f0051687eea3d3317557bde68736f038a3b105ac3809247/lxml-4.6.3.tar.gz (3.2MB)
    100% |████████████████████████████████| 3.2MB 75kB/s
Building wheels for collected packages: lxml
  Running setup.py bdist_wheel for lxml ... /                                                         done
  Stored in directory: /root/.cache/pip/wheels/14/64/a2/36bb17509740641231ffab47b8e3052c41761581aba03f8ba4
Successfully built lxml
Installing collected packages: lxml
  Found existing installation: lxml 4.3.2
    Not uninstalling lxml at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'lxml'. No files were found to uninstall.
Successfully installed lxml-4.6.3
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 12, in <module>
    from ..erd import ErdCode, ErdCodeType
  File "/home/gehome-master/gehomesdk/erd/__init__.py", line 3, in <module>
    from .values import *
  File "/home/gehome-master/gehomesdk/erd/values/__init__.py", line 6, in <module>
    from .oven import *
  File "/home/gehome-master/gehomesdk/erd/values/oven/__init__.py", line 11, in <module>
    from .oven_cook_mode_mapping import OVEN_COOK_MODE_MAP
  File "/home/gehome-master/gehomesdk/erd/values/oven/oven_cook_mode_mapping.py", line 1, in <module>
    import bidict
ModuleNotFoundError: No module named 'bidict'
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# pip install bidict
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bidict
  Downloading https://files.pythonhosted.org/packages/67/d4/eaf9242722bf991e0955380dd6168020cb15a71cc0d3cc2373f4911b1f1d/bidict-0.21.2-py2.py3-none-any.whl
Installing collected packages: bidict
Successfully installed bidict-0.21.2
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 12, in <module>
    from ..erd import ErdCode, ErdCodeType
  File "/home/gehome-master/gehomesdk/erd/__init__.py", line 3, in <module>
    from .values import *
  File "/home/gehome-master/gehomesdk/erd/values/__init__.py", line 9, in <module>
    from .water_filter import *
  File "/home/gehome-master/gehomesdk/erd/values/water_filter/__init__.py", line 5, in <module>
    from .erd_waterfilter_life import ErdWaterFilterLifeRemaining
  File "/home/gehome-master/gehomesdk/erd/values/water_filter/erd_waterfilter_life.py", line 3, in <module>
    import humanize
ModuleNotFoundError: No module named 'humanize'
simbaja commented 3 years ago

if you do pip install gehomesdk, it should get all of these, I think we're almost there...

RobertusIT commented 3 years ago

if you do pip install gehomesdk, it should get all of these, I think we're almost there...

root@RASPBERRYPi3FLIRC:~# pip install gehomesdk
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting gehomesdk
  Downloading https://files.pythonhosted.org/packages/65/ab/edbfc38dfc8e4b61933b3a2e6e8eca2e8a4938f02e17119c709fd1e57e6d/gehomesdk-0.4.0-py3-none-any.whl (127kB)
    100% |████████████████████████████████| 133kB 953kB/s
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from gehomesdk) (2.21.0)
Requirement already satisfied: bidict in /usr/local/lib/python3.8/dist-packages (from gehomesdk) (0.21.2)
Collecting humanize (from gehomesdk)
  Downloading https://files.pythonhosted.org/packages/ef/0f/acefce93675412ddd1315785e086e22d42cc43506a41d77d310ad4e4c6bb/humanize-3.11.0-py3-none-any.whl (90kB)
    100% |████████████████████████████████| 92kB 1.7MB/s
Requirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from gehomesdk) (3.7.4.post0)
Collecting websockets (from gehomesdk)
  Downloading https://files.pythonhosted.org/packages/0d/bd/5262054455ab2067e51de331bfbc53a1dfa9071af7c424cf7c0793c4349a/websockets-9.1.tar.gz (76kB)
    100% |████████████████████████████████| 81kB 1.6MB/s
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from humanize->gehomesdk) (40.8.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gehomesdk) (1.6.3)
Requirement already satisfied: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp->gehomesdk) (3.0.4)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gehomesdk) (3.0.1)
Requirement already satisfied: typing-extensions>=3.6.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gehomesdk) (3.10.0.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gehomesdk) (5.1.0)
Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gehomesdk) (21.2.0)
Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp->gehomesdk) (2.6)
Building wheels for collected packages: websockets
  Running setup.py bdist_wheel for websockets ... done
  Stored in directory: /root/.cache/pip/wheels/e1/f7/3f/bb9bd14321f58f036e48804fb6bfe2cfd431c41d8306c801f4
Successfully built websockets
Installing collected packages: humanize, websockets, gehomesdk
Successfully installed gehomesdk-0.4.0 humanize-3.11.0 websockets-9.1
root@RASPBERRYPi3FLIRC:~# cd /home/gehome-master/examples/
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples#
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
Traceback (most recent call last):
  File "websocket_example.py", line 23, in <module>
    from gehomesdk import (
  File "/home/gehome-master/gehomesdk/__init__.py", line 6, in <module>
    from .clients import *
  File "/home/gehome-master/gehomesdk/clients/__init__.py", line 17, in <module>
    from .base_client import GeBaseClient
  File "/home/gehome-master/gehomesdk/clients/base_client.py", line 14, in <module>
    from ..ge_appliance import GeAppliance
  File "/home/gehome-master/gehomesdk/ge_appliance.py", line 7, in <module>
    from slixmpp import JID
ModuleNotFoundError: No module named 'slixmpp'
root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# pip install slixmpp
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting slixmpp
  Downloading https://www.piwheels.org/simple/slixmpp/slixmpp-1.7.1-py3-none-any                                                          .whl (468kB)
    100% |████████████████████████████████| 471kB 452kB/s
Collecting pyasn1 (from slixmpp)
  Downloading https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f                                                          506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77kB                                                          )
    100% |████████████████████████████████| 81kB 852kB/s
Collecting aiodns>=1.0 (from slixmpp)
  Downloading https://files.pythonhosted.org/packages/ab/72/991ee33a517df69c6cd6                                                          f3486cfe9b6329557cb55acaa8cefac33c2aa4d2/aiodns-3.0.0-py3-none-any.whl
Collecting pyasn1-modules (from slixmpp)
  Downloading https://files.pythonhosted.org/packages/95/de/214830a981892a3e286c                                                          3794f41ae67a4495df1108c3da8a9f62159b9a9d/pyasn1_modules-0.2.8-py2.py3-none-any.w                                                          hl (155kB)
    100% |████████████████████████████████| 163kB 1.1MB/s
Collecting pycares>=4.0.0 (from aiodns>=1.0->slixmpp)
  Downloading https://files.pythonhosted.org/packages/25/5a/ed8cc3340b7e83a5e572                                                          b5d27387a968a7e52b1e3c269442076ca902b7ba/pycares-4.0.0.tar.gz (819kB)
    100% |████████████████████████████████| 829kB 282kB/s
Collecting cffi>=1.5.0 (from pycares>=4.0.0->aiodns>=1.0->slixmpp)
  Downloading https://files.pythonhosted.org/packages/2e/92/87bb61538d7e60da8a7e                                                          c247dc048f7671afe17016cd0008b3b710012804/cffi-1.14.6.tar.gz (475kB)
    100% |████████████████████████████████| 481kB 474kB/s
Collecting pycparser (from cffi>=1.5.0->pycares>=4.0.0->aiodns>=1.0->slixmpp)
  Downloading https://files.pythonhosted.org/packages/ae/e7/d9c3a176ca4b02024deb                                                          f82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl (11                                                          2kB)
    100% |████████████████████████████████| 112kB 1.7MB/s
Building wheels for collected packages: pycares, cffi
  Running setup.py bdist_wheel for pycares ... done
  Stored in directory: /root/.cache/pip/wheels/e4/f0/65/3bb85d314c75f47b43707eee                                                          3651842076718e1b01ebd6f20d
  Running setup.py bdist_wheel for cffi ... done
  Stored in directory: /root/.cache/pip/wheels/01/f8/3e/9bde82a90cd06dfdc9017be6                                                          769b2543d5177f044d6f95f500
Successfully built pycares cffi
Installing collected packages: pyasn1, pycparser, cffi, pycares, aiodns, pyasn1-                                                          modules, slixmpp
Successfully installed aiodns-3.0.0 cffi-1.14.6 pyasn1-0.4.8 pyasn1-modules-0.2.                                                          8 pycares-4.0.0 pycparser-2.20 slixmpp-1.7.1

For now is stuck on there:

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example                                                          .py
2021-08-03 10:13:01,568 DEBUG    Using selector: EpollSelector
websocket_example.py:82: DeprecationWarning: The object should be created within                                                           an async function
  session = aiohttp.ClientSession()
2021-08-03 10:13:01,571 DEBUG    Getting OAuth2 token
2021-08-03 10:13:01,581 DEBUG    Client changed state: GeClientState.INITIALIZIN                                                          G to GeClientState.AUTHORIZING_OAUTH
2021-08-03 10:13:03,607 INFO     The application requires authentication and wil                                                          l attempt to grant consent automatically. Visit https://accounts.brillion.geappl                                                          iances.com/consumer/active/applications to deauthorize.
2021-08-03 10:13:04,995 DEBUG    Getting WS credentials
2021-08-03 10:13:04,997 DEBUG    Client changed state: GeClientState.AUTHORIZING                                                          _OAUTH to GeClientState.AUTHORIZING_CLIENT
2021-08-03 10:13:05,271 INFO     Starting GE Appliances client
2021-08-03 10:13:05,334 DEBUG    Client changed state: GeClientState.AUTHORIZING                                                          _CLIENT to GeClientState.CONNECTING
2021-08-03 10:13:05,517 DEBUG    client - state = CONNECTING
2021-08-03 10:13:05,668 DEBUG    client - event = connection_made(<asyncio.sslpr                                                          oto._SSLProtocolTransport object at 0x73247238>)
2021-08-03 10:13:05,672 DEBUG    client ! failing CONNECTING WebSocket connectio                                                          n with code 1006
2021-08-03 10:13:05,674 DEBUG    client x closing TCP connection
2021-08-03 10:13:05,741 DEBUG    client - event = eof_received()
2021-08-03 10:13:05,743 DEBUG    client - event = connection_lost(None)
2021-08-03 10:13:05,744 DEBUG    client - state = CLOSED
2021-08-03 10:13:05,745 DEBUG    client x code = 1006, reason = [no reason]
2021-08-03 10:13:05,747 WARNING  Unhandled exception on first connect attempt: m                                                          odule 'secrets' has no attribute 'token_bytes', disconnecting
2021-08-03 10:13:05,748 DEBUG    Waiting before reconnecting
2021-08-03 10:13:05,750 DEBUG    Client changed state: GeClientState.CONNECTING                                                           to GeClientState.DROPPED
2021-08-03 10:13:05,751 DEBUG    Client changed state: GeClientState.DROPPED to                                                           GeClientState.WAITING
2021-08-03 10:13:07,752 DEBUG    Refreshing authentication before reconnecting
2021-08-03 10:13:07,753 DEBUG    Refreshing OAuth2 token
2021-08-03 10:13:07,757 DEBUG    Client changed state: GeClientState.WAITING to GeClientState.AUTHORIZING_OAUTH
2021-08-03 10:13:08,153 DEBUG    Getting WS credentials
2021-08-03 10:13:08,158 DEBUG    Client changed state: GeClientState.AUTHORIZING_OAUTH to GeClientState.AUTHORIZING_CLIENT
2021-08-03 10:13:08,245 INFO     Disconnecting
2021-08-03 10:13:08,247 DEBUG    Client changed state: GeClientState.AUTHORIZING_CLIENT to GeClientState.DISCONNECTING
2021-08-03 10:13:08,249 DEBUG    Client changed state: GeClientState.DISCONNECTING to GeClientState.DISCONNECTED
2021-08-03 12:16:21,728 ERROR    Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x732c6a90>

I'm going on it https://accounts.brillion.geappliances.com/consumer/active/applications and used same username and passwd. And i can see this image

For now AC is off. Maybe need to be turn on ? I tried also with turn on AC, but same log

simbaja commented 3 years ago

OK, some others have run into at least one of the issues in your log, so let's take them one at a time. Please try the following:

  1. rename your secrets.py to secret.py
  2. in the websocket_example.py file, change the line to from examples.secret import USERNAME, PASSWORD
  3. re-run to see if it clears the error

After this, you'll need to download SmartHQ, and make sure your appliance appears in there. You may need to remove and re-add it if it is there but doesn't show information properly.

RobertusIT commented 3 years ago

OK, some others have run into at least one of the issues in your log, so let's take them one at a time. Please try the following:

  1. rename your secrets.py to secret.py
  2. in the websocket_example.py file, change the line to from examples.secret import USERNAME, PASSWORD
  3. re-run to see if it clears the error

After this, you'll need to download SmartHQ, and make sure your appliance appears in there. You may need to remove and re-add it if it is there but doesn't show information properly.

I did it and now script, and now i have a lot of logs, run already.

But i use Geappliances, not Smarthq, because seems that Smarthq is for not europe or italian market.

Anyway from logs i can see the version of my general electric wifi usb pen.

As you can see from thi screenshot - https://play.google.com/store/apps/details?id=com.ge.comfort&hl=it&gl=US Screenshot_20210803-164146

Screenshot_20210803-164154

Here, inside the app:

My AC, i have 2 AC General Electric, but for now i add only one, anyway are the same model, only one 9000BTU and another of 12000BTU Screenshot_20210803-164224

Here you can see the info and change some parameters about AC, anyway remote control is better because you can change also 3d airflow for example, i hope that is possible do that. Screenshot_20210803-164231

And here you can see the info about product and wifi usb pen Screenshot_20210803-164239

Here i paste log, but is running, so i don't understand when is stopped.

root@RASPBERRYPi3FLIRC:/home/gehome-master/examples# python3.8 websocket_example.py
2021-08-03 16:34:06,381 DEBUG    Using selector: EpollSelector
websocket_example.py:82: DeprecationWarning: The object should be created within an async function
  session = aiohttp.ClientSession()
2021-08-03 16:34:06,384 DEBUG    Getting OAuth2 token
2021-08-03 16:34:06,396 DEBUG    Client changed state: GeClientState.INITIALIZING to GeClientState.AUTHORIZING_OAUTH
2021-08-03 16:34:08,479 DEBUG    Getting WS credentials
2021-08-03 16:34:08,483 DEBUG    Client changed state: GeClientState.AUTHORIZING_OAUTH to GeClientState.AUTHORIZING_CLIENT
2021-08-03 16:34:08,772 INFO     Starting GE Appliances client
2021-08-03 16:34:08,880 DEBUG    Client changed state: GeClientState.AUTHORIZING_CLIENT to GeClientState.CONNECTING
2021-08-03 16:34:09,057 DEBUG    client - state = CONNECTING
2021-08-03 16:34:09,208 DEBUG    client - event = connection_made(<asyncio.sslproto._SSLProtocolTransport object at 0x75ee93b8>)
2021-08-03 16:34:09,210 DEBUG    client > GET /?access_token=ew1cpr0va6n0d1v6uzyvkfvutyv8wn74 HTTP/1.1
2021-08-03 16:34:09,211 DEBUG    client > Headers([('Host', 'ws-eu-west-1.brillion.geappliances.com'), ('Upgrade', 'websocket'), ('Connect                                                                                     ion', 'Upgrade'), ('Sec-WebSocket-Key', 'XdaMoCJJWs+PrJuL+mPzpA=='), ('Sec-WebSocket-Version', '13'), ('Sec-WebSocket-Extensions', 'permes                                                                                     sage-deflate; client_max_window_bits'), ('User-Agent', 'Python/3.8 websockets/9.1')])
2021-08-03 16:34:09,417 DEBUG    client - event = data_received(<212 bytes>)
2021-08-03 16:34:09,418 DEBUG    client < HTTP/1.1 101 Switching Protocols
2021-08-03 16:34:09,418 DEBUG    client < Headers([('Date', 'Tue, 03 Aug 2021 14:34:09 GMT'), ('Connection', 'upgrade'), ('upgrade', 'webs                                                                                     ocket'), ('sec-websocket-accept', 'Wvnx1q+x9yG27tHd4U/vNIOM9gI='), ('sec-websocket-extensions', 'permessage-deflate')])
2021-08-03 16:34:09,419 DEBUG    client - state = OPEN
2021-08-03 16:34:09,420 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#subscribe", "action": "subsc                                                                                     ribe", "resources": ["/appliance/*/erd/*"]}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:09,421 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance", "id": "List-appliances"}', rsv1=False, rsv2=False, rsv3=Fals                                                                                     e)
2021-08-03 16:34:09,423 DEBUG    Client changed state: GeClientState.CONNECTING to GeClientState.CONNECTED
2021-08-03 16:34:09,526 DEBUG    client - event = data_received(<49 bytes>)
2021-08-03 16:34:09,527 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#subscribe","success":true}',                                                                                      rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:09,619 DEBUG    client - event = data_received(<16 bytes>)
2021-08-03 16:34:09,620 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#connect","success":true}', rs                                                                                     v1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:09,652 DEBUG    client - event = data_received(<256 bytes>)
2021-08-03 16:34:09,653 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"List-appliances","                                                                                     request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance"},"success":true,"code":200,"body":{"kind":"applianc                                                                                     e#applianceList","userId":"8iphzd059z7spke","items":[{"applianceId":"D828C9404C09","type":"Split Air Conditioner","brand":"Unknown","jid":                                                                                     "d828c9404c09_8iphzd059z7spke","nickname":"CondizionatoreStudio","online":"ONLINE"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:09,657 DEBUG    D828C9404C09 marked available
2021-08-03 16:34:09,657 DEBUG    Adding appliance D828C9404C09
2021-08-03 16:34:09,658 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:34:09,659 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:34:09,660 DEBUG    Requesting features for client D828C9404C09
2021-08-03 16:34:09,661 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/feature", "id": "Request-features"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:34:09,663 DEBUG    Registering update callback for GeAppliance(D828C9404C09) (Unknown Type)
2021-08-03 16:34:09,871 DEBUG    client - event = data_received(<224 bytes>)
2021-08-03 16:34:09,872 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:09,875 DEBUG    Setting ErdCode.MODEL_NUMBER to
2021-08-03 16:34:09,876 DEBUG    Setting ErdCode.SERIAL_NUMBER to
2021-08-03 16:34:09,876 DEBUG    Setting ErdCode.TEMPERATURE_UNIT to ErdMeasurementUnits.METRIC
2021-08-03 16:34:09,877 DEBUG    Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.UNKNOWN
2021-08-03 16:34:09,879 DEBUG    Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.0.6.32
2021-08-03 16:34:09,880 DEBUG    Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0
2021-08-03 16:34:09,881 DEBUG    Setting ErdCode.ACM_UPDATING to False
2021-08-03 16:34:09,882 DEBUG    Setting 0x7003 to b'\x00O'
2021-08-03 16:34:09,883 DEBUG    Setting 0x7A00 to b'\x08'
2021-08-03 16:34:09,884 DEBUG    Setting 0x7A01 to b'\x00'
2021-08-03 16:34:09,885 DEBUG    Setting 0x7A02 to b'M'
2021-08-03 16:34:09,886 DEBUG    Setting 0x7A0F to b'\x01'
2021-08-03 16:34:09,887 DEBUG    Setting 0x7B00 to b'\x03'
2021-08-03 16:34:09,888 DEBUG    Setting 0x7B05 to b'\xff'
2021-08-03 16:34:09,889 DEBUG    Setting 0x7B06 to b'\xff\xff'
2021-08-03 16:34:09,891 DEBUG    Setting 0x7B07 to b'\x00'
2021-08-03 16:34:09,893 DEBUG    Got initial appliance type for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:34:09,894 DEBUG    Appliance state change detected in GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN). Updated keys: Er                                                                                     dCode.MODEL_NUMBER, ErdCode.SERIAL_NUMBER, ErdCode.TEMPERATURE_UNIT, ErdCode.APPLIANCE_TYPE, ErdCode.WIFI_MODULE_SW_VERSION, ErdCode.WIFI_                                                                                     MODULE_SW_VERSION_AVAILABLE, ErdCode.ACM_UPDATING, 0x7003, 0x7A00, 0x7A01, 0x7A02, 0x7A0F, 0x7B00, 0x7B05, 0x7B06, 0x7B07
2021-08-03 16:34:09,895 DEBUG    client - event = data_received(<41 bytes>)
2021-08-03 16:34:09,896 DEBUG    Appliance state change detected in GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:34:09,898 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"Request-features",                                                                                     "request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/feature"},"success":true,"code":200,"b                                                                                     ody":{"kind":"appliance#applianceFeature","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","features":[]}}', rsv1=False, rsv2=False                                                                                     , rsv3=False)
2021-08-03 16:34:09,899 DEBUG    Received features [] for D828C9404C09
2021-08-03 16:34:10,180 DEBUG    client - event = data_received(<50 bytes>)
2021-08-03 16:34:10,181 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"resource":"/appliance/*/erd/*","kind":"websock                                                                                     et#subscription","success":true,"change":"ADDED"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:29,426 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'y\x93nn', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:29,498 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:34:29,499 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'y\x93nn', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:29,500 DEBUG    client - received solicited pong: 79936e6e
2021-08-03 16:34:39,425 DEBUG    Sending keepalive ping
2021-08-03 16:34:39,426 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:39,515 DEBUG    client - event = data_received(<28 bytes>)
2021-08-03 16:34:39,516 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:49,504 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'i\xb8\x91F', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:34:49,575 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:34:49,575 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'i\xb8\x91F', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:34:49,576 DEBUG    client - received solicited pong: 69b89146
2021-08-03 16:35:09,448 DEBUG    Sending keepalive ping
2021-08-03 16:35:09,449 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:09,543 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:35:09,544 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:09,577 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xac\xe2\xa8\xf5', rsv1=False, rsv2=False, rsv3=                                                                                     False)
2021-08-03 16:35:09,648 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:35:09,649 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xac\xe2\xa8\xf5', rsv1=False, rsv2=False, rsv3                                                                                     =False)
2021-08-03 16:35:09,650 DEBUG    client - received solicited pong: ace2a8f5
2021-08-03 16:35:09,665 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:35:09,666 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:35:09,667 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:35:09,888 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:35:09,889 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:29,672 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xec\x9c\xf4.', rsv1=False, rsv2=False, rsv3=Fal                                                                                     se)
2021-08-03 16:35:29,743 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:35:29,744 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xec\x9c\xf4.', rsv1=False, rsv2=False, rsv3=Fa                                                                                     lse)
2021-08-03 16:35:29,745 DEBUG    client - received solicited pong: ec9cf42e
2021-08-03 16:35:39,461 DEBUG    Sending keepalive ping
2021-08-03 16:35:39,461 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:39,546 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:35:39,547 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:49,757 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xb4vz\xfa', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:35:49,828 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:35:49,829 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xb4vz\xfa', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:35:49,830 DEBUG    client - received solicited pong: b4767afa
2021-08-03 16:36:09,483 DEBUG    Sending keepalive ping
2021-08-03 16:36:09,484 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:09,571 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:36:09,572 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:09,669 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:36:09,670 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:36:09,671 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:36:09,832 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'H^\xf6\xc5', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:09,849 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:36:09,850 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:09,904 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:36:09,905 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'H^\xf6\xc5', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:36:09,905 DEBUG    client - received solicited pong: 485ef6c5
2021-08-03 16:36:29,927 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'ML\x86\xd6', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:29,999 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:36:30,001 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'ML\x86\xd6', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:36:30,001 DEBUG    client - received solicited pong: 4d4c86d6
2021-08-03 16:36:39,496 DEBUG    Sending keepalive ping
2021-08-03 16:36:39,497 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:39,583 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:36:39,584 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:50,004 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xff{\xa6]', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:36:50,075 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:36:50,076 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xff{\xa6]', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:36:50,077 DEBUG    client - received solicited pong: ff7ba65d
2021-08-03 16:37:09,514 DEBUG    Sending keepalive ping
2021-08-03 16:37:09,515 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:37:09,610 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:37:09,610 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:37:09,673 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:37:09,673 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:37:09,674 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:37:09,898 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:37:09,900 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:37:10,079 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x83\xa5n\xfc', rsv1=False, rsv2=False, rsv3=Fal                                                                                     se)
2021-08-03 16:37:10,151 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:37:10,152 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x83\xa5n\xfc', rsv1=False, rsv2=False, rsv3=Fa                                                                                     lse)
2021-08-03 16:37:10,153 DEBUG    client - received solicited pong: 83a56efc
2021-08-03 16:37:30,175 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xca\xae\xc7\xdf', rsv1=False, rsv2=False, rsv3=                                                                                     False)
2021-08-03 16:37:30,246 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:37:30,247 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xca\xae\xc7\xdf', rsv1=False, rsv2=False, rsv3                                                                                     =False)
2021-08-03 16:37:30,248 DEBUG    client - received solicited pong: caaec7df
2021-08-03 16:37:39,526 DEBUG    Sending keepalive ping
2021-08-03 16:37:39,527 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:37:39,617 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:37:39,618 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:37:50,261 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xb5\xbe\x0f3', rsv1=False, rsv2=False, rsv3=Fal                                                                                     se)
2021-08-03 16:37:50,332 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:37:50,332 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xb5\xbe\x0f3', rsv1=False, rsv2=False, rsv3=Fa                                                                                     lse)
2021-08-03 16:37:50,333 DEBUG    client - received solicited pong: b5be0f33
2021-08-03 16:38:09,548 DEBUG    Sending keepalive ping
2021-08-03 16:38:09,549 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:09,637 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:38:09,638 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:09,676 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:38:09,678 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:38:09,679 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:38:09,874 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:38:09,876 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:10,335 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x81}Ky', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:10,407 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:38:10,408 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x81}Ky', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:10,410 DEBUG    client - received solicited pong: 817d4b79
2021-08-03 16:38:30,432 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x0cnqt', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:30,504 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:38:30,505 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x0cnqt', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:30,505 DEBUG    client - received solicited pong: 0c6e7174
2021-08-03 16:38:39,560 DEBUG    Sending keepalive ping
2021-08-03 16:38:39,561 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:39,649 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:38:39,650 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:38:50,519 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'"\x94\xe8\xe3', rsv1=False, rsv2=False, rsv3=Fal                                                                                     se)
2021-08-03 16:38:50,591 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:38:50,592 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'"\x94\xe8\xe3', rsv1=False, rsv2=False, rsv3=Fa                                                                                     lse)
2021-08-03 16:38:50,592 DEBUG    client - received solicited pong: 2294e8e3
2021-08-03 16:39:09,582 DEBUG    Sending keepalive ping
2021-08-03 16:39:09,583 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:09,672 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:39:09,673 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:09,683 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:39:09,684 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:39:09,685 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host                                                                                     ": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False,                                                                                      rsv2=False, rsv3=False)
2021-08-03 16:39:09,928 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:39:09,929 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allEr                                                                                     d","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"bo                                                                                     dy":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000                                                                                     000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000                                                                                     000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{                                                                                     "erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd                                                                                     ":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0                                                                                     x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","                                                                                     value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01                                                                                     ","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"                                                                                     2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-                                                                                     26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:10,596 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'!\xc5\x03i', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:10,667 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:39:10,668 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'!\xc5\x03i', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:39:10,669 DEBUG    client - received solicited pong: 21c50369
2021-08-03 16:39:30,682 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'k\xb7\xc5D', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:30,754 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:39:30,755 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'k\xb7\xc5D', rsv1=False, rsv2=False, rsv3=False                                                                                     )
2021-08-03 16:39:30,756 DEBUG    client - received solicited pong: 6bb7c544
2021-08-03 16:39:39,595 DEBUG    Sending keepalive ping
2021-08-03 16:39:39,595 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping                                                                                     ", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:39,681 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:39:39,683 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}'                                                                                     , rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:39:50,770 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x9c\x81\xe4\x06', rsv1=False, rsv2=False, rsv3=                                                                                     False)
2021-08-03 16:39:50,841 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:39:50,842 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x9c\x81\xe4\x06', rsv1=False, rsv2=False, rsv3                                                                                     =False)
2021-08-03 16:39:50,843 DEBUG    client - received solicited pong: 9c81e406
2021-08-03 16:40:09,616 DEBUG    Sending keepalive ping
2021-08-03 16:40:09,617 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:09,688 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:40:09,688 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:40:09,689 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:09,708 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:40:09,709 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:09,899 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:40:09,901 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:10,846 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xbf\xb2D\x17', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:10,918 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:40:10,919 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xbf\xb2D\x17', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:10,919 DEBUG    client - received solicited pong: bfb24417
2021-08-03 16:40:30,941 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xda\x96\xaf\xaa', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:31,012 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:40:31,013 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xda\x96\xaf\xaa', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:31,014 DEBUG    client - received solicited pong: da96afaa
2021-08-03 16:40:39,629 DEBUG    Sending keepalive ping
2021-08-03 16:40:39,630 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:39,716 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:40:39,717 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:51,026 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x8a0\xb8\xa2', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:51,099 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:40:51,100 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x8a0\xb8\xa2', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:40:51,100 DEBUG    client - received solicited pong: 8a30b8a2
2021-08-03 16:41:09,650 DEBUG    Sending keepalive ping
2021-08-03 16:41:09,651 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:09,692 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:41:09,693 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:41:09,694 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:09,743 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:41:09,744 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:09,948 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:41:09,949 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:11,104 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x86I\xa22', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:11,175 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:41:11,176 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x86I\xa22', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:11,176 DEBUG    client - received solicited pong: 8649a232
2021-08-03 16:41:31,198 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'?i\x02\xb8', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:31,270 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:41:31,271 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'?i\x02\xb8', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:31,272 DEBUG    client - received solicited pong: 3f6902b8
2021-08-03 16:41:39,661 DEBUG    Sending keepalive ping
2021-08-03 16:41:39,662 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:39,748 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:41:39,749 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:51,286 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xd1\xe5\x1fe', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:51,357 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:41:51,358 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xd1\xe5\x1fe', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:41:51,359 DEBUG    client - received solicited pong: d1e51f65
2021-08-03 16:42:09,684 DEBUG    Sending keepalive ping
2021-08-03 16:42:09,685 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:09,697 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:42:09,698 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:42:09,699 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:09,959 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:42:09,960 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:10,014 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:42:10,015 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:11,362 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xce\xca(P', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:11,434 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:42:11,435 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xce\xca(P', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:11,436 DEBUG    client - received solicited pong: ceca2850
2021-08-03 16:42:31,458 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\\\xc1\x84_', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:31,529 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:42:31,530 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\\\xc1\x84_', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:31,530 DEBUG    client - received solicited pong: 5cc1845f
2021-08-03 16:42:39,696 DEBUG    Sending keepalive ping
2021-08-03 16:42:39,697 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:39,787 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:42:39,788 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:51,538 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xe7H\xb1\x9e', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:51,611 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:42:51,612 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xe7H\xb1\x9e', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:42:51,612 DEBUG    client - received solicited pong: e748b19e
2021-08-03 16:43:09,714 DEBUG    Sending keepalive ping
2021-08-03 16:43:09,715 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:09,716 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:43:09,716 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:43:09,717 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:09,800 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:43:09,802 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:10,033 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:43:10,035 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:11,615 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x9d\xfbz7', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:11,687 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:43:11,688 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x9d\xfbz7', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:11,689 DEBUG    client - received solicited pong: 9dfb7a37
2021-08-03 16:43:31,711 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'T\x0e=\n', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:31,783 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:43:31,784 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'T\x0e=\n', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:31,785 DEBUG    client - received solicited pong: 540e3d0a
2021-08-03 16:43:39,726 DEBUG    Sending keepalive ping
2021-08-03 16:43:39,727 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:39,822 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:43:39,823 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:51,799 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xcb\xdfp"', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:51,871 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:43:51,872 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xcb\xdfp"', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:43:51,872 DEBUG    client - received solicited pong: cbdf7022
2021-08-03 16:44:09,443 DEBUG    Refreshing appliance list/state
2021-08-03 16:44:09,444 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance", "id": "List-appliances"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:09,629 DEBUG    client - event = data_received(<11 bytes>)
2021-08-03 16:44:09,630 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"List-appliances","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance"},"success":true,"code":200,"body":{"kind":"appliance#applianceList","userId":"8iphzd059z7spke","items":[{"applianceId":"D828C9404C09","type":"Split Air Conditioner","brand":"Unknown","jid":"d828c9404c09_8iphzd059z7spke","nickname":"CondizionatoreStudio","online":"ONLINE"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:09,720 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:44:09,720 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:44:09,721 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:09,729 DEBUG    Sending keepalive ping
2021-08-03 16:44:09,730 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:09,816 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:44:09,817 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:09,890 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:44:09,891 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:11,876 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xd7\x1e\xb0\x8a', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:11,948 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:44:11,949 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xd7\x1e\xb0\x8a', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:11,949 DEBUG    client - received solicited pong: d71eb08a
2021-08-03 16:44:31,971 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'_*2j', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:32,043 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:44:32,045 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'_*2j', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:32,045 DEBUG    client - received solicited pong: 5f2a326a
2021-08-03 16:44:39,735 DEBUG    Sending keepalive ping
2021-08-03 16:44:39,736 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:39,826 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:44:39,827 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:52,059 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xae,\xf5|', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:52,131 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:44:52,132 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xae,\xf5|', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:44:52,133 DEBUG    client - received solicited pong: ae2cf57c
2021-08-03 16:45:09,741 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:45:09,742 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:45:09,742 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:09,744 DEBUG    Sending keepalive ping
2021-08-03 16:45:09,745 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:09,830 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:45:09,832 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:09,971 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:45:09,973 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:12,138 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x05\xe1H\x1c', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:12,209 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:45:12,210 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x05\xe1H\x1c', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:12,211 DEBUG    client - received solicited pong: 05e1481c
2021-08-03 16:45:32,233 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xb8n|\xe3', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:32,304 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:45:32,305 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xb8n|\xe3', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:32,305 DEBUG    client - received solicited pong: b86e7ce3
2021-08-03 16:45:39,755 DEBUG    Sending keepalive ping
2021-08-03 16:45:39,755 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:39,839 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:45:39,840 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:52,320 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'"B\x81\xf3', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:52,391 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:45:52,392 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'"B\x81\xf3', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:45:52,392 DEBUG    client - received solicited pong: 224281f3
2021-08-03 16:46:09,762 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:46:09,763 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:46:09,764 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:09,766 DEBUG    Sending keepalive ping
2021-08-03 16:46:09,767 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:09,857 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:46:09,858 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:09,974 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:46:09,975 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:12,396 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xbf\xa6\xca\x8a', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:12,466 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:46:12,467 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xbf\xa6\xca\x8a', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:12,468 DEBUG    client - received solicited pong: bfa6ca8a
2021-08-03 16:46:32,490 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'n\xd1\n6', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:32,560 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:46:32,561 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'n\xd1\n6', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:32,561 DEBUG    client - received solicited pong: 6ed10a36
2021-08-03 16:46:39,776 DEBUG    Sending keepalive ping
2021-08-03 16:46:39,777 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:39,863 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:46:39,864 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:52,574 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\t\x90\x98\xb4', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:52,644 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:46:52,644 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\t\x90\x98\xb4', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:46:52,645 DEBUG    client - received solicited pong: 099098b4
2021-08-03 16:47:09,785 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:47:09,785 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:47:09,786 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:09,788 DEBUG    Sending keepalive ping
2021-08-03 16:47:09,788 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:09,873 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:47:09,874 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:09,955 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:47:09,956 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:12,650 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x9bf\x1dO', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:12,719 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:47:12,720 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x9bf\x1dO', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:12,720 DEBUG    client - received solicited pong: 9b661d4f
2021-08-03 16:47:32,742 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\x98\x88V"', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:32,813 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:47:32,814 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\x98\x88V"', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:32,815 DEBUG    client - received solicited pong: 98885622
2021-08-03 16:47:39,798 DEBUG    Sending keepalive ping
2021-08-03 16:47:39,798 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:39,885 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:47:39,886 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:52,824 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'rSu6', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:52,895 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:47:52,896 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'rSu6', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:47:52,897 DEBUG    client - received solicited pong: 72537536
2021-08-03 16:48:09,806 DEBUG    Requesting update for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN)
2021-08-03 16:48:09,806 DEBUG    Requesting update for client D828C9404C09
2021-08-03 16:48:09,806 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#api", "action": "api", "host": "api.brillion.geappliances.com", "method": "GET", "path": "/v1/appliance/D828C9404C09/erd", "id": "D828C9404C09-allErd"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:09,807 DEBUG    Sending keepalive ping
2021-08-03 16:48:09,808 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:09,895 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:48:09,895 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:09,991 DEBUG    client - event = data_received(<21 bytes>)
2021-08-03 16:48:09,992 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#api","id":"D828C9404C09-allErd","request":{"host":"api.brillion.geappliances.com","method":"GET","path":"/v1/appliance/D828C9404C09/erd"},"success":true,"code":200,"body":{"kind":"appliance#erdList","userId":"8iphzd059z7spke","applianceId":"D828C9404C09","items":[{"erd":"0x0001","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0002","value":"0000000000000000000000000000000000000000000000000000000000000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0007","value":"01","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0008","value":"0E","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0100","value":"00000620","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0101","value":"00000000","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x0102","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7003","value":"004F","time":"2021-08-02T19:37:43.529Z"},{"erd":"0x7A00","value":"08","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A01","value":"00","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7A02","value":"4D","time":"2021-08-03T10:40:27.502Z"},{"erd":"0x7A0F","value":"01","time":"2021-08-03T08:40:02.572Z"},{"erd":"0x7B00","value":"03","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B05","value":"FF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B06","value":"FFFF","time":"2021-07-26T17:58:47.772Z"},{"erd":"0x7B07","value":"00","time":"2021-07-26T17:58:47.772Z"}]}}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:12,902 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xa2h\xa1o', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:12,972 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:48:12,973 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xa2h\xa1o', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:12,974 DEBUG    client - received solicited pong: a268a16f
2021-08-03 16:48:32,996 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'It\xfa\x03', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:33,066 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:48:33,068 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'It\xfa\x03', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:33,068 DEBUG    client - received solicited pong: 4974fa03
2021-08-03 16:48:39,817 DEBUG    Sending keepalive ping
2021-08-03 16:48:39,817 DEBUG    client > Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:39,899 DEBUG    client - event = data_received(<7 bytes>)
2021-08-03 16:48:39,901 DEBUG    client < Frame(fin=True, opcode=<Opcode.TEXT: 1>, data=b'{"kind":"websocket#pong","id":"keepalive-ping"}', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:53,084 DEBUG    client > Frame(fin=True, opcode=<Opcode.PING: 9>, data=b'\xeaQ\xa5\xb2', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:53,153 DEBUG    client - event = data_received(<6 bytes>)
2021-08-03 16:48:53,154 DEBUG    client < Frame(fin=True, opcode=<Opcode.PONG: 10>, data=b'\xeaQ\xa5\xb2', rsv1=False, rsv2=False, rsv3=False)
2021-08-03 16:48:53,155 DEBUG    client - received solicited pong: ea51a5b2
simbaja commented 3 years ago

Can you attach the logs that you got when you ran the example?

RobertusIT commented 3 years ago

Can you attach the logs that you got when you ran the example?

Yes i edited the previous message

RobertusIT commented 3 years ago

https://accounts.brillion.geappliances.com/consumer/active/applications

On this i can see this now: image

It say:

My application:

SmartHQ - that i didn't install because i can use only comfort - ge appliances

simbaja commented 3 years ago

Ok, you can kill the example, that's all that I'll need to start getting this into the sdk.
Starting with the line D828C9404C09 marked available and ending with Got initial appliance type for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN) is the piece of interest for getting this setup.

I do see an issue in that the model/serial is not present on your device. I'm not sure why that would be, I will look into the what I can use as a substitute since the serial is what we use in HA for a unique identifier.

RobertusIT commented 3 years ago

Ok, you can kill the example, that's all that I'll need to start getting this into the sdk. Starting with the line D828C9404C09 marked available and ending with Got initial appliance type for GeAppliance(D828C9404C09) (ErdApplianceType.UNKNOWN) is the piece of interest for getting this setup.

I do see an issue in that the model/serial is not present on your device. I'm not sure why that would be, I will look into the what I can use as a substitute since the serial is what we use in HA for a unique identifier.

my model is https://community.home-assistant.io/t/support-for-ge-appliances-smarthq/283815/14?u=robertusit

but i guess that can't help you

I can try something to change something in playstore and use smarthq ?

simbaja commented 3 years ago

My application:

SmartHQ - that i didn't install because i can use only comfort - ge appliances

Well, I guess that confirms some new logic I added to help another user worked... the code auto-authorized SmartHQ on your behalf.

Let's see what we can do to make this work without you going into SmartHQ. If we need to, we can always try sideloading the app from another source if it's not appearing on Google Play.

simbaja commented 3 years ago

Can you attach the logs that you got when you ran the example?

Yes i edited the previous message

Can you post a text file, the copy/pasted version has some odd line breaks that make it a little hard to read. If not, that's fine, I can work with what you posted.

RobertusIT commented 3 years ago

Can you attach the logs that you got when you ran the example?

Yes i edited the previous message

Can you post a text file, the copy/pasted version has some odd line breaks that make it a little hard to read. If not, that's fine, I can work with what you posted.

You see a log a little malformed, because i used putty in a window that i expansed, so you can see some spaces between rows.

If needed i can re-launch command and put putty full size

simbaja commented 3 years ago

I'll work with what you provided... let me look into things and figure it out.