Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ikea smart blinds #242

Closed
tjorim opened this issue Aug 17, 2019 · 64 comments · Fixed by #244
Closed

Ikea smart blinds #242

tjorim opened this issue Aug 17, 2019 · 64 comments · Fixed by #244

Comments

@tjorim
Copy link

tjorim commented Aug 17, 2019

Where are you using pytradfri (eg stand-alone, Home Assistant etc)

Home Assistant

Version of pytradfri

6.0.1

Expected behaviour

The integration supports all Ikea Smart things, like controlling the new Ikea Fyrtur and Kadrilj blinds.

Actual behaviour

It looks like this library doesn't support those yet (and as a result HA neither).

@ggravlingen
Copy link
Member

That’s correct and I don’t reckon any of us devs have one. Fingers crossed someone submits a PR here!

@ggravlingen
Copy link
Member

ggravlingen commented Aug 19, 2019

To maybe move things forward a little bit, can anyone who owns a blind please submit the JSON-string from the blind. To do that, run the this script (choice 3 and 4): https://github.com/ggravlingen/pytradfri/blob/master/examples/debug_info.py

Please please paste the output in this issue.

@fribse
Copy link

fribse commented Aug 20, 2019

I'm trying to run the script, but I get an error, first it complained that the debian didn't have libcoap, so I installed that, and now I get:

python3 debug_info.php x.x.x.x

Please provide the 'Security Code' on the back of your Tradfri gateway: KEY
Traceback (most recent call last):
  File "debug_info.php", line 61, in <module>
    psk = api_factory.generate_psk(args.key)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 164, in generate_psk
    self._psk = self.request(Gateway().generate_psk(existing_psk_id))
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 96, in request
    return self._execute(api_commands, timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/pytradfri/api/libcoap_api.py", line 88, in _execute
    'Error executing request: {}'.format(err)) from None
pytradfri.error.RequestError: Error executing request: Command '['coap-client', '-u', 'Client_identity', '-k', 'KEY', '-v', '0', '-m', 'post', '-f', '-', 'coaps://x.x.x.x:5684/15011/9063']' returned non-zero exit status 1
??

@ggravlingen
Copy link
Member

Were you prompted for a key and typed in the text on the back of your gateway? Also, your logs references a PHP-file. Are you running a PHP-file?

@fribse
Copy link

fribse commented Aug 20, 2019

I tried entering the key with the -K and also by being prompted, it's a py file, just a typo, I changed it, but got the same result.

@ggravlingen
Copy link
Member

In that case, I’d recommend using the docket script, it’s normally easier.

@fribse
Copy link

fribse commented Aug 20, 2019

Ok, I'm more or less a virgin with docker, so what's the container name?

@ggravlingen
Copy link
Member

@fribse
Copy link

fribse commented Aug 20, 2019

I think I'm going to set up an RPI3 for this, the debian vm I have here, also fails on finding the Dockerfile in the script :-(

@fribse
Copy link

fribse commented Aug 20, 2019

Ok, made a brandnew RPi3 with buster, and installed docker.
That gives me this:
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/DockerfileRPI: no such file or directory
I then created the DockerRPI file, and ran the docker command manually, and that got me this problem:
Step 5/8 : COPY ./script/install-coap-client.sh install-coap-client.sh
COPY failed: stat /var/lib/docker/tmp/docker-builder011634599/script/install-coap-client.sh: no such file or directory

@ggravlingen
Copy link
Member

ggravlingen commented Aug 20, 2019

Did you do this?

git clone https://github.com/ggravlingen/pytradfri.git
cd pytradfri/script
./dev_docker

@fribse
Copy link

fribse commented Aug 20, 2019

No, but that gave a success.

And when I run the debug_info.py I get this
root@raspberrypi:/usr/src/app/examples# python3 debug_info.py x.x.x.x
Please provide the 'Security Code' on the back of your Tradfri gateway: SecretKey
Generated PSK: PSKKEY
Traceback (most recent call last):
File "/usr/lib/python3.4/subprocess.py", line 609, in check_output
output, unused_err = process.communicate(inputdata, timeout=timeout)
File "/usr/lib/python3.4/subprocess.py", line 960, in communicate
stdout, stderr = self._communicate(input, endtime, timeout)
File "/usr/lib/python3.4/subprocess.py", line 1659, in _communicate
self.stdout.encoding)
File "/usr/lib/python3.4/subprocess.py", line 888, in _translate_newlines
data = data.decode(encoding)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 18: ordinal not in range(128)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "debug_info.py", line 78, in
devices = api(devices_commands)
File "/usr/src/app/pytradfri/api/libcoap_api.py", line 101, in request
result = self._execute(api_command, timeout=timeout)
File "/usr/src/app/pytradfri/api/libcoap_api.py", line 83, in _execute
return_value = subprocess.check_output(command, **kwargs)
File "/usr/lib/python3.4/subprocess.py", line 615, in check_output
process.kill()
File "/usr/lib/python3.4/subprocess.py", line 1691, in kill
self.send_signal(signal.SIGKILL)
File "/usr/lib/python3.4/subprocess.py", line 1681, in send_signal
os.kill(self.pid, sig)
ProcessLookupError: [Errno 3] No such process

@ggravlingen
Copy link
Member

Looks like you maybe have non-English names in your devices but other than that, I’m out of clues. The docker works on my computer.

@fribse
Copy link

fribse commented Aug 20, 2019

Yes, I do have quite a few danish device names.
Oh well, I hope somebody else can help out with this then, I'm not going to rename all my devices, that will mess up my HA automations.

@fribse
Copy link

fribse commented Aug 21, 2019

I tried doing a raspbian stretch install, just to make sure that it wasn't a factor that buster doens't have it's own docker image.
But I still get the same message about the danish character set.

@fribse
Copy link

fribse commented Aug 22, 2019

Ok, so I renamed all the devices to items without danish letters.
Image in 2019 programmers doesn't know about international charactersets, geez, embarrasing.
This is the output of 3 and 4, look for Rullegardin. I hope it doesn't disclose 'dangerous' information.

What information about your Tradfri network do you need?

  1. Gateway
  2. Gateway endpoints
  3. All paired devices
  4. All paired lamps
  5. All smart tasks
  6. All groups
    Make a choice: 3
Printing information about all devices paired to the Gateway
[  
   {  
      "15015":[  
         {  
            "5536":0.0,
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"FYRTUR block-out roller blind",
         "2":"",
         "3":"2.2.007",
         "6":3,
         "9":77
      },
      "5750":7,
      "9001":"Rullegardin i sovevaerelse",
      "9002":1566141494,
      "9003":65601,
      "9019":1,
      "9020":1566402653,
      "9054":0,
      "9084":" 9d 58 b0 2 4 6a df be 77 e5 c1 e0 a2 26 2e 57"
   }
]

@ggravlingen
Copy link
Member

Please don't be rude, this is an open source project where we spend some of our free time building the code that makes up pytradfri. The person who contributed that script probably don't live in a country where special characters are a problem.

Anyways, thanks for submitting the output. I stripped out the unnecessary bits.

@ggravlingen
Copy link
Member

Having looked at this a bit, I believe I need the output from 2. Gateway endpoints.

@fribse
Copy link

fribse commented Aug 22, 2019

Rude??? I beg your pardon, how is it rude that I point out that a programmer of today makes the same mistakes as we did in the 80's (yes I'm that old, and worked with assembler back then) ? I had hoped that people had learned something in the last 30 years, so Yes, I feel it is embarrasing, I'm not namecalling, it's just a statement.
Ok, I will rename all the enities again 🙄

@fribse
Copy link

fribse commented Aug 22, 2019

Output of '2':

What information about your Tradfri network do you need?

  1. Gateway
  2. Gateway endpoints
  3. All paired devices
  4. All paired lamps
  5. All smart tasks
  6. All groups
    Make a choice: 2

Printing information about endpoints in the Gateway

[
    "/15006",
    "/15001",
    "/15004",
    "/15004/add",
    "/15004/remove",
    "/15010",
    "/15005",
    "/15005/add",
    "/15005/remove",
    "/15011/15012",
    "/15011/9034",
    "/15011/9030",
    "/15011/9031",
    "/15011/9102",
    "/15011/9094",
    "/15011/9095",
    "/15011/9104",
    "/15010/265938",
    "/15010/320958",
    "/15004/131080",
    "/15005/131080",
    "/15005/131091/196666",
    "/15005/131091/196667",
    "/15005/131091/196668",
    "/15004/131094",
    "/15005/131094",
    "/15005/131097/196686",
    "/15004/131097",
    "/15005/131097",
    "/15001/65578",
    "/15001/65543",
    "/15001/65561",
    "/15001/65538",
    "/15001/65568",
    "/15001/65554",
    "/15001/65558",
    "/15001/65588",
    "/15001/65544",
    "/15001/65549",
    "/15001/65560",
    "/15001/65559",
    "/15001/65557",
    "/15001/65550",
    "/15001/65582",
    "/15001/65562",
    "/15001/65540",
    "/15001/65592",
    "/15001/65542",
    "/15001/65546",
    "/15001/65576",
    "/15001/65551",
    "/15001/65545",
    "/15001/65541",
    "/15001/65537",
    "/15001/65571",
    "/15005/131100/196693",
    "/15005/131100/196694",
    "/15005/131100/196695",
    "/15001/65599",
    "/15004/131100",
    "/15005/131100",
    "/15005/131074/196611",
    "/15005/131074/196612",
    "/15005/131074/196613",
    "/15005/131074/196614",
    "/15005/131075/196615",
    "/15005/131075/196616",
    "/15005/131075/196617",
    "/15005/131074/196620",
    "/15004/131075",
    "/15005/131075",
    "/15005/131080/196633",
    "/15005/131080/196634",
    "/15005/131080/196635",
    "/15005/131085/196648",
    "/15005/131085/196649",
    "/15005/131085/196650",
    "/15005/131094/196675",
    "/15005/131094/196676",
    "/15005/131094/196677",
    "/15005/131095/196678",
    "/15005/131095/196679",
    "/15005/131095/196680",
    "/15004/131073",
    "/15005/131073",
    "/15001/65555",
    "/15001/65570",
    "/15001/65585",
    "/15001/65579",
    "/15001/65536",
    "/15001/65591",
    "/15001/65587",
    "/15004/131095",
    "/15005/131095",
    "/15005/131097/196684",
    "/15005/131097/196685",
    "/15001/65567",
    "/15001/65539",
    "/15005/131078/196627",
    "/15005/131078/196628",
    "/15005/131078/196629",
    "/15004/131085",
    "/15005/131085",
    "/15004/131091",
    "/15005/131091",
    "/15005/131083/196642",
    "/15005/131083/196643",
    "/15005/131083/196644",
    "/15004/131083",
    "/15005/131083",
    "/15004/131078",
    "/15005/131078",
    "/15004/131074",
    "/15005/131074",
    "/15005/131090/196663",
    "/15005/131090/196664",
    "/15005/131090/196665",
    "/15004/131090",
    "/15005/131090",
    "/15005/131073/196608",
    "/15005/131073/196609",
    "/15005/131073/196610",
    "/15011/9063",
    "/15001/65600",
    "/15001/65601"
]

Please let me know within an hour if you need others, otherwise I will rename the items back to their proper names.

@ggravlingen
Copy link
Member

Can the blinds be controlled from IKEA's own app? Looking at the data returned from the gateway, it doesn't quite follow the usual pattern for the devices that are controllable.

@fribse
Copy link

fribse commented Aug 23, 2019

Yes they can. The app shows it like this (the top slider is the controller, the bottom is the blind.
Screenshot_20190823-070308

@fribse
Copy link

fribse commented Aug 23, 2019

Btw. The blinds require a 'repeater' to be installed close to them, that could be the reason for it looking different?

@ggravlingen
Copy link
Member

ggravlingen commented Aug 23, 2019

Thanks for the confirmation that it works in the app! Then it should somehow be possible to reverse engineer.

Putting a longer version of your extract back here:

[  
   {  
      "15009":[  
         {  
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI remote control",
         "2":"",
         "3":"1.2.223",
         "6":3,
         "9":74
      },
      "5750":0,
      "9001":"Adrians fjernbetjening",
      "9002":1556813419,
      "9003":65578,
      "9019":1,
      "9020":1566438361,
      "9054":0
   },
   {  
      "15009":[  
         {  
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI remote control",
         "2":"",
         "3":"1.2.223",
         "6":3,
         "9":74
      },
      "5750":0,
      "9001":"Nathaliedaemper",
      "9002":1547834301,
      "9003":65543,
      "9019":1,
      "9020":1566438523,
      "9054":0
   },
   {  
      "15009":[  
         {  
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI wireless dimmer",
         "2":"",
         "3":"1.2.248",
         "6":3,
         "9":60
      },
      "5750":0,
      "9001":"Lysdaemper spejl",
      "9002":1549475041,
      "9003":65561,
      "9019":1,
      "9020":1566449363,
      "9054":0
   },
   {  
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI bulb E27 CWS opal 600lm",
         "2":"",
         "3":"1.3.009",
         "6":1
      },
      "3311":[  
         {  
            "5706":"f1e0b5",
            "5707":5427,
            "5708":42596,
            "5709":30015,
            "5710":26870,
            "5850":0,
            "5851":178,
            "9003":0
         }
      ],
      "5750":2,
      "9001":"Spisebord 1",
      "9002":1547811894,
      "9003":65537,
      "9019":1,
      "9020":1566455569,
      "9054":0
   },
   {  
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI transformer 10W",
         "2":"",
         "3":"1.2.245",
         "6":1
      },
      "3311":[  
         {  
            "5850":0,
            "5851":1,
            "9003":0
         }
      ],
      "5750":2,
      "9001":"Kontor",
      "9002":1553287081,
      "9003":65571,
      "9019":1,
      "9020":1566459464,
      "9054":0
   },
   {  
      "15014":[  
         {  
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"TRADFRI signal repeater",
         "2":"",
         "3":"2.0.019",
         "6":1
      },
      "5750":6,
      "9001":"Signalforstaerker",
      "9002":1566141249,
      "9003":65600,
      "9019":1,
      "9020":1566401800,
      "9054":0,
      "9084":" 83 6f b7 c 7a f4 8a 14 4a 94 4a 94 41 e0 a2 4f"
   },
   {  
      "15015":[  
         {  
            "5536":0.0,
            "9003":0
         }
      ],
      "3":{  
         "0":"IKEA of Sweden",
         "1":"FYRTUR block-out roller blind",
         "2":"",
         "3":"2.2.007",
         "6":3,
         "9":77
      },
      "5750":7,
      "9001":"Rullegardin i sovevaerelse",
      "9002":1566141494,
      "9003":65601,
      "9019":1,
      "9020":1566402653,
      "9054":0,
      "9084":" 9d 58 b0 2 4 6a df be 77 e5 c1 e0 a2 26 2e 57"
   }
]

@ggravlingen
Copy link
Member

OK, this will be a bumpy ride as I controlling the blind doesn't work exactly as the lights. I've created a new branch with some changes in it that I'd like you to checkout. Please.run this command:
git checkout 201908222012

Then please run the debug-command again, as you did above. I've updated the code so that it (hopefully) works with non-English letters so you don't have to rename. Let's get that decoding working before we do anything else here.

Following that code working, I'd like you to extract the part that references your bedroom blind (as in the abbreviated version of your post above) with the blinds fully up, fully down and then set at half way. I need to understand what values the command takes.

Thank you

@ggravlingen
Copy link
Member

To clarify part two in my post above, I'm really only interested in the value in 5536 for the different scenarios, as it appears to be the value representing the state of the blind.

      "15015":[  
         {  
            "5536":0.0,
            "9003":0
         }
      ],

@vdaele
Copy link

vdaele commented Aug 24, 2019

The value 5536 ranges from 0 (open) to 100 (closed). I have no clue yet what the 9003 is

@ggravlingen
Copy link
Member

@vdaele thank you! Can you please try running the example_blinds script in the branch mentioned above? It should set them half way, if working properly.

@vdaele
Copy link

vdaele commented Aug 24, 2019

Sorry, I don't have your branch
but I can confirm that this payload works {"15015": [{"5536": 50}]}
It triggers coap notifications like (note the occasional back jump from 41 to 24!)
{"15015":[{"5536":0,"9003":0}],...
{"15015":[{"5536":8,"9003":0}],...
{"15015":[{"5536":13,"9003":0}],...
{"15015":[{"5536":19,"9003":0}],...
{"15015":[{"5536":24,"9003":0}],...
{"15015":[{"5536":30,"9003":0}],...
{"15015":[{"5536":36,"9003":0}],...
{"15015":[{"5536":19,"9003":0}],...
{"15015":[{"5536":41,"9003":0}],...
{"15015":[{"5536":24,"9003":0}],...
{"15015":[{"5536":47,"9003":0}],...
{"15015":[{"5536":50,"9003":0}],...

@ggravlingen
Copy link
Member

Thank you! I've added a few debug printouts, can you please try again?

@sthorsen
Copy link

Sure, here you go

root@development:/usr/src/app# python examples/example_blinds.py 192.168.2.180
15001
15001/65537
15001/65538
15001/65536
[<65538 - TRADFRI blind (FYRTUR block-out roller blind)>]
['15001', 65538]
[{'5523': 50}]
15001/65538
<pytradfri.command.Command object at 0x7f8b55b5dc50>

@ggravlingen
Copy link
Member

@sthorsen! Thanks again! Looks like I was sending the command to 5523 instead of 5536. I've updated and would appreciate another run.

@sthorsen
Copy link

Hehe, no problem

root@development:/usr/src/app# python examples/example_blinds.py 192.168.2.180
[<65538 - TRADFRI blind (FYRTUR block-out roller blind)>]
['15001', 65538]
[{'5536': 50}]

I think the payload should be something like this:?

{"15015": [{"5536":50}]}

@ggravlingen
Copy link
Member

You're absolutely right, I need to remember how to change the path to 15015.

@ggravlingen
Copy link
Member

ggravlingen commented Sep 2, 2019

I've made some changes now that should send the payload to 15015. Also updated the dockerfile for Raspberry Pi to the latest version of Python.

@sthorsen
Copy link

sthorsen commented Sep 2, 2019

Hi @ggravlingen, I just tried your update. The blind is not moving but here are the output :)
I set the position to 10

root@development:/usr/src/app# python examples/example_blinds.py 192.168.2.180
coap-client -u -k  -v 0 -m get coaps://192.168.2.180:5684/15001
{'stderr': -3, 'timeout': 10, 'universal_newlines': True}
coap-client -u -k -v 0 -m get coaps://192.168.2.180:5684/15001/65537
{'stderr': -3, 'timeout': 10, 'universal_newlines': True}
coap-client -u -k -v 0 -m get coaps://192.168.2.180:5684/15001/65538
{'stderr': -3, 'timeout': 10, 'universal_newlines': True}
coap-client -u -k -v 0 -m get coaps://192.168.2.180:5684/15001/65536
{'stderr': -3, 'timeout': 10, 'universal_newlines': True}
coap-client -u -k -v 0 -m get coaps://192.168.2.180:5684/15001/65540
{'stderr': -3, 'timeout': 10, 'universal_newlines': True}
['15015', 65538]
[{'5536': 10}]
coap-client -u -k -v 0 -m put -f - coaps://192.168.2.180:5684/15015/65538
{'stderr': -3, 'timeout': 10, 'universal_newlines': True, 'input': '[{"5536": 10}]'}

@ggravlingen
Copy link
Member

ggravlingen commented Sep 2, 2019

@sthorsen haha, this is difficult to do without having a blind on my own :) Thank you for your patience. Btw, I edited your post and removed the user/key data that was in there.

@vdaele what command exactly did you invoke to control the blinds?

@sthorsen
Copy link

sthorsen commented Sep 2, 2019

@ggravlingen Oh, thank you. I missed that :)
Yeah, it is hard to integrate devices you don't have on hand ;) But don't worry, we will get it to work :) I'm sorry I can't help more. But I'm not that into Python

But I'm here to test it :)

@sthorsen
Copy link

sthorsen commented Sep 2, 2019

Oh, and as you can see. I have 2 blinds connected now :)

@vdaele
Copy link

vdaele commented Sep 3, 2019

I don't use pytradfri. But If I understand the comments above correctly, you are sending a weird payload like

['15015', 65538]
[{'5536': 10}]

while it should be (no need anymore to repeat the 65538)

{"15015": [{"5536": 50}]}

@ggravlingen
Copy link
Member

65538 is the ID of the specific blind we want to change the state of so it has to be there somewhere in the command.

The command we're sending to the gateway at the moment is [{"5536": 10}] to the COAP endpoint coaps://192.168.2.180:5684/15015/65538.

@vdaele
Copy link

vdaele commented Sep 4, 2019

You have to send {"15015": [{"5536": 50}]}

@ggravlingen
Copy link
Member

@sthorsen as per @vdaele's recommendation, I'm now sending the {"15015": [{"5536": 50}]} command:
coap-client -u [redacted] -k [redacted] -v 0 -m put -f - coaps://192.168.15.13:5684/15001/65541 {'stderr': -3, 'timeout': 10, 'universal_newlines': True, 'input': '{"15015": [{"5536": 50}]}'}

Can you please pull the latest version of the branch and give it another go?

@fribse
Copy link

fribse commented Sep 7, 2019

@ggravlingen I finally found some time, and I just pulled the latest build, and it's moving the blind to around 50%, looking good :-)

@ggravlingen
Copy link
Member

Great news! Then I'll wrap up the code and ask for a review. Thank you all for your patience and for testing!

@fribse
Copy link

fribse commented Sep 10, 2019

Hey @ggravlingen Do you have any idea when it will appear in the IKEA integration in Home Assistant?

@ggravlingen
Copy link
Member

@fribse the short answer is one you don't want to hear: I don't know.

The long answer is that this is what's required for that to happen:

  • The changes proposed to pytradfri based on our discussion here have to be merged into the main code base. I've requested one of the other founders and collaborators of this lib, @lwis, to review the code, making sure I haven't messed something up. As this is open source and done on our free time, it will be done when there's time in his schedule.
  • When the code is merged, pytradfri will support the blinds. However, Home Assistant is a completely separate project so its code will have to be adopted to accomodate the changes. The process here is the same: someone proposed changes to the code base and another person reviews the changes. I've added a few of the previous features (lights and wall plugs) so I might give it a go if someone doesn't beat me to it.
  • When the code is merged, the feature will appear in the next major release of Home Assistant.

@fribse
Copy link

fribse commented Sep 10, 2019

Thankyou @ggravlingen, it's good to know the procedure, then there is a way to influence the proces 😉

@ggravlingen
Copy link
Member

Support for blinds have now been added. I will publish to pypi later on. For support to work in Home Assistanf, the process above has to be followed.

@ggravlingen
Copy link
Member

ggravlingen commented Sep 15, 2019

I've now proposed a change to the HA code which, when approved, will add support for the devices:
home-assistant/core#26659

Please test the code if you can (I can't, as I still don't have the device.)

@ggravlingen ggravlingen reopened this Sep 20, 2019
@ggravlingen
Copy link
Member

I'm reopening this as I need testers of observing the blind. I'll make another post in a few minus with instructions.

@ggravlingen
Copy link
Member

Can someone please fork this branch:
#249

And then run the example-script while also changing the blind in the app. I'm trying to find out if it works to get a live feed (observe) the blind.

Thanks

@vdaele
Copy link

vdaele commented Sep 21, 2019

You can observe the blinds. In one of my earlier comments, I wrote that you get coap notifications like (note the occasional back jump from 41 to 24!)
{"15015":[{"5536":0,"9003":0}],...
{"15015":[{"5536":8,"9003":0}],...
{"15015":[{"5536":13,"9003":0}],...
{"15015":[{"5536":19,"9003":0}],...
{"15015":[{"5536":24,"9003":0}],...
{"15015":[{"5536":30,"9003":0}],...
{"15015":[{"5536":36,"9003":0}],...
{"15015":[{"5536":19,"9003":0}],...
{"15015":[{"5536":41,"9003":0}],...
{"15015":[{"5536":24,"9003":0}],...
{"15015":[{"5536":47,"9003":0}],...
{"15015":[{"5536":50,"9003":0}],...

@ggravlingen
Copy link
Member

@vdae your comment lead you to the solution so I remeber! But I assmumed you were using the CoAP stand alone lib to extract that and not pytradfri? Just want to make sure Ivre made a correct implementation.

@vdaele
Copy link

vdaele commented Sep 21, 2019

I see. I indeed use libcoap directly.

@ggravlingen
Copy link
Member

Closing this, just got a report that it works correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants