Using an external YML file

I recently updated our CP X4 gateway app from dia v1.1.12 to v1.3.8 and am now having problems using a YML file outside of the package. Everything works great if I use ESP to build, upload and run, but when an external YML file is specified, it does not work as desired. I don’t know if this is related to the new DIA or how the ESP builds a project.

The problem I’m seeing is that the XBeeDeviceManager is putting my xbee modules right into the running state after bootup and skipping the config state. I am NOT listing or providing anything for skip_config_addr_list under the xbee managers settings, in either the source YML file or the external YML file. I have also confirmed that I have no tab characters in my YML files. I will get this failure even if the internal source and external YML configuration files match.

Any help in understanding this or how I can specify an external config file would be helpful.

Also, is only needed with ESP or do I always need to call it in place of Seems to act the same either way.


Right now I can only guess, but there may be two things working together to cause the problem that you are seeing. I’m going to make two assumptions that are necessary for my guess to be correct

  1. The dia autostart is performed with no arguments
  2. Your initial configuration did not set the ‘update_skiplist’ setting of the ‘xbee_device_manager’ to False.

If those assumptions are correct, you’ll find that you have a ‘dia.pyr’ file in your filesystem. With no configuration file specified as an argument to ‘’ This file will be grabbed first. This would then be updated with skiplist items when XBee nodes get configured and they would not be configured on subsequent runs of Dia.

Let me know if my hunch is correct. If not, can you describe the way you are running Dia and the list of files in your Python Management area? The xbee_device_manager snippet of your YML document may be useful as well.

I always specify the yml file (using arguments) when not using ESP to transfer and start the app. And no, I did not have ‘update_skiplist: false’ as an xbee manager setting in my internal YML file.

I put ‘update_skiplist: false’ in my internal YML file and it appears to have solved my problem, so consider this resolved.

But, can you please confirm my understanding that, the PYR file is created only from the internal YML file when no external YML file is specified and ‘update_skiplist’ is true.


That is essentially correct. The YML file specified when the was built actually gets transformed into a PYR file that is the file that gets stored in the ZIP archive. This saves us considerable runtime memory not bringing in the YML code.

Regardless of how the configuration is specified, or the format, if you have update_skiplist set to true, it will write skiplist entries into an external file. If you specified a YML file when starting Dia, it will re-write that file.