Code Monkey home page Code Monkey logo

homematicip-rest-api's People

Contributors

codenightwriter avatar coregreenberet avatar davidhoffmann avatar dependabot[bot] avatar dickesw avatar gar00u avatar gtawelt avatar hahn-th avatar jensenb avatar k0n24d avatar markhaakman avatar markusduffek avatar matrixcrawler avatar mayrd avatar medlocus avatar palatincoder avatar requires avatar sander76 avatar schiegg avatar scop avatar seuffert avatar sschiffer avatar steckenpferd avatar sukramj avatar tabsl avatar tacker66 avatar trolipotlo avatar uberbruns avatar worm-ee avatar wweich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

homematicip-rest-api's Issues

Vote: Drop Python 2.7 support?

Hello,

I'm thinking of dropping the support for python 2.7 and just use 3.X in the future. I've started the project with 2.7, because of some online surveys most people are still using 2.7. 3.X on the other hand has some nice features on which the project could really benefit from and implementing everything twice (e.g. for asyncio in 3.X) or check the compatibility on both python versions is really frustrating.

What do you guys think?

'Home' object has no attribute 'init'

Hi,

it feels like this is the absolute noob question; and indeed it is my first contact to python. Please excuse me, in case it is very dumb :-).

I tried to get the scripts running on a PI3 running recent openhabian.

sudo python3 generate_auth_token.py Please enter the accesspoint id (SGTIN): 3014-F711-A000-03D7-xxxx-xxxx Please enter the PIN (leave Blank if there is none): Please enter the client/devicename (leave blank to use default): Traceback (most recent call last): File "generate_auth_token.py", line 20, in <module> home.init(access_point) AttributeError: 'Home' object has no attribute 'init'

Export and chmods where tipps i googled...

I feel like i have overseen something fundamental here - can you please give me a hint?

Best
Michael

getting fiddler to work

Trying to get fiddler to work, so I can help with this repo, but can't get fiddler to work. It gets stuck at trying to "login"... Any idea how to solve this ?

image

json loading of websocket message throws an error.

In py3:

An incoming websocket message is being converted to json in __ws_on_message in home.py.
This throws an error as incoming is bytes. not str.

error from callback <bound method Home.__ws_on_message of id(6b3ac3aa-be94-42d4-8af8-aa800070e0cf) id(6b3ac3aa-be94-42d4-8af8-aa800070e0cf)>: the JSON object must be str, not 'bytes'
  File "C:\virtualenvs\homematicip\lib\site-packages\websocket\_app.py", line 269, in _callback
    callback(self, *args)
  File "C:\virtualenvs\homematicip\lib\site-packages\homematicip\home.py", line 348, in __ws_on_message
    js = json.loads(message)
  File "C:\Users\steun\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
error from callback <bound method Home.__ws_on_message of id(6b3ac3aa-be94-42d4-8af8-aa800070e0cf) id(6b3ac3aa-be94-42d4-8af8-aa800070e0cf)>: the JSON object must be str, not 'bytes'
  File "C:\virtualenvs\homematicip\lib\site-packages\websocket\_app.py", line 269, in _callback
    callback(self, *args)
  File "C:\virtualenvs\homematicip\lib\site-packages\homematicip\home.py", line 348, in __ws_on_message
    js = json.loads(message)
  File "C:\Users\steun\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))

Add class for ROOM_CONTROL_DEVICE

I've added this room control device.

Afterwards I get the error

There is no class for ROOM_CONTROL_DEVICE yet

Can you implement this device?

Thank you in advance!

getting fiddler to work... almost there..

I am making progress on my fiddler setup, but now I get stuck when trying to create a websocket connection..

I get a 504 error when trying to connect to https://hmip1-1.homematic.com:8888. The fiddler log reports

14:04:59:1864 Fiddler.Network.ProtocolViolation - [#13] Incorrectly formed Request-Line. abs_path was empty (e.g. missing /). RFC2616 Section 5.1.2

meaning there is no url provided. Does anyone have an idea how to bypass this ?

Home-Assistant support

Hi,

I started to add support for HomematicIP to HomeAssistant based on your library.
home-assistant/core#12761
I plan to add support for a few more devices which I own in the next days.
Are you going to release a new version of all the changes and new devices you have added soon?

Ciao Mattias

Error with new API-Version 8

After generating a new auth token with VERSION 8 and calling list_devices.py I get the following error:
{
"errorCode" : "CLIENT_VERSION_NOT_SUPPORTED"
}

Has anyone run this script successfully with the new Version?

asyncio implementation..

I am wondering whether you have considered implementing an asyncio version, especially implementing the aiohttp request and websocket component ?

I did a fork and started doing it myself, just to realise this means practically rewriting the whole package.
But I'd still like to put effort in achieving this. Do you have any ideas or plans for a more integrated approach?
Again, I'd love to help.

Sander.

Connection error with newest Version

When using the newest API Version, I get an error on establishing the connection with error 403.

My host system is MacOS Version 10.13.

I recently installed python 3, Version 3.6.3

The required packages are installed in following Versions:
Name: requests, Version: 2.18.4
Name: websocket-client, Version: 0.44.0
Name: future, Version: 0.16.0

My config-file is the same I successfully used with the Python2 Version from 2 days ago. My Pi still runs the old Version (without Python3 changes and connection class) and works like a charm.

With activated debug I see the following Console output:
2017-11-09 09:52:53,473 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): hmip1-1.homematic.com
2017-11-09 09:52:53,606 - urllib3.connectionpool - DEBUG - https://hmip1-1.homematic.com:6969 "POST /hmip/home/getCurrentState HTTP/1.1" 403 43
2017-11-09 09:52:53,610 - homematicip.connection - DEBUG - _restcall result: Errorcode=403 content({'errorCode': 'INVALID_AUTHORIZATION'})
2017-11-09 09:52:53,610 - homematicip.home - ERROR - Could not get the current configuration. Error: INVALID_AUTHORIZATION

Do you have an idea what is going wrong?

invalid authorization

My first throw at this api is trying to get the homematicip-cli.py running.
I generate id and token. Put it in the config.py like so:

ACCESS_POINT = 'f02ae3a8-e9ab'  #with the dashes)
AUTH_TOKEN = '6BB8F04728D79' #long one without dashes

When I run the cli:
homematicip-cli.py --list-devices it returns with an error:

2017-06-27 13:48:51,973 - homematicip.home - ERROR - Could not get the current configuration. Error: INVALID_AUTHORIZATION

It seems to be happening with the method on line 121 home.get_current_state():
Can anyone confirm whether this occurring to him too ? Or am I doing something wrong.
BTW. My homematicip app reports 'homematicip-python' has been added as a device. So something has gone correct too !

implement setZonesDeviceAssignment

Path: home/security/setZonesDeviceAssignment
Post:

{
	"zonesDeviceAssignment": {
		"INTERNAL": [ <DEVICEID>, <DEVICEID>, ... ],
		"EXTERNAL":  [ <DEVICEID>, <DEVICEID>, ... ]
	}
}

Result:
None on success

Connection error

I cannot connect anymore. Possibly the api has changed ?

Sander.

Unicode error with python3

Hi,

if I use python3 I got this error:

python3 dump_devicevalues.py 
Traceback (most recent call last):
  File "dump_devicevalues.py", line 59, in <module>
    write_wallmountedthermostatpro(d)
  File "dump_devicevalues.py", line 48, in write_wallmountedthermostatpro
    "{};{};{}%;{}°C\n".format(device.id, unicode(device.lastStatusUpdate), d.humidity, d.actualTemperature))
NameError: name 'unicode' is not defined

https://stackoverflow.com/questions/6812031/how-to-make-unicode-string-with-python3

Best regards,
David

control the heating element temperature ?

Hi short questions is it possible to control the heating element temperature ?

My Homeatic IP Device
Homematic IP Heizkörperthermostat HMIP-eTRV/2 140280

tried
python3 homematicip_cli.py --device ID --set-display setpoint 20

but didnt worked, is it even possible ?

dump_devicevalues.py

Hi,

in line 20 I got an error because in my version I must change from "d.open" to "d.windowState".

Best regards,
David

error when running generate_auth_token.py

Hi i cant run the python script get the following error, could somebody help:

before i did: $ sudo pip install homematicip

python ./generate_auth_token.py

Traceback (most recent call last):
File "./generate_auth_token.py", line 2, in
import homematicip.auth
File "/home/pi/homematicip-rest-api/homematicip/auth.py", line 14
def init(self,home:Home):
^
SyntaxError: invalid syntax

thanks in advanced

can not run: pip install homematicip

Hello,
running debian 9, python 3.5.3 , python-pip 9.0.1-2, but when running:
pip install homematicip
I do get get:
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in
from pip import main
ImportError: No module named 'pip'

Any hint is welcome.

regards
kuzco1

Testcases

Read your request and I thought to make an issue out of it. Good place to discuss this I guess.

Move config file to json

To move the cli tool inside the python package you should be able to refer to a config file located somewhere else on your computer.
It would make sense to:

  • make config file a json file
  • refer to the config file as a required argument when starting the cli tool

Events broken

Hi, somehow device updates have been broken between the last release and the current dev.
Mainly in home.py the following fix has broken my updates in home-assistant:

    def _get_devices(self, json_state):
+        self.devices = [].    <<<<<
        for id_, raw in json_state["devices"].items():

I use self._device.on_update(self._device_changed) but I don't have a dedicated home.get_current_state() in the called _device_changed function.

Bug or feature?

implement createExtendedLinkedSwitchingGroup & depending functions

Path: group/switching/linked/createExtendedLinkedSwitchingGroup
Post: { "label" : <LABEL> }
Result:

{
  "assignableSensorChannels" : [ ],
  "assignableActuatorChannels" : [ {
    "deviceId" : "<DEVICEID>",
    "channelIndex" : 1
  } ],
  "unassignableSensorChannels" : [ ],
  "unassignableActuatorChannels" : [ ],
  "sensorGroupLimit" : 0,
  "actuatorGroupLimit" : 10,
  "groupId" : "<THE NEW GROUP ID>"
}

Path: group/switching/linked/setGroupActuatorChannels
Post:

{ "groupId" : <groupId>
, "channels" : [ {
    "deviceId" : "<DEVICEID>",
    "channelIndex" : 1
  } ]
}

Result:

{
  "assignableSensorChannels" : [ ],
  "assignableActuatorChannels" : [ {
    "deviceId" : "<DEVICEID>",
    "channelIndex" : 1
  } ],
  "unassignableSensorChannels" : [ ],
  "unassignableActuatorChannels" : [ ],
  "sensorGroupLimit" : 0,
  "actuatorGroupLimit" : 10,
}

Path: group/switching/linked/setGroupSensorChannels
Post:

{ "groupId" : <groupId>
, "channels" : [ {
    "deviceId" : "<DEVICEID>",
    "channelIndex" : 1
  } ]
}

Result:

{
  "assignableSensorChannels" : [ ],
  "assignableActuatorChannels" : [ {
    "deviceId" : "<DEVICEID>",
    "channelIndex" : 1
  } ],
  "unassignableSensorChannels" : [ ],
  "unassignableActuatorChannels" : [ ],
  "sensorGroupLimit" : 0,
  "actuatorGroupLimit" : 10,
}

Exception because of the logging handler

python homematicip_cli.py 
Traceback (most recent call last):
  File "homematicip_cli.py", line 18, in <module>
    logger = create_logger();
  File "homematicip_cli.py", line 13, in create_logger
    handler = logging.handlers.TimedRotatingFileHandler(config.LOGGING_FILENAME, when='midnight', backupCount=5) if config.LOGGING_FILENAME else logging.StreamHandler()
AttributeError: 'module' object has no attribute 'handlers'

Auth.isRequestAcknowledged receives "INVALID_REQUEST"

Hi,

generate_auth_token.py did not work for me. It just repeated: "Please press the blue button on the access point" even though I pressed the button. So I added some print statements to isRequestAcknowledged.

This is what is send

{'deviceId': '###MY_UUID###'}

and this is what I receive:

{
  "errorCode" : "INVALID_REQUEST"
}

Is there anything I can do from here?

Missing error message

Hi,

I forgot that I configured a pin in our AP and I got no error message. I got only the loop with the message "press the blue button". It would be very helpful if the error messages are on the screen.

Regards,
David

can't generat auth token

Hi!
Can someone help me in this point ?

I installed clean hassabian with home assistant 0.69.1 and upgraded and updated today homematicip as well but all same.

pi@hassbian:~/.local/bin $ python3 hmip_generate_auth_token.py

Please enter the accesspoint id (SGTIN): 3014-f711-a000-03d5-699f-xxxx
Traceback (most recent call last):
  File "hmip_generate_auth_token.py", line 70, in <module>
    main()
  File "hmip_generate_auth_token.py", line 20, in main
    home=Home()
  File "/home/pi/.local/lib/python3.5/site-packages/homematicip/home.py", line 127, in __init__
    connection = Connection()
  File "/home/pi/.local/lib/python3.5/site-packages/homematicip/base/base_connection.py", line 44, in __init__
    "language": locale.getdefaultlocale()[0],
  File "/usr/lib/python3.5/locale.py", line 558, in getdefaultlocale
    return _parse_localename(localename)
  File "/usr/lib/python3.5/locale.py", line 486, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

actually whatever I put in SGTIN id - (in xxxx-xxxx-xxxx-xxxx-xxxx-xxxx format) the answer is alway the same.

BrandSwitchMeasuring

Hi,

can you please have a look on the BrandSwitchMeasuring, seems it is implemented but I get:
There is no class for BRAND_SWITCH_MEASURING yet

Thanks Mattias

async in the import path

Hi @sander76 ,

The word async in the import path e.g. from homematicip.async.auth import AsyncAuth seems to work fine if import is global at the begin of a file. But its not working if the import is in a function!

hmip_cli.py --anonymize

There should be an optional parameter for --dump-configuration to anonymize the data.
This will provide a secure way to publish the config for contributors for implementing new devices

What is RSSI ?

I saw this passing by in a pull request. I also see it as part of the json payload.
What does it mean ?

catching individual button presses

I have a HMIP-WRC2 device. I am trying to catch individual key presses of this device, but I am only getting a "DEVICE CHANGED" event which does not say which of two buttons are actually pressed.

Anyone any idea how to catch individual key presses of this device (did the same with the 8 button remote control without succes).

Websocket: json.loads - the JSON object must be str, not 'bytes'

json.loads doesn't support bytes before python 3.6.

2018-05-07 17:25:51,098 - websocket - ERROR - error from callback <bound method Home._ws_on_message of <homematicip.home.Home object at 0xb72a39ec>>: the JSON object must be str, not 'bytes'
File "/usr/local/lib/python3.5/dist-packages/websocket/_app.py", line 315, in _callback
callback(self, *args)
File "/usr/local/lib/python3.5/dist-packages/homematicip/home.py", line 466, in _ws_on_message
js = json.loads(message)
File "/usr/lib/python3.5/json/init.py", line 312, in loads
s.class.name))

Unable to getAuthToken

Hi,

I've tried to get a AuthToken for my homematicip but it keeps looping the https://lookup.homematic.com:48335/getHost call.

Using the clientCharacteristics json and doing a curl post on the terminal results in Response code 400 INVALID_REQUEST:
curl -X POST -d "json={'clientCharacteristics': {'applicationVersion': '1.0', 'language': 'de_DE', 'osType': 'Darwin', 'deviceType': 'Computer', 'applicationIdentifier': 'homematicip-python', 'osVersion': '15.6.0', 'apiVersion': '10', 'deviceManufacturer': 'none'}, 'id': '<my-id>'}" https://lookup.homematic.com:48335/getHost

Do you have any idea how I can debug this?

Cheers,
Jan

Add dimmer support

When I list my devices, I get the message:

homematicip.home - WARNING - There is no class for PLUGGABLE_DIMMER yet

Could you add support for a dimmer so that the lights can be dimmed?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.