code: def _node_data(self, properties=None):
          
          if properties:
              data = copy.copy(properties)
          else:
              data = copy.copy(self._properties)
              # We replace the startup script name by the content of the file
              mapping = {
                  "base_script_file": "startup_script",
                  "startup_config": "startup_config_content",
                  "private_config": "private_config_content",
              }
              for k, v in mapping.items():
                  if k in list(self._properties.keys()):
                      data[v] = self._base_config_file_content(self._properties[k])
                      del data[k]
                      del self._properties[k]  # We send the file only one time
          data["name"] = self._name
          if self._console:
              # console is optional for builtin nodes
              data["console"] = self._console
          if self._console_type:
              data["console_type"] = self._console_type
  
          # None properties are not be send. Because it can mean the emulator doesn't support it
          for key in list(data.keys()):
              if data[key] is None or data[key] is {} or key in self.CONTROLLER_ONLY_PROPERTIES:
                  del data[key]
          return data
docs: Prepare node data to send to the remote controller
  
          :param properties: If properties is None use actual property otherwise use the parameter