Skip to content

Loxone JSON parser doesn't handle lx=0 correctly #3809

@FreakyJ

Description

@FreakyJ

What happened?

I connected WLED to Loxone using the UDP Jason API to control individual segments:
{"seg":[{"id":0,"lx":<v>}]}
However, when I tunred the stripe off in loxone, it never turned off... I then debuged it using CURL:
curl -X POST -H "Content-Type: application/json" -d '{"seg":[{"id":0,"lx":0}]}' 192.168.3.245/json
I got success, but nothing changed.
Using this command, the stripe looked off (change: "lx":1):
curl -X POST -H "Content-Type: application/json" -d '{"seg":[{"id":0,"lx":1}]}' 192.168.3.245/json

I checked the code and in the json.cpp in line 191 and 196 I saw:

if (lx > 0) {

if (ly = 0) {

but it mus be greater or equal, since loxone sends a 0 to turn everything off.
Changing the code to this works fine with loxone:

// lx parser
  #ifdef WLED_ENABLE_LOXONE
  int lx = elem[F("lx")] | -1;
  if (lx >= 0) {
    parseLxJson(lx, id, false);
  }
  int ly = elem[F("ly")] | -1;
  if (ly >= 0) {
    parseLxJson(ly, id, true);
  }
  #endif

To Reproduce Bug

send curl -X POST -H "Content-Type: application/json" -d '{"seg":[{"id":0,"lx":0}]}' 192.168.3.245/json stripe won't turn off

Expected Behavior

stripe should turn off

Install Method

Self-Compiled

What version of WLED?

0.14.2-b1

Which microcontroller/board are you seeing the problem on?

ESP32

Relevant log/trace output

No response

Anything else?

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugfixed in sourceThis issue is unsolved in the latest release but fixed in master

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions