XBee3 Coordinator cannot find End_Device during Network Discovery - xbee

Currently, I am running XBee3 International Mesh Kit and tried following the given example in the documentation.
https://www.digi.com/resources/documentation/Digidocs/90001942-13/?utm_source=packaging&utm_medium=insert&utm_campaign=xbee3&utm_content=XBeeZigbeeMeshKit#tasks/t_configure_zigbee_modules.htm%3FTocPath%3DGetting%2520started%2520with%2520XBee%2520Zigbee%7CExample%253A%2520basic%2520communication%7C_____4
I tried implementing the Network Discovery for the three devices using Micropython REPL.
The following is the configuration I have for my 3 XBee devices.
Parameters for the 3 XBee Devices
I am running the following code on the Coordinator and End-Device for network discovery
https://www.digi.com/resources/documentation/digidocs/90001539/#reference/r_node_discovery_micropython.htm%3FTocPath%3DGet%2520started%2520with%2520MicroPython%7CMicroPython%
Now when I try to run the python code for Network discovery on the Coordinator (XBee_A), it does not find any End-Device in the node list. The only Router comes up in the search.
But when I run it on the End-Device, it does find the Coordinator and Router.
My idea was to get the details of the End-Device using network discovery, gets it network ID (NI) and then send a command to the device.
Do you know what I am doing wrong?

Have you tried going into command mode and executing an ATND? What are your sleep parameters? If the end device is sleeping longer than the node discovery time limit, it won't be awake to respond to the discovery broadcast.
Try reducing the sleep duration on the end device, or increasing the node discovery timeout (ATNT) on the Coordinator.

I ran into the same issue where the coordinator just couldn't discover any node in the same network. Spending hours digging through other documentations and just to sadly realize the updated XCTU has both DH and DL defaulted to 0 so the default dash for DL in Digi's Mesh Kit User Guide should manually be set to FFFF instead for the coordinator to work. Not the best documentation and there are quite a few errors and information missing out then leave you guessing or pay them for support.

Related

Add Google IOT Device to Google Home as Device

I read around 9 tutorials and 6 similar SO topics similar to what I ask, but none were conclusive or actually depicted what I need. So here goes.
I have a raspberry pi setup with a DTH22 sensor to send data to google iot cloud on pub/sub. Data is coming, all good.
Now, the end result here is to make a routine on google home that reads the sensor data (basically temperature) and issue a command to an added AC, based on temperature.
How do I add that sensor data as a device to google home to create that routine? Or is there another way to achieve this and I am coming at this completely wrong?
This is the first time I'm trying this so be kind. Ask anything, if I can, I will answer.
Well nothing was found. So I ended up using Assistant Relay on the Raspberry Pi, which uses a node server to catch and transmit text based commands to google assistant (linked to the same account of the google home). In the script where I check the temperature and humidity from the DHT22 sensor I just added a few more lines to send commands to the local node server to turn on / off the ac, just as I would do via voice commands on my phone.
https://github.com/greghesp/assistant-relay

VOLTTRON reading data from multiple BACnet IP to MSTP Routers puts Building Management System down

I have a BACnet network where multiple BACnet IP to MSTP routers are used.
The network configurations are as follows:
Network Configuration sketch
Now I am trying to read data from the network using Volttron. Previously no data was read, so I tried changing use_read_multiple:false in driver configurations. Still to make the request even smaller for the network I changed max_per_request: 1,
Now it is reading data but it shows an error after some time and puts the BMS down. This means we are not able to read or even discover devices on the BMS nor it gives data in VOLTTRON.
It gives an error on the router with most of AHUs, FCUs are attached. I tried testing just that Router (Say its identifier is 4900, now most of the devices like 4900:1, 4900:3, etc.) start giving an error on both BMS and my Laptop.
I have tried grouping too by making groups of 2-5 devices and setting "group_offset_interval" in Platform Driver configurations to some really high value to know whether it is a network congestion issue on the MSTP network. Sometime it starts working but after some time (an hour), it starts giving error on both sides BMS and VOLTTRON too. Although devices are ON.
It gives error on different Routers and sometimes many routers stop working.
How can I solve this issue?
Thanks in anticipation.
Specifications:
Volttron: 7.0
BACpypes: 0.16.7 (as required by Volttron for bacnet)
I could be wrong here (in adding this to the mix) - but as it's relating to MSTP (- BACnet MS/TP), but you might want to also consider if there's a (half-typical) MSTP physical/wiring issue - might not necessarily be the software (or at least not alone).
(You might end up having to consider bifurcating the network / keep 'divide & conquer'ing it into small/2-halves segments to see/locate a wiring issue.)

Does USB mass-storage class requires re-enumeration after timeout?

this might be a stupid question,
I was debugging a USB storage device on an ARM-CortexM4 platform (STM32F4 series) which runs embedded Linux. The ARM is working as USB host, and tries to communicate with a thumb drive in USB full speed (12Mb/s).
Now here is the problem. After successful enumeration and several SCSI commands thru BULK transfers, the capacity and everything can be read correctly. However, after about 15 seconds when I try to send these SCSI commands again (under same condition), the USB host controller just returns 'Transaction Error', which looks like the device is not responding to BULK transfers anymore (not ACKing) and the host controller times out. The question is, is there any timeout mechanism for USB mass-storage class or SCSI system such that, after a timeout the system must be re-enumerated or re-probed, otherwise it won't respond anymore?
I understand this might be due to a stupid error in my program, or due to some limitations on the specific hardware. However when I used usbmon module in Linux on a PC to capture the transfers on the very same thumb drive, I can see the operating system actually sends a sequence probing command (Read-max-Lun followed by Test-unit-ready) every 5 sec, which could be the reason why the thumb drive doesn't fail on my PC.
Thanks! I'm looking forward to any replies.
I think you're on the right track with the Test Unit Ready commands.. I am in the middle of writing a mass storage device driver for an embedded device and When testing on OS X, after the initial SCSI queries, my device receives Test Unit Ready command about once every second when no other activity is occurring. Since your post is quite old, I recommend you post your own solution if you've since solved your problem.
Otherwise try adding periodic test unit ready commands from the host side when there is no other activity.. You could set and activate a timer whenever USB activity is occurring. If the timer fires, u can send a Test unit ready command.. Rinse repeat.

Why doesn't API mode work with two XBee units?

I have two XBee Pro Series 1 units. Both of them are in AP=2 mode (API mode). I have followed the instructions outlined under the "Series 1" section in XBee Configuration. I try to execute "ZnetSenderExample.java" and I can see it tries to send out a very simple "Xbee" string.
However, I keep getting timeouts on the receiving end saying it never gets any data.
Addtionally, I attempted the Unicast example on this page and found the same behavior. It does not work in X-CTU when in API mode.
I am using firmware 10EC.
How can I fix this problem?
Are the nodes on the same network? When you look at them in X-CTU, do they share the same operating network settings (channel, PAN ID)? Have you installed the API mode firmware, instead of the AT mode (sometimes called transparent serial) firmware?
Have you tried any of the examples on Digi's site, to confirm that the units are configured correctly?

Communicating using Dragon12 board with xbee chip

So basically, me and a friend are using the Dragon12-Plus2 board for our class in school, and we are trying to get them to talk via Xbee chips. We have hooked one of them up, and simply need a bit of code to get the Xbee to talk with the board so we can make sure it's in correctly. We are writing in C using Freescale Codewarrior, and as much help as possible is appreciated, especially next steps such as when we hook up the other one, how to get the two to talk and test, etc. They should in theory already be set up as a point-to-point system, but we don't have much experience at this time. Any help would be greatly appreciated
If you configure the XBee modules with "AT mode" firmware, you should be able to use the serial port on the Dragon12-Plus2 board to communicate just as you would with a wired connection.
You'll need to configure both radios with the same PAN ID. Make one a coordinator and the other a router. On the coordinator, configure the DH and DL settings to match the SH and SL settings of the router. You can keep the router's default configuration of using 0 for DH and DL, which tells it to send data to the coordinator.
Do your testing on a PC with a two terminal emulators so you can verify that data sent in on one comes out on the other and vice versa.
Here's an excellent guide from the Digi website on Basic XBee ZB ZigBee (Series 2) Chat which provides more detail and a step-by-step guide for configuring the radios.

Resources