How can i get data from xbee gateway to my own server (Node-Red)

Hi,

I’m new customer about Digi Xbee3 product in the forum. Thank you for that.

I’m curently design a RF network based on Xbee3 ZigBee, ethernet gate way and a dashboard server.
I have read a lot of Digi manual and reference, but i need help to retrieve data from node to a server.
RCI protocol etc …

I’m working with a Digi xbee3 mesh kit (3 modules), one gateway (ref [X2E-Z3C-E1-W]).

I often design on NODE-RED server with another passed project, and a need to make my own tests about communication from/to RF network.

I understant that the best option to manage and store data is Digi Remote manager, but i need to use node-red for now.

My problem is that i don’t know from where to begin ;

  • From a xbee3 module, i can send the simple broadcast radio message “hello world” and see it in the Gateway python log.
  • Under Device Cloud Conf, i’ve put “other”, URL : , and Port
    I see in node-red one active connection in a TCP node connection is listening to that port.
    image

But i have this error and never payload in Node-Red :

Dec 27 20:38:20 local7.info pylog: 2023-12-27 21:38:20,434 INFO xbgw.reporting.device_cloud: Uploading data to DataPoint/upload.csv

Dec 27 20:38:20 local7.info pylog: 2023-12-27 21:38:20,471 DEBUG xbgw.reporting.device_cloud: stream_id: xbee.serialIn/[00:13:A2:00:42:01:07:B7]!

Dec 27 20:38:20 local7.info pylog: 2023-12-27 21:38:20,481 DEBUG xbgw.reporting.device_cloud: data: ('xbee.serialIn/[00:13:A2:00:42:01:07:B7]!', 'Hello World!', {})

Dec 27 20:38:20 local7.info pylog: 2023-12-27 21:38:20,521 INFO xbgw.reporting.device_cloud: Upload contains 1 datapoints

Dec 27 20:38:23 local7.info pylog: 2023-12-27 21:38:23,536 WARNING xbgw.reporting.device_cloud: Unexpected Device Cloud error, data lost: 

Focusing at this last line, i understand the gateway try to send xml datapoint to my server, but i receive nothing.

What is exactly the method employed by gateway to upload automaticaly zigbee data to a server like Remote Manager ?
HTTP request ? websocket ? TLS layer ?

Help me please :exploding_head:

Best Regards

Sylvain

I would like to understand if you are open minded to the possibility of using the “HTTP → RESTful API → GET” path?

Hello,

Yes now. Because i just understood how Xbee gateway cumunicate.
I have connected it to Digi Remote Manager and i understand better this philosophy.

My dashboard server is node-red (nodeJS), and my customer want to have a ZigBee and server network entirely localy.

So, i need to talk directly between Xbee gate way and nodeJS server.

I tried today to connect the gateway like this :

… to a HTTP node in node red with the same port an

That is not functioning because gateway forces TLS encrypted connection. But even if i put my own certificate in this server, there is nothing happens.

Here is, a part of my xbee gateway digi.log :

Dec 31 01:09:44 daemon.warning stunnel: LOG4[0]: CERT: Pre-verification error: self signed certificate
Dec 31 01:09:44 daemon.warning stunnel: LOG4[0]: Rejected by CERT at depth=0: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd, CN=test.myvnc.com
Dec 31 01:09:44 daemon.err stunnel: LOG3[0]: SSL_connect: ssl/statem/statem_clnt.c:1921: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Dec 31 01:09:44 daemon.notice stunnel: LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
Dec 31 01:09:44 local5.notice idigid[726]: Error 104 on TCP socket read.
Dec 31 01:09:44 local5.err idigid[726]: Connection attempt failed -509
Dec 31 01:09:44 local5.info idigid[726]: e_dp_app_notify E_DP_STAT_CONN_FAIL_TCP (7)
Dec 31 01:09:44 local5.info idigid[726]: e_dp_app_notify E_DP_STAT_VERSION_ERROR (30)
Dec 31 01:09:44 local5.info idigid[726]: e_dp_app_notify E_DP_STAT_CONN_FAIL_TCP (7)

I want to try this below, python is not my cup of tea :crazy_face:
This Digi doc (Option 1) explain how to add this code with a copy of certificate in gateway.
Or, in option 2, disable SSL…

Python error: “certificate verify failed”

Where and what add to my xbgw_main.py ?

Anyone can help me ?

Thank you very much

One thing at a time, first:
What you call “my customer wants to have a ZigBee and server network entirely localy” in my understanding is not entirely localy. I believe that when using the gateway and Digi remote manager, you would be exporting the data to your local server, but it would not be running 100% locally. In other words, you would be using two servers, DIGI’s and your local copy, which would mirror the DRM data collected by the Gateway.

What do you call “i need to talk directly between Xbee gateway and nodeJS server.” I understood from this sentence that you would like not to use the online platform “Digi Remote Manger”. Did I understand correctly?


there you add your file xbgw_main.py

Hello,

Yes, you understood me well. I want to get/send data directly between xbee gateway and nodeJS dashboard server.

Have you done that before ?

[EDIT] PS: do you know costs about Digi Remote Manager ?

“Have you done that before ?”
I didn’t do it that way, because the entire system was designed to use for Digi remote manager.

“…costs about Digi Remote Manager ?”

The XBGW main.py application is not something that runs on the X2E. It is something that comes on the XBee Industrial Gateway.

What do you mean by that ?

xbgw_main.py python file is running on my X2E-Z3C-E1-W.

That app was not written for the X2E. It was written for the XBee Industrial Gateway and the version of Python it runs.

Ok so, what i must to understand ? This file is useless ?

Originaly, i want to know how can i send/receive direcly data from/to xbgw and server without Digi Remote Manager.

I understand this technic is Digi business, i’m agree with that. But in my case, i have a demand for totaly local network, and one other inside forest for adventure gaming, without any internet connection.

Please, what is the way ?

Thank you

Hi, I believe I can help you. Send me an email: olavo.rocha.k@gmail.com

Corso66,

Really that is dependent on what you are working with or what protocol the device use. For example, if you can use the Modbus protocol, you can use the Industrial Automation function in the XBee Gateway’s firmware to create a connection from your internal server and the remote XBee modules. If you are not, then you may want to use Real port to make that connection. If that is not desired, then you would need to create a custom Python script that makes the connection between the XBee/remote device and the desired server.