project_id=test-gcp-project
+
+### Mock Device and Spotter
+
+The `pubber` reference provides for both ther `device` and `spotter` bits of functionality (`AHU-1` in this case).
+
+```
+$ bin/pubber sites/udmi_site_model/ $project_id AHU-1 832172
+...
+INFO daq.pubber.Pubber - 2022-08-30T01:46:29Z Discovery scan starting virtual as 2022-08-30T01:46:29Z
+...
+INFO daq.pubber.Pubber - 2022-08-30T01:45:57Z Sent 1 discovery events from virtual for Mon Aug 29 18:45:43 PDT 2022
+...
+```
+
+### Mapping Agent
+
+The mapping `agent` configures the on-prem discovery node (`AHU-1`) to perform periodic discovery runs.
+
+```
+$ validator/bin/mapping agent sites/udmi_site_model/ $project_id AHU-1
+...
+Received new family virtual generation Mon Aug 29 18:47:43 PDT 2022
+...
+```
+
+### Mock Mapping Engine
+
+The mapping `engine` receives discovery and mapping events to perform the mapping function.
+
```
-object Device Spotter Cloud Agent Mapper Sink
-Device->Spotter: (Info)
-Spotter->Mapper: Discovery Event
-Mapper->Sink: Mapping Event
-Mapper->Agent: Mapping Event
-Agent->Cloud: (Cloud Provision)
-Agent->Spotter: Discovery Command
-Spotter->Device: (Device Provision)
-Sink->Device: Pointset Config
-Device->Sink: Pointset Event
+$ validator/bin/mapping engine sites/udmi_site_model/ $project_id
+...
+Received discovery event for generation Mon Aug 29 18:48:43 PDT 2022
+...
```
diff --git a/docs/tools/gcloud.md b/docs/tools/gcloud.md
index e36d87f411..e46db6dcbf 100644
--- a/docs/tools/gcloud.md
+++ b/docs/tools/gcloud.md
@@ -5,7 +5,9 @@ them to work out-of-the-box without a deeper understanding of what's going on!
# Viewing subscription
-`bin/pull_message:gcloud --format=json --project=$project_id pubsub subscriptions pull $subscription --auto-ack`
+`bin/pull_message`
+
+`gcloud --format=json --project=$project_id pubsub subscriptions pull $subscription --auto-ack`
# View cloud function logs
diff --git a/gencode/docs/command_mapping.html b/gencode/docs/command_mapping.html
new file mode 100644
index 0000000000..be0fb77c49
--- /dev/null
+++ b/gencode/docs/command_mapping.html
@@ -0,0 +1,1794 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mapping command for provisioning
+ + + No Additional Properties + + + + + + +RFC 3339 timestamp the configuration was generated
+ + + + + + +"2019-01-17T14:02:29.364Z"
+
Version of the UDMI schema
+ + + + + + + +device guid
+ + + + + + + +A human-readable one-line description of the entry
+ + + + + + +"Point is not writable"
+
An optional extensive entry which can include more detail, e.g. a complete program stack-trace
+ + + + + + + +^system\.base\.start$
+
+
+
+
+
+
+ ^system\.base\.shutdown$
+
+
+
+
+
+
+ ^system\.base\.ready$
+
+
+
+
+
+
+ ^system\.config\.receive$
+
+
+
+
+
+
+ ^system\.config\.parse$
+
+
+
+
+
+
+ ^system\.config\.apply$
+
+
+
+
+
+
+ ^system\.network\.connection$
+
+
+
+
+
+
+ ^system\.network\.disconnect$
+
+
+
+
+
+
+ ^system\.auth\.login$
+
+
+
+
+
+
+ ^system\.auth\.logout$
+
+
+
+
+
+
+ ^system\.auth\.fail$
+
+
+
+
+
+
+ ^pointset\.point\.applied$
+
+
+
+
+
+
+ ^pointset\.point\.updating$
+
+
+
+
+
+
+ ^pointset\.point\.overridden$
+
+
+
+
+
+
+ ^pointset\.point\.failure$
+
+
+
+
+
+
+ ^pointset\.point\.invalid$
+
+
+
+
+
+
+ ^discovery\.family\.scan$
+
+
+
+
+
+
+ ^discovery\.device\.enumerate$
+
+
+
+
+
+
+ ^discovery\.point\.describe$
+
+
+
+
+
+
+ ^mapping\.device\.apply$
+
+
+
+
+
+
+ ^blobset\.blob\.receive$
+
+
+
+
+
+
+ ^blobset\.blob\.fetch$
+
+
+
+
+
+
+ ^blobset\.blob\.apply$
+
+
+
+
+
+
+ ^validation\.device\.receive$
+
+
+
+
+
+
+ ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
+
+
+
+
+
+
+ Timestamp the condition was triggered, or most recently updated
+ + + + + + +"2018-08-26T21:39:28.364Z"
+
The status level
should conform to the numerical Stackdriver LogEntry levels. The DEFAULT
value of 0 is not allowed (lowest value is 100, maximum 800).
Value must be greater or equal to 100
and lesser or equal to 800
and a multiple of 1
600
+
Point translations
+ No Additional Properties + + + + + + +All property whose name matches the following regular expression must respect the following conditions
+ Property name regular expression:
+ Discovery result with implicit enumeration
+ + + No Additional Properties + + + + + + +dotted path to present_value field
+ + + + + + + +Configuration for mapping
+ No Additional Properties + + + + + + +RFC 3339 timestamp the configuration was generated
+ + + + + + +"2019-01-17T14:02:29.364Z"
+
Version of the UDMI schema
+ + + + + + + +Configuration of mapped devices
+ No Additional Properties + + + + + + +All property whose name matches the following regular expression must respect the following conditions
+ Property name regular expression:
+ Configuration for mapping
+ + + No Additional Properties + + + + + + +Device guid
+ + + + + + + +Last time the mapping was successfully applied for this device
+ + + + + + + +Timestamp of requested device model export
+ + + + + + + +A human-readable one-line description of the entry
+ + + + + + +"Point is not writable"
+
An optional extensive entry which can include more detail, e.g. a complete program stack-trace
+ + + + + + + +^system\.base\.start$
+
+
+
+
+
+
+ ^system\.base\.shutdown$
+
+
+
+
+
+
+ ^system\.base\.ready$
+
+
+
+
+
+
+ ^system\.config\.receive$
+
+
+
+
+
+
+ ^system\.config\.parse$
+
+
+
+
+
+
+ ^system\.config\.apply$
+
+
+
+
+
+
+ ^system\.network\.connection$
+
+
+
+
+
+
+ ^system\.network\.disconnect$
+
+
+
+
+
+
+ ^system\.auth\.login$
+
+
+
+
+
+
+ ^system\.auth\.logout$
+
+
+
+
+
+
+ ^system\.auth\.fail$
+
+
+
+
+
+
+ ^pointset\.point\.applied$
+
+
+
+
+
+
+ ^pointset\.point\.updating$
+
+
+
+
+
+
+ ^pointset\.point\.overridden$
+
+
+
+
+
+
+ ^pointset\.point\.failure$
+
+
+
+
+
+
+ ^pointset\.point\.invalid$
+
+
+
+
+
+
+ ^discovery\.family\.scan$
+
+
+
+
+
+
+ ^discovery\.device\.enumerate$
+
+
+
+
+
+
+ ^discovery\.point\.describe$
+
+
+
+
+
+
+ ^mapping\.device\.apply$
+
+
+
+
+
+
+ ^blobset\.blob\.receive$
+
+
+
+
+
+
+ ^blobset\.blob\.fetch$
+
+
+
+
+
+
+ ^blobset\.blob\.apply$
+
+
+
+
+
+
+ ^validation\.device\.receive$
+
+
+
+
+
+
+ ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
+
+
+
+
+
+
+ Timestamp the condition was triggered, or most recently updated
+ + + + + + +"2018-08-26T21:39:28.364Z"
+
The status level
should conform to the numerical Stackdriver LogEntry levels. The DEFAULT
value of 0 is not allowed (lowest value is 100, maximum 800).
Value must be greater or equal to 100
and lesser or equal to 800
and a multiple of 1
600
+
^blobset\.blob\.receive$
+Must match regular expression: ^mapping\.device\.apply$
@@ -1248,7 +1253,7 @@ ^blobset\.blob\.fetch$
+Must match regular expression: ^blobset\.blob\.receive$
@@ -1288,7 +1293,7 @@ ^blobset\.blob\.apply$
+Must match regular expression: ^blobset\.blob\.fetch$
@@ -1328,7 +1333,7 @@ ^validation\.device\.receive$
+Must match regular expression: ^blobset\.blob\.apply$
@@ -1368,7 +1373,7 @@ ^validation\.device\.result$
+Must match regular expression: ^validation\.device\.receive$
@@ -1408,7 +1413,47 @@ ^validation\.summary\.report$
+Must match regular expression: ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
@@ -2501,6 +2546,11 @@ ^blobset\.blob\.receive$
+Must match regular expression: ^mapping\.device\.apply$
@@ -3629,7 +3679,7 @@ ^blobset\.blob\.fetch$
+Must match regular expression: ^blobset\.blob\.receive$
@@ -3683,7 +3733,7 @@ ^blobset\.blob\.apply$
+Must match regular expression: ^blobset\.blob\.fetch$
@@ -3737,7 +3787,7 @@ ^validation\.device\.receive$
+Must match regular expression: ^blobset\.blob\.apply$
@@ -3791,7 +3841,7 @@ ^validation\.device\.result$
+Must match regular expression: ^validation\.device\.receive$
@@ -3845,7 +3895,61 @@ ^validation\.summary\.report$
+Must match regular expression: ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
diff --git a/gencode/docs/event_mapping.html b/gencode/docs/event_mapping.html
new file mode 100644
index 0000000000..3fbb20f56a
--- /dev/null
+++ b/gencode/docs/event_mapping.html
@@ -0,0 +1,1794 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mapping result with implicit enumeration
+ + + No Additional Properties + + + + + + +RFC 3339 timestamp the configuration was generated
+ + + + + + +"2019-01-17T14:02:29.364Z"
+
Version of the UDMI schema
+ + + + + + + +device guid
+ + + + + + + +A human-readable one-line description of the entry
+ + + + + + +"Point is not writable"
+
An optional extensive entry which can include more detail, e.g. a complete program stack-trace
+ + + + + + + +^system\.base\.start$
+
+
+
+
+
+
+ ^system\.base\.shutdown$
+
+
+
+
+
+
+ ^system\.base\.ready$
+
+
+
+
+
+
+ ^system\.config\.receive$
+
+
+
+
+
+
+ ^system\.config\.parse$
+
+
+
+
+
+
+ ^system\.config\.apply$
+
+
+
+
+
+
+ ^system\.network\.connection$
+
+
+
+
+
+
+ ^system\.network\.disconnect$
+
+
+
+
+
+
+ ^system\.auth\.login$
+
+
+
+
+
+
+ ^system\.auth\.logout$
+
+
+
+
+
+
+ ^system\.auth\.fail$
+
+
+
+
+
+
+ ^pointset\.point\.applied$
+
+
+
+
+
+
+ ^pointset\.point\.updating$
+
+
+
+
+
+
+ ^pointset\.point\.overridden$
+
+
+
+
+
+
+ ^pointset\.point\.failure$
+
+
+
+
+
+
+ ^pointset\.point\.invalid$
+
+
+
+
+
+
+ ^discovery\.family\.scan$
+
+
+
+
+
+
+ ^discovery\.device\.enumerate$
+
+
+
+
+
+
+ ^discovery\.point\.describe$
+
+
+
+
+
+
+ ^mapping\.device\.apply$
+
+
+
+
+
+
+ ^blobset\.blob\.receive$
+
+
+
+
+
+
+ ^blobset\.blob\.fetch$
+
+
+
+
+
+
+ ^blobset\.blob\.apply$
+
+
+
+
+
+
+ ^validation\.device\.receive$
+
+
+
+
+
+
+ ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
+
+
+
+
+
+
+ Timestamp the condition was triggered, or most recently updated
+ + + + + + +"2018-08-26T21:39:28.364Z"
+
The status level
should conform to the numerical Stackdriver LogEntry levels. The DEFAULT
value of 0 is not allowed (lowest value is 100, maximum 800).
Value must be greater or equal to 100
and lesser or equal to 800
and a multiple of 1
600
+
Point translations
+ No Additional Properties + + + + + + +All property whose name matches the following regular expression must respect the following conditions
+ Property name regular expression:
+ Discovery result with implicit enumeration
+ + + No Additional Properties + + + + + + +dotted path to present_value field
+ + + + + + + +^blobset\.blob\.receive$
+Must match regular expression: ^mapping\.device\.apply$
@@ -1404,7 +1409,7 @@ ^blobset\.blob\.fetch$
+Must match regular expression: ^blobset\.blob\.receive$
@@ -1451,7 +1456,7 @@ ^blobset\.blob\.apply$
+Must match regular expression: ^blobset\.blob\.fetch$
@@ -1498,7 +1503,7 @@ ^validation\.device\.receive$
+Must match regular expression: ^blobset\.blob\.apply$
@@ -1545,7 +1550,7 @@ ^validation\.device\.result$
+Must match regular expression: ^validation\.device\.receive$
@@ -1592,7 +1597,54 @@ ^validation\.summary\.report$
+Must match regular expression: ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
diff --git a/gencode/docs/event_validation.html b/gencode/docs/event_validation.html
index 1409cf17c3..8ab17f674c 100644
--- a/gencode/docs/event_validation.html
+++ b/gencode/docs/event_validation.html
@@ -444,6 +444,11 @@ ^blobset\.blob\.receive$
+Must match regular expression: ^mapping\.device\.apply$
@@ -1278,7 +1283,7 @@ ^blobset\.blob\.fetch$
+Must match regular expression: ^blobset\.blob\.receive$
@@ -1318,7 +1323,7 @@ ^blobset\.blob\.apply$
+Must match regular expression: ^blobset\.blob\.fetch$
@@ -1358,7 +1363,7 @@ ^validation\.device\.receive$
+Must match regular expression: ^blobset\.blob\.apply$
@@ -1398,7 +1403,7 @@ ^validation\.device\.result$
+Must match regular expression: ^validation\.device\.receive$
@@ -1438,7 +1443,47 @@ ^validation\.summary\.report$
+Must match regular expression: ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
@@ -2059,6 +2104,11 @@ ^blobset\.blob\.receive$
+Must match regular expression: ^mapping\.device\.apply$
@@ -3040,7 +3090,7 @@ ^blobset\.blob\.fetch$
+Must match regular expression: ^blobset\.blob\.receive$
@@ -3087,7 +3137,7 @@ ^blobset\.blob\.apply$
+Must match regular expression: ^blobset\.blob\.fetch$
@@ -3134,7 +3184,7 @@ ^validation\.device\.receive$
+Must match regular expression: ^blobset\.blob\.apply$
@@ -3181,7 +3231,7 @@ ^validation\.device\.result$
+Must match regular expression: ^validation\.device\.receive$
@@ -3228,7 +3278,54 @@ ^validation\.summary\.report$
+Must match regular expression: ^validation\.device\.result$
+
+
+
+
+
+
+ ^validation\.summary\.report$
diff --git a/gencode/docs/index.html b/gencode/docs/index.html
index 8cbbd7edf3..a03b47499a 100644
--- a/gencode/docs/index.html
+++ b/gencode/docs/index.html
@@ -21,6 +21,6 @@