1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

FIXED Forwarder on Coreelec;"proto.HyperionRequest" missing command

Discussion in 'Bug Reports' started by qwasy, 15 May 2019.

  1. qwasy

    qwasy New Member

    Messages:
    12
    Hardware:
    RPi3, +nodeMCU/ESP8266
    I'm using an Odroid c2, with Coreelec 20190513, and the HyperionNG addon 9.1.100.3
    The Ambilight itself is working fine.
    But the forwarder does not.
    My configs are attached, I use the normal one for grabbing Kodi, and an Ambilight with an Arduino (which works) and want to forward it locally to two other instances of Hyperion. These two are for a left and right placed atmoorb ESP8266.
    But I got the following error message

    May 14 10:05:26 CoreELEC sh[2854]: [libprotobuf ERROR /var/corebuild/CoreELEC/build.CoreELEC-Amlogic.arm-9.0-devel/protobuf-3.1.0/src/google/protobuf/message_lite.cc:119] Can't parse message of type "proto.HyperionRequest" because it is missing required fields: command
    May 14 10:05:26 CoreELEC sh[2854]: [hyperiond FLATBUFCONNECTION] <ERROR> Unable to parse reply
    May 14 10:05:26 CoreELEC sh[2854]: [hyperiond FLATBUFCONNECTION] <ERROR> Unable to parse reply
    May 14 10:05:26 CoreELEC hyperiond[2857]: Unable to parse reply
    May 14 10:05:26 CoreELEC hyperiond[2857]: Unable to parse reply
    May 14 10:05:26 CoreELEC sh[2854]: [libprotobuf ERROR /var/corebuild/CoreELEC/build.CoreELEC-Amlogic.arm-9.0-devel/protobuf-3.1.0/src/google/protobuf/message_lite.cc:119] Can't parse message of type "proto.HyperionRequest" because it is missing required fields: command
    May 14 10:05:26 CoreELEC sh[2854]: [hyperiond FLATBUFCONNECTION] <ERROR> Unable to parse reply
    May 14 10:05:26 CoreELEC sh[2854]: [hyperiond FLATBUFCONNECTION] <ERROR> Unable to parse reply
    May 14 10:05:26 CoreELEC hyperiond[2857]: Unable to parse reply
    May 14 10:05:26 CoreELEC hyperiond[2857]: Unable to parse reply


    Is there anything I could do to fix it?


    edit:
    one day later, I tried the forwarder on an RPi3. A fresh Raspbian, and latest HyperionNG. Compiling works fine, but the forwarder also does not work. It's the same error:

    [libprotobuf ERROR /home/pi/hyperion/dependencies/external/protobuf/src/google/protobuf/message_lite.cc:123] Can't parse message of type "proto.HyperionRequest" because it is missing required fields: command

    So maybe HyperionNG is missing something...?

    edit2:
    I got it working.
    I'm using a Proto to Flat forwarder now, and that works.
    Before, I tried Proto to Proto, which gave me these errors.
     

    Attached Files:

    Last edited: 26 May 2019
  2. Blokmeister

    Blokmeister New Member

    Messages:
    8
    Hardware:
    RPi2, 32/64bit, +AtmoOrb
    Do you have a step-by-step description on what you did to fix it? It's also not working here, but I don't know how to set up the proto to flat forwarder or on what system I need this. I try to send data to a proto client on 192.168.1.51:19445, but the log on that client says it's missing the command field.
     
  3. qwasy

    qwasy New Member

    Messages:
    12
    Hardware:
    RPi3, +nodeMCU/ESP8266
    So, I've got two instances of Hyperion NG running.
    One as a sender, one as a receiver.
    The sender has the forwarder enabled, in there is a json and a proto port.
    (If you don't have that option, you need to change in Hyperion NG the settings level to expert)
    On the Hyperion NG config website, go to Configuration, then Network Services. At the bottom, there's the forwarder option. Activate it and fill in the json and proto field with the IP of the receiver Hyperion NG instance. If it's on the same device, use localhost, or the actual IP. The Json and Proto port should be a different one.
    If you save your config and open it, it will look like this:
    Code:
    "forwarder": {
            "enable": true,
            "json": [
                "192.168.1.10:19500"
            ],
            "proto": [
                "192.168.1.10:19510"
            ]
        }
    
    The IP is from the device that should receive the data. The Json and Proto Ports can mostly be choosen freely. I'm using something above 194000.

    On the reciever side, go to Configuration, Network Services. Activate the Flatbuff Server and fill the Json and Flatbuff Port with the values from above.
    In this config, it will look like this:
    Code:
        "jsonServer": {
            "port": 19500
        },
    
        "flatbufServer": {
            "enable": true,
            "port": 19510,
            "timeout": 3000
        }
    
    The Ports from the receiver match the ones from the sender.

    You can do this on one device, or forward it to another device with Hyperion NG.
    I'm doing both, I have 3 instances on my Odroid C2, and sometimes I forward from another Pi3 to that Odroid. Working fine^^
    I hope, that helps^^
     
    • Like Like x 2
  4. Blokmeister

    Blokmeister New Member

    Messages:
    8
    Hardware:
    RPi2, 32/64bit, +AtmoOrb
    Hey Qwasy

    Thanks so much for the clarification. Now I understand that you are running hyperion.ng on both systems. I have an Odroid C2 running CoreELEC+hyperion.ng, which forwards to an RPI3 running LibreELEC with hyperion (the old generation). This always worked until a few months ago. There is no flatbuf support on that system as far as I know, so I can't get it to work with both instances running as is. I will take a look at upgrading my LibreELEC to CoreELEC and getting it to work like that. Or do you have another suggestion?

    Thanks!
     
  5. qwasy

    qwasy New Member

    Messages:
    12
    Hardware:
    RPi3, +nodeMCU/ESP8266
    You're welcome ^^
    Hm...
    You could try a few things.
    Test, if forwarding hyperion ng with Proto instead of flatbuffer to old hyperion works.
    If not, in coreelec there is the old hyperion as am add-on as well. But I have no idea, how good that works, or if it works at all..
    Last would be, to upgrade your hyperion to hyperion ng.
    I don't know if you need coreelec for that, or if libreelec works as well.
    For hyperion ng, you either need to compile it yourself, like written on the github, or search this forum for a already compiled version. I think there should be something floating around.

    More a general question, why do you forward the data?
     
  6. Blokmeister

    Blokmeister New Member

    Messages:
    8
    Hardware:
    RPi2, 32/64bit, +AtmoOrb
    Thanks for your suggestions.

    Right now I actually do forward to my old setup using the proto forwarder. However, I don't see a way to forward using the flatbuffer. My version of hyperion.ng only supports json and proto forwarding, see below:
    upload_2019-8-24_19-6-25.png

    My forwarding the data comes from the early issue of backlight flickering. I solved that issue by driving the LEDs with my RPI instead of with my Odroid C2. If I want to change that now, I need to modify my aluminum Odroid case, mount connectors on that and so on. So it's a route I prefer not to take right now.
     
  7. Paulchen-Panther

    Paulchen-Panther Active Member Developer

    Messages:
    307
    Hardware:
    RPi1/Zero, RPi3, 32/64bit, +Arduino
    This is a typo or has not been changed in Flatbuffer. The forwarder connections are all flatbuffers.
    https://prnt.sc/ox0rlc
     
  8. Blokmeister

    Blokmeister New Member

    Messages:
    8
    Hardware:
    RPi2, 32/64bit, +AtmoOrb
    Okay. So this means that there is no way of using the old protobuffer?

    Then is there a way of downgrading to the previous version? I tried looking for older versions, but couldn't find one after 20 minutes of googling.
     
  9. Blokmeister

    Blokmeister New Member

    Messages:
    8
    Hardware:
    RPi2, 32/64bit, +AtmoOrb
    Okay, I'm still kinda stuck here. I have three instances of the old Hyperion running on my RPI2, which I have installed using hypercon. One instance for my APA102 LED strips, one for my AtmoOrb devices, and one for my Hue lights. This instance gets its (or used to get its) imaging data from an Odroid C2 via a proto fowarder. However, this is now broken and I'm looking for another solution. I was thinking of just installing CoreELEC on the Pi which already has Hyperion.ng integrated, so I just need to loosely copy-paste the old config and then I'm done for my LED strips. However, then I still need to do my AtmoOrb and Hue integrations. As far as I know, this is not possible with the kodi add-on.

    I'm looking for the easiest solution here. I already tried looking at downgrading hyperion.ng on my Odroid C2, but I can't find any old addon versions. I can upgrade my Pi to CoreELEC but then I need a way to run three instances (or at least two) on the Pi.

    I'm at a loss on how to tackle this. Isn't it possible to simply add protobuffer forwarding again? If not, what would be the simplest way of fixing this issue?