code: def present_value_changed(self, old_value, new_value):
          
          if _debug: LocalScheduleInterpreter._debug("present_value_changed %s %s", old_value, new_value)
  
          # if this hasn't been added to an application, there's nothing to do
          if not self.sched_obj._app:
              if _debug: LocalScheduleInterpreter._debug("    - no application")
              return
  
          # process the list of [device] object property [array index] references
          obj_prop_refs = self.sched_obj.listOfObjectPropertyReferences
          if not obj_prop_refs:
              if _debug: LocalScheduleInterpreter._debug("    - no writes defined")
              return
  
          # primitive values just set the value part
          new_value = new_value.value
  
          # loop through the writes
          for obj_prop_ref in obj_prop_refs:
              if obj_prop_ref.deviceIdentifier:
                  if _debug: LocalScheduleInterpreter._debug("    - no externals")
                  continue
  
              # get the object from the application
              obj = self.sched_obj._app.get_object_id(obj_prop_ref.objectIdentifier)
              if not obj:
                  if _debug: LocalScheduleInterpreter._debug("    - no object")
                  continue
  
              # try to change the value
              try:
                  obj.WriteProperty(
                      obj_prop_ref.propertyIdentifier,
                      new_value,
                      arrayIndex=obj_prop_ref.propertyArrayIndex,
                      priority=self.sched_obj.priorityForWriting,
                      )
                  if _debug: LocalScheduleInterpreter._debug("    - success")
              except Exception as err:
                  if _debug: LocalScheduleInterpreter._debug("    - error: %r", err)
docs: This function is called when the presentValue of the local schedule
          object has changed, both internally by this interpreter, or externally
          by some client using WriteProperty.