Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. General Discussion
  3. How to make sense of received Struct from Arduino via NRF24?

How to make sense of received Struct from Arduino via NRF24?

Scheduled Pinned Locked Moved General Discussion
1 Posts 1 Posters 15 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    nrf24_is_hard
    wrote on last edited by
    #1

    Hi guys,

    Currently I have been at this for days now, and I just don't know how to decode the struct value upon receiving the struct data from my Arduino. I am using Python on the RPi side, both are fitted with the same NRF24L01 and I am using RF24 Library https://github.com/matmany/lib_nrf24 which is forked from BLavery.

    So my code on the Arduino side is relatively standard, the Arduino transmits a struct data of sensorName[15], Air temperature, Air Humidity, Light sensor, soil Moisture, soil Temperature, gas Sensor and motion Sensor to a defined pipe. Apart from sensorName, these are all declared as Integers as I will convert it to float in RPi to shorten the size of the struct, thus the struct size is 31, just 1 byte away from the maximum.

    Upon running my code at the RPi, I get all sorts of bytes values and I want to convert it to their actual values, which is integer->float.

    RPi code is just something like

    receivedMessage=[]
    radio.read(receivedMessage,radio.getDynamicPayloadSize())
    print(receivedMessage)
    
    OUTPUT:
    different kinds of values
    [0,2,3,195,0,0,0,etc.]
    

    With a previous small side thing I did a few months ago, I only had to transmit temperature and humidity in a float array, and I did it like this, which works!

    DataBytes = 8
    receivedMessage=bytearray(DataBytes)
    radio.read(receivedMessage,radio.getDynamicPayloadSize())
    data = struct.unpack('ff', receivedMessage)
    humidity=data[0]
    temp=data[1]
    
    

    So my question is, how would I do the same in the case of receiving struct?

    1 Reply Last reply
    0
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    28

    Online

    11.7k

    Users

    11.2k

    Topics

    113.1k

    Posts


    Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • MySensors
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular