@craigweb thank you first!
I don't know if what I'm offering is what you want.
here is "dashboard code":
<ma-point-value id="e76d6d6c-45f1-440c-90f3-c446aa6c87b6" enable-popup="hide" style="position: absolute; left: 399px; top: 75px; width: 25px; height: 25px;" point-xid="DP_c6eebfd0-d128-4ea2-8bf1-77f7cf355edd"></ma-point-value>
<ma-switch id="078c0795-8eba-4cc1-9166-f62c62de3af6" style="position: absolute; left: 394px; top: 220px; width: 50px; height: 50px; background-color: rgb(0, 46, 92);" point-xid="DP_da02f5a8-afc1-4ecb-ba8c-403ffe6345dd"></ma-switch>
here is dataSource-dataPoint(SET_LIGHT):
(also, I use mango-publisher to publish this. In this way I control my light)
(<ma-switch> Connect with this)
{
   "dataPoints":[
      {
         "xid":"DP_da02f5a8-afc1-4ecb-ba8c-403ffe6345dd",
         "name":"Light01_print",
         "enabled":true,
         "loggingType":"ON_CHANGE",
         "intervalLoggingPeriodType":"MINUTES",
         "intervalLoggingType":"INSTANT",
         "purgeType":"YEARS",
         "pointLocator":{
            "dataType":"BINARY",
            "changeType":{
               "type":"NO_CHANGE",
               "startValue":"0"
            },
            "settable":true
         },
         "eventDetectors":[
         ],
         "plotType":"STEP",
         "rollup":"NONE",
         "unit":"",
         "templateXid":"Light",
         "simplifyType":"NONE",
         "chartColour":"",
         "chartRenderer":{
            "type":"TABLE",
            "limit":10
         },
         "dataSourceXid":"DS_afafb004-8328-49e6-8bbb-1e5520c377d8",
         "defaultCacheSize":1,
         "deviceName":"TEST2",
         "discardExtremeValues":false,
         "discardHighLimit":1.7976931348623157E308,
         "discardLowLimit":-1.7976931348623157E308,
         "intervalLoggingPeriod":15,
         "intervalLoggingSampleWindowSize":0,
         "overrideIntervalLoggingSamples":false,
         "preventSetExtremeValues":false,
         "purgeOverride":false,
         "purgePeriod":1,
         "readPermission":"",
         "setExtremeHighLimit":1.7976931348623157E308,
         "setExtremeLowLimit":-1.7976931348623157E308,
         "setPermission":"",
         "tags":{
         },
         "textRenderer":{
            "type":"BINARY",
            "oneColour":"#99ff99",
            "oneLabel":"",
            "zeroColour":"#c0c0ee",
            "zeroLabel":""
         },
         "tolerance":0.0
      }
   ]
}
here is dataSource-dataPoint(GET_LIGHT):
My light send HTTP message to Mango.
{
   "dataPoints":[
      {
         "xid":"DP_c6eebfd0-d128-4ea2-8bf1-77f7cf355edd",
         "name":"light01",
         "enabled":true,
         "loggingType":"ON_CHANGE",
         "intervalLoggingPeriodType":"MINUTES",
         "intervalLoggingType":"INSTANT",
         "purgeType":"YEARS",
         "pointLocator":{
            "dataType":"BINARY",
            "binary0Value":"false",
            "includeTimestamp":false,
            "parameterName":"light01",
            "setPointName":"",
            "settable":false
         },
         "eventDetectors":[
         ],
         "plotType":"STEP",
         "rollup":"NONE",
         "unit":"",
         "templateXid":"ReadLight",
         "simplifyType":"NONE",
         "chartColour":"",
         "chartRenderer":{
            "type":"TABLE",
            "limit":10
         },
         "dataSourceXid":"DS_0638891e-846e-4413-a3d3-c5b5596f688a",
         "defaultCacheSize":1,
         "deviceName":"light_source",
         "discardExtremeValues":false,
         "discardHighLimit":1.7976931348623157E308,
         "discardLowLimit":-1.7976931348623157E308,
         "intervalLoggingPeriod":15,
         "intervalLoggingSampleWindowSize":0,
         "overrideIntervalLoggingSamples":false,
         "preventSetExtremeValues":false,
         "purgeOverride":false,
         "purgePeriod":1,
         "readPermission":"",
         "setExtremeHighLimit":1.7976931348623157E308,
         "setExtremeLowLimit":-1.7976931348623157E308,
         "setPermission":"",
         "tags":{
         },
         "textRenderer":{
            "type":"BINARY",
            "oneColour":"#eeee00",
            "oneLabel":"亮",
            "zeroColour":"#c0c0ee",
            "zeroLabel":"灭"
         },
         "tolerance":0.0
      }
   ]
}
[virtual data source] and [<ma-switch> control and show data] work well
[virtual data publisher] work well
[hard device (light)] work well
[<ma-point-value> receive HTTP msg and show value] work well
The problem is that when someone controls the light from other systems, <ma-point-value> displays normally and the <ma-switch> does not.
(Of course I know because the data is not connected. but how)
(Please let me know what else you need.)